3 ms·
This is great advice for leveling up your programming skills. Just as with any form of deliberate practice, working at something with some self-enforced handica
by benjaminjosephw 6y ago
This is great advice for leveling up your programming skills. Just as with any form of deliberate practice, working at something with some self-enforced handicaps or tight constraints can help build a specific set of skills in a focused way.
Thinking about the evolution of programming languages more broadly, it's interesting to note that a lot of earlier languages were hyper focused on one set of concepts (notably objects in SmallTalk, and pure functions in Haskell but it applies to nearly all of them[0]). More recently though, there's been a move towards more of a mix-and-match and cross-paradigm approach. This can mean serious language bloat (any Scala programmers out there?) but, done well, it can also mean extremely helpful new ways to think about pragmatic code like with Rust's use of algebraic data types (enums).
I wonder if the next generation of programming languages will move even further away from arbitrary constraints as it becomes clearer which paradigms work best for which kinds of problems. For that to be the case, we'd have to become more domain focused and get over our obsessions with finding a universal unifying theory of programming.
[0] - http://wiki.c2.com/?EverythingIsa http://wiki.c2.com/?EverythingIsa