I have been working with Smalltalk part time for almost 3 months now. I have read Pharo By Example (some chapters multiple times), Smalltalk-80, Deep into Pharo, Art and Science of Smalltalk, many of the Smalltalk Reports and many Quora and Stack Overflow threads. I have started writing PlateManager in Smalltalk. Here is what I have learned:
Smalltalk pros:
- Simple understandandable object model
- Message passing simplifies code and keeps code readable
- Live programming, debugging very useful
- The IDE nicely organizes classes and methods
- Increased productivity? This would be a big win if true, but I do not have enough experience to support nor refute this claim.
Smalltalk cons:
- No package management. This is a big lose. Prepending classes with 3 letters is a band-aid. Package (namespace) management is a solved problem.
- No build software. Is it even needed? What about obfuscation, signing, enhancing classes to make them persistant capable?
- The image. More downsides than upsides. How do I deploy my application?
- Too much mouse clicking required with the IDE.
- Small user community
- Few libraries, especially in bioinformatics
- GLASS provides a nice integrated package, but you are limited to the provided implementations (Seaside and Gemstone) with no options.
- Few job opportunities. Smalltalk is not mentioned in a single category in the 2018 Stack Overflow developer’s survey.
I would really like to work with Smalltalk, but the downsides seem significant. I will stick with Java/PostgreSQL. Safe if not adventurous.