Why be a software developer?
I've been a professional software developer for around a decade now, and I've worked with roughly a dozen code bases, ranging from the tens of thousands to the millions lines of code. And, while line count is no perfect measurement of scale, it does at least get us close. Recently, a friend of mine asked me, why are you a software developer? I would typically say something like, because its fun! But, it really isn't fun. I was stumped.
I do recall at one point in time, I was genuinely excited to be learning about different technologies, best practices, and how to level up my software game. These days, I don't do much of that. I really do know quite a lot, and learning more just isn't pushing my career forward. I've had some rather unpleasant events recently, and my focus has really shifted. I'm working on reflective listening, building relationships, keeping myself healthy and spending time with my daughter, while of course, still programming a bit.
I also haven't been on too many projects that lasted longer than a year, and I haven't had a "greenfield application" in quite some time. It seems everywhere I look there are half finished code bases, for one reason or another. The projects that aren't thrown away, are riddled with typos, over abstracted nonsensical code and useless code galore. Perhaps, useless code isn't a fair criticism, it's really more so, "I'm pretty sure this subroutine does nothing... But uhh... let's not touch it, because I'm not sure what will happen if I get rid of it".
I think the real reason for these harsh quality issues are pretty straight forward and non-controversial, people are simply. in a hurry. There are deadlines, pressure to finish, and considering so many projects I see get scrapped, it's no wonder developers are making careless mistakes. I'm certainly no exception.
But that begs the question even more, why be a software developer? If every project is such a mess, why do it? Some might say, well, if you aren't happy, change your job. But, I can assure you, I've done that, I've worked with so many projects... and the really all are just as a big a mess as the next. The idea that there is a wonderful "magical fairy project that is gonna be the greatest thing ever" right around the corner doesn't do it for me anymore.
Here's what keeps me going. This is my rule, this guides my every action, every pull request and reflects my values.
Make every file you touch a little bit better. With every feature you implement, and every bug you fix, always do one of the following things.
I do this by:
- Removing code that has no purpose.
- De-abstracting the worst abstractions.
- Fixing a spelling error.
- Formatting the file to be visually consistent.
It isn't fun and exciting work, and it certainly isn't the kind of work you can brag about. But, for me knowing that I am make the project I work in, a little bit better each and every day. And seeing how that adds up over time, that's why I am a software developer.
I'm thinking about writing some more about the dangers of dead code, over-abstraction, typos and poor formatting. But, I'm not sure that is something that would interest you. If it is, please let me know in the comment section.
That's all, Stay safe out there folks.
On the one hand I agree with the negativity somewhat. One has to get used to writing worse code than one would like.
Or be genuinely unable to distinguish good from bad code (but nobody thinks they're that guy/gal).
To help with accepting ugly code, it's good to keep in mind that no two people agree what's perfect, and in particular nobody thinks anybody else's code is perfect. Sometimes it later turns out others were right after all (usually not, but keep that option open).
On the other hand, one has to fight back a bit to make the code better than would be convenient. Take a bit more time than ugly code would take. Request budget for the most important re-factoring. Add an auto-formatter to the build chain.
In the long term it helps the company to have maintainable code. If management can't see that, then perhaps it's on us. We're the experts, after all.
Interesting Observations. I second the feeling of,
magical fairy project that is gonna be the greatest thing ever
Glad that, you called out about "Improving things to make it better". This is really not a overnight thing.. also I have seen, you can not do it without annoying people around you. So great job!
Yeah, I would be surely interested to know more on the "problem solving" in those areas. In fact, something pissed off recently was "usage of linters" in one of the projects and I am sure, you understand that feeling 😡😡😡.
Having said all the above, Being a Software Developer is a Superb Feeling! Once a Developer, Always a Developer(at heart, at least) 😄😄!
I've tried a few approaches, and the "you're wrong, do better, direct feedback" works okay. But it's really slow, and starts arguments.
I've also tried doing nothing, which is the worst option.
The best one I've found is say nothing, do the work. Make a pull request, if they ask why the request is "big" or "too much". You've got to give exact reasons. For example, a recent PR had that criticism, my response was.
Well, I think we can all agree code quality is important. Then I listed exact reasons until the guy gave up 😆. Dunno man, it's tough.