5 ms·
This is a problem because writing working, maintainable code that solves the given problem rather than an imagined problem should be the trait of a competent de
by cmdkeen 13y ago
This is a problem because writing working, maintainable code that solves the given problem rather than an imagined problem should be the trait of a competent developer.
I had the pleasure of going on a course run by a German developer recently, and his brutal focus on quality and maintainability made me rethink what we class as a good developer.
Brutally in the article Jack is not a rockstar - Jack is incompetent. A great developer solves complex problems in a way that is maintainable - the problem is that most problems aren't that complex. Dianne however didn't do anything that made her "great" - any developer who can't do the kind of engineering practices she did should be fired.
Hacking on something in your spare time is completely different, but as soon as you want to work on something that others will work on as well you need to be into that engineer mindset. It's one of the things that impresses me about Patrick McKenzie's writing, and his experience of learning that the hard way in Japan.
- brador 13y agoMaybe we should be asking why the things we make need to be maintainable. Why can't I just make program module x to input a and output b and never touch it again. I believe modular code is the future and the sooner we get there the better.
- dangerlibrary 13y agoBecause at some point f(a)->b will need to be very slightly different, and it won't make sense to write f(b)->b' for performance reasons.
- blindhippo 13y agoYou can believe all you want, but please develop code with your head in the present. What you said is akin to saying: "sure, the code we wrote is slow, but we can fix this with hardware in a month - Moore's Law!". That doesn't help anyone - it's just wishful thinking. Apply a bit of brain power and make your code simple and straight forward so that your customer doesn't waste time and effort maintaining it (or more likely in the "Rockstar" case, replacing it entirely).
- sanderjd 13y agoHere's how I read your comment: why do we worry so much about making things maintainable - why don't we just make things maintainable? Building a system out of small modules is what makes it maintainable.
- __--__ 13y agoWhat do you do when bugs show up in that module? rewrite it from scratch, introducing god knows how many new bugs? Or only address bugs when a rewrite of the entire module is necessary?
- rodly 13y agoBecause x(a) -> b might need to be understood by everyone working with your module at some point. What if you leave the company and someone inherits your module? What if they decide to change their codebase and need to rewrite your module? Writing modular code doesn't magically give you maintainable code either. It needs documentation, proper use of design patterns, and needs to be readable.