When I’m done coding all day I want to do other things like exercise, climb mountains, learn instruments, etc. My motivation to do other things isn’t due to a lack of curiosity, but curiosity channeled into other activities.
> Programming is beginning again to be to the exclusion of all else in my life. (The table saw sits slowly rusting. The bike hangs on the wall in the garage.)
This in particular hits home. Programming, to the exclusion of all else in life.
> What am I trying to say? I have a programming addiction? (Maybe.)
There are times that I feel pulled in every direction by life, family, work, being alive, and it keeps me from this software ambrosia, even though I know that spending my life in front of a CRT/LCD/TFT/whatever they are these days is in a way wasted. I've spent 23 years doing it and I'm 33 now, and it feels like life has flown by in the glow of a terminal prompt.
Putting things in neat little boxes, solving little puzzles... it's kind of hard to describe, but at least personally there are other things that give me the same sense of satisfaction.
The happiest I’ve been is in the past few months, in a new role. There are several reasons, but one of them is definitely that i have ann excuse to get back to code.
I find myself waking up early, and having work to finish, on a Saturday - that I enjoy. It’s feeding my ability to work on other personal projects, that make me happier and I learn new things.
> To be consumed by (personal) work, working late into the night only to wake up and continue, uninterrupted and enjoying the bliss of focus, well, it can't be beaten.
Engineering is a wonderful tool but also a form of art. It’s ok to indulge your passion with some balance to the rest of life without calling it addiction.
I pose that such people shouldn’t be devs or managers, but “manager” is a role that tends to be forgiving of under-qualification… because ultimately the good devs don’t need to be “managed.”
It’s important to respect that other people are bringing different things to the table. Everyone’s got different strengths and weaknesses.
It is also important to respect that there are a lot of people that may bring something to the table, but not necessarily a whole lot. Sure, they'll have strengths and weaknesses and they are whole human beings with lives and people that love them, but this doesn't mean they are good at their job. And it also doesn't mean that they're good in a management or dev setting.
What role is that?
Get the high-performing devs their good ratings and promotions. Get the low-performing devs moving better or off the team. Bring in more good devs.
- manager tells engineer to do something but doesn’t fully understand the context
- the engineer doesn’t fully understand it either but thinks they do, jumps to the conclusion that what’s needed is something complex, and thinks “no problem I’m 1337 and I got this”
- engineer spends the next three months crafting the Mona Lisa of code
- feature gets shipped and users… just don’t care about it since it didn’t actually solve their issues
- three months wasted from the perspective of the business, opportunities missed
- next time the engineer wants to do something technically great, the higher ups smack the plan down and tell them to get in line
- engineer quits in frustration
- company weakens
Scenario 2: better manager
- manager aligns with leadership to understand the end goals
- then works with product and engineers to figure out the best way to achieve that goal. Turns out some of it is minor product changes but most of it maybe is just clearer messaging, education, etc
- then ensures the engineers tasked to implement it are fully aligned on what they’re building and know who to go to for reference, so that there is no ambiguity from what the higher ups want vs what the engineers think they’re supposed to do
- this simpler idea is implemented in a week and released
- users love it
- the team gets more resources from higher up because of a track record of doing useful things
- engineer feels greatly productive and vital to the team
- this is 10x better than scenario 1 outcome and it’s mostly thanks to a good manager doing their job
Where I get my fun is that I live to increase my understanding of something. This code should be doing "this", but it's doing "that" instead. Is there something I'm missing in my basic understanding of this particular topic? When I follow it through and get that "Ahh, I get it!" moment, it's like a drug for me. All is suddenly right with the world again. It's why I gravitate to lower level languages and languages that give me more control.
The rest is building scaffolding and applying standard recipes and carefully laying things out as I go. I still enjoy it, but I don't get the happiness that I get from getting one of those "aha!" moments. Or being told my stupid Word macro saved someone hours of work in some random meeting somewhere, I guess.
Anyway in IT there are loads of different jobs other than programming. There's QA, application support, databases, project management, team leads, all sorts and it's pretty easy to switch tracks once you're on the inside.