There is absolutely nothing new in here. It is simply me slowly understanding the things people have been saying all along. Maybe sharing this does...
For further actions, you may consider blocking this person and/or reporting abuse
A craftsman is not a craftsman because he builds a prefect guitar.
He is a craftsman because he spends all his life trying to learn how to build the perfect guitar.
You would find the book "Dreaming in Code" by Scott Rosenberg terribly enlightening. He takes all these topics on, and shows some of where software has gone wrong through a very real fated project.
It especially helps one to understand that we've been trying to "fix" programming for decades, but the fact is, none of us understand it. It got out of hand before it even left its nursery at MIT. This isn't a science, and half the time, it feels like a Lewis Carroll story. Programming should work one way, but it doesn't actually follow any "laws" we try to invent to define it. It's an art that we keep trying to treat as a science; sculpting we try to compare to engineering. We don't engineer code.
Sometimes I wonder if the code engineers us.
Thanks for the book recommendation - Looks very interesting!
Excellent point!
IMO, rather than focusing on the "best" solution at the time, I try to write code that will be easy to return to and refactor once we better understand the problem we are trying to solve. The solution I crafted in a two-day crunch might not be the most efficient but whoever returns to it to improve performance will know exactly where the problem might be. I suppose clean code as a reflex is what I mean.
I agree about craftsmanship but there is nevertheless an important part of craftsmanship which does apply to code: to get good at a craft, you have to practice over and over. You have to produce a lot. Make lots of mistakes. Don't worry that quality is low at the beginning. In that sense, code is craftsmanship: but it's the ugly process of craftsmanship, not the polished beautiful result.
Absolutely, this is so important. It's not useful to chase the ideal of perfect code. Code is never perfect. Write code that you intend to throw away: that's the fastest way to learn.
Lots of great truths in your post, thanks for sharing that!
Thanks, totally agree with you :)