3 ms·
Java, Python, Ruby, Smalltalk, C, C++. That seems like a really small world for someone that calls himself a "craftsman". How about doing a bit of Haskell or SM
by Zababa 5y ago
Java, Python, Ruby, Smalltalk, C, C++. That seems like a really small world for someone that calls himself a "craftsman". How about doing a bit of Haskell or SML to see what a static type system can be?
> I also realized that the flexibility of dynamically typed langauges makes writing code significantly easier. Modules are easier to write, and easier to change. There are no build time issues at all. Life in a dynamically typed world is fundamentally simpler.
Isn't he mixing static and compiled languages here? I'm also not convinced at all that dynamically typed code is easier to change. Easier to write maybe, but I thought his whole thing was that writing is the easy part and after that software rots and you have to change it.
Edit:
> I thought an experiment was in order. So I tried writing some applications in Python, and then Ruby (well known dynamically typed languages). I was not entirely surprised when I found that type issues simply never arose.
I don't think understanding code you just wrote and not having issues in it is a great experiment with a lot of meaning.
- skohan 5y ago> There are no build time issues at all. Life in a dynamically typed world is fundamentally simpler. Yeah this is something I take huge issue with. There's always a tradeoff: less comptime issues means more runtime issues. Comptime issues are predictable and deterministic. Runtime issues may depend on inputs, or external factors like memory constraints, so they're way harder to identify and solve. Static types are like eating your vegetables. You might get more instant gratification from eating cakes, but it's going to come back to bite you later.
- Zababa 5y agoWhat I find really weird is that he's advocating for tests everywhere. Tests are just another build time measure.
- skohan 5y agoYes and more labor-intensive and error prone than just using a type checker
- Zababa 5y agoI have that weird conspiracy theory in my head that the agile/OO/whatever movement emerged from developers that were terrified that development was becoming too simple, and wanted a way to ensure their future. Thus all the things about design patterns, extreme programming, pair programming, TDD, BDD, Clean code, etc. This would also explain why everything from before the 90's has been forgotten (static typing can be good actually!). Another explanation would be the exponential growth of the number of developers though.
- skohan 5y agoIdk my tin-hat theory is a bit different. I agree with some of it - I think TDD, reactive programming and to some extent Rust is about job security, but I think Agile and code review is all about taking code ownership away from developers and commodifying programming.
- Zababa 5y agoI think Rust solves a real problem personally. TDD is honestly a bit too much, but testing is good. Reactive programming I don't know much about. For agile, I always thought of it as a way of putting the responsibility of projects back into the clients hands. Since you're always following what he's telling you each week/two weeks, if he's unsatisfied at the end, it's easy to gently tell him that you only did what he asked for, compared to the more "waterfall" where he could argue that you didn't meet the requirements. Code review I'm not sure, I haven't experienced it much.