3 ms·
It kind of reminds me of my philosophy regarding programming - that it can never be boring. If it's boring, then something is done wrong. You can always automat
by asgard1024 11y ago
It kind of reminds me of my philosophy regarding programming - that it can never be boring. If it's boring, then something is done wrong. You can always automate the boring parts, and thinking about automation is less boring.
- steego 11y agoI love playing with and working on projects that transform code into different code and I love that you're drawn to meta-programming, but I have a few issues with a few of the ideas: > If it's boring, then something is done wrong. I have a problem with the tone of this statement, because I've seen it taken to an extreme and it can be a dangerous idea. A better way of looking at it is: If something is boring, take it as a sign there might be an opportunity to improve the process, but you have to be acutely aware the problems that automation can introduce. There's a phenomenon I like to call premature automation. When you work on a problem the boring way long enough, your brain learns the patterns. Premature automation happens when you skip learning about or experiencing the process and you shoot straight to automation. Often what happens is the automation fails to anticipate important edge cases. > You can always automate the boring parts, and thinking about automation is less boring. Thinking about automation is less boring because it's not trivial. Automation can be trivial if you're doing simple things like code generation, but often these simple things come at a cost. For example, code generation typically becomes more complex as the need for customizations and exceptions popup. Libraries can automate things at runtime, but writing good libraries based on timeless/minimally leaky ideas takes time. Leaky libraries built on a poor foundation tends to introduce bugs or complexity. There is value in boring, predictable code with minimal dependencies. It's easier to audit and review with static analysis tools, it's harder to introduce cascading bugs and it. TLDR: I'm all for automation, but saying "If it's boring, something is done wrong" and "you can always automate the boring parts" sounds like a cocktail of developer shaming for not doing something that's "simple".
- asgard1024 11y agoI think I agree that "boring" shouldn't be used as an excuse to avoid work required to understand the problem. Only when you understand you can determine how it can be automated. I don't think that I agree with the idea that predictable code has to be boring. And vice versa - needless complexity may be boring too. Anyway, I didn't mean it in derogatory way, just like the original article. What I am saying is that there is probably some smart idea, how to automate things, and you just need to look for it. Where automate really means make computer do it. In other professions, it's more complicated. Say building a house may be considered boring, once it is designed, but it's hard to automate - some humans still have to do the actual bricklaying and plumbing and so on. Programming is unique profession in this respect (at least until we have very flexible robots).
- Terr_ 11y ago> If it's boring, then something is done wrong. Note that the inverse is not true: If it's exciting, you could still be doing something wrong. (Watch any junior hire with day-one ideas to "improve" the codebase.)