Interpersonal stuff has easily been the worst part of the job, people have some really obnoxious behaviors at my current gig that really gets me. This is probably closely tailed by interacting with poorly documented and crappy third party libraries. I don't mind in-house legacy code that much, comparatively.
It's probably to know which implementation will be the best one. I can have two different ideas about how something can be implemented in mind. I will think about it for a long time trying to figure out which one is the best. I know that if I choose the wrong one and later try to change to the other implementation, that will be a waste of time. That's why it feels like I have to figure out which one is best before I start. Sometimes it might be a better idea to just do something instead of thinking too much though but it's pretty hard to do that.
I might be the outlier but the hardest part for me is the lack of contact with people. I like solving a tough problem or the challenge of grokking a new library/skill but then doing it over and over and over... not so much.
Sometimes I wonder if I'm good enough at the technical side (I have never outright failed at it) that I was never pushed/suggested to look at roles that are more human-facing. I have done -- and greatly enjoy! -- public speaking at user groups and even conferences on technical topics and the number one comment I have gotten both from programmers and non-technical people is how I can communicate concepts that were previously opaque in an easy to approach and understand manner. I definitely like people more than machines, even though I know the machine side well enough to hold my own with the most advanced architects and lead devs.
What would be the ideal role for someone like me? I don't think "software developer" is it.
Everything but the technical stuff. Programming comes easily once I know what software I'm trying to write and everyone has clear expectations about the outcome and timeline. Getting to agreement on that, muddling through agile planning processes, micro-managed ticket boards, story points discussed in endless meetings, endless bikeshedding on side details, ridiculous procedural red-tape, and shifting priorities from clueless management ... it all sucks the joy out of programming and made it hard for me to even open an editor some days.
Spending several hours building some really elegant code that performs exceptionally well, only to find your manager shrugs his shoulders and says meh when you show what it can do.
The next day you spend 10 minutes moving a few buttons around on a simple dialog and you get an 'atta boy' from your manager as if you solved a real problem.
Related: team staying extra hours and working weekends to make a deadline that is “critical”, and then turns out higher ups don’t care, cancel project, didn’t even look at it.
Morale in the team plummeted, and everyone just switched to “paycheque mode” - then manager starts again on “critical deadline” - but this time no credibility and everyone is laughing at them.
- Setting up the environment, dealing with dependency hell, upstream dependencies assuming everyone is using $OS or $ARCH or $FRAMEWORK
- Dealing with documentation that lies to you
- Trying to understand and modify code written by people who didn't give a damn to whoever was going to read it some years later -- and resisting the urge to refactor the problematic bits because it would risk the schedule
I don’t like staring at a screen and sitting still. I’m sure it sounds silly but why can’t programming be more like wood working or some kind of active process.
Legacy code. Language, ecosystem, frameworks, libraries, from 5~10 years ago that people should have moved on from, but due to their lingering popularity we cannot get rid of. It sucks signficant communal/company effort to maintain and friction to develop - so much so that there's not enough energy left to actually migrate to newer and better solutions. The only way out is a multi-year vision of gradual migration, replacing part by part, keeping backward compatibility as much as possible. Fortunately, some smaller projects or green-field ones can be started on a new foundation. But it can be discouraging to see how slow the progress is, and feels like it's dragging down the devs' own career progress too.
Math. More than anything, math limits what jobs I can get. Math and driving a car seem to be the main skills needed for a comfortable life.
Everything else you can mostly do by googling and doing what the glowing rectangle says.
Math and driving require real understanding of nontrivial things with multiple parts that all interact in different ways.
Math is what makes CS hard, because CS is just math, and CS or EE is what seems to really open doors for a lot of people.
I mostly work jobs where programming is only a small part, and I'll even have to do things like hand crimping hundreds of harnesses.
Everyone is saying interpersonal stuff, but I mostly only work with small companies, where things are a bit different, and there isn't that much stress from that.
When there is, it's almost always from various factors that can cause you to be the only one who knows a certain technology, and the effort needed to prevent that and avoid being on call for everything at all times with no help.
It's not like programmers are any harder to deal with than other people, although talking to some of them can feel really isolating, since so many of them are constantly talking about obscure personal tinkering stuff that I can't relate to, and sometimes it's literally the majority of their life outside of work, and it kind of puts up a bit of a barrier between them and those of us who aren't part of that culture.
Most devs seem to have a very different way of thinking, very first principles focused, always going down rabbit holes, always thinking on multiple levels of abstraction, always looking for a chance to explore. It's actually pretty amazing to watch.
Sometimes it can result in some actual conflicts because the other devs will always want to try something simple and hackable, and I'll always just want to slap a proven framework on it and move on to functionally, but other programmers seem to have a "If you didn't learn a new technology, the project wasn't worth doing" mindset.
16 comments
[ 3.2 ms ] story [ 52.7 ms ] threadSometimes I wonder if I'm good enough at the technical side (I have never outright failed at it) that I was never pushed/suggested to look at roles that are more human-facing. I have done -- and greatly enjoy! -- public speaking at user groups and even conferences on technical topics and the number one comment I have gotten both from programmers and non-technical people is how I can communicate concepts that were previously opaque in an easy to approach and understand manner. I definitely like people more than machines, even though I know the machine side well enough to hold my own with the most advanced architects and lead devs.
What would be the ideal role for someone like me? I don't think "software developer" is it.
The next day you spend 10 minutes moving a few buttons around on a simple dialog and you get an 'atta boy' from your manager as if you solved a real problem.
Morale in the team plummeted, and everyone just switched to “paycheque mode” - then manager starts again on “critical deadline” - but this time no credibility and everyone is laughing at them.
Very toxic place I’m glad I’m not there anymore
- Dealing with documentation that lies to you
- Trying to understand and modify code written by people who didn't give a damn to whoever was going to read it some years later -- and resisting the urge to refactor the problematic bits because it would risk the schedule
- server(s) setup (either on prem or cloud)
- keeping the server secure
- auth
- logs
- monitoring
- backups
- HA/scalability
It's even worse if you don't like such topics.
Maybe something with VR?
Everything else you can mostly do by googling and doing what the glowing rectangle says.
Math and driving require real understanding of nontrivial things with multiple parts that all interact in different ways.
Math is what makes CS hard, because CS is just math, and CS or EE is what seems to really open doors for a lot of people.
I mostly work jobs where programming is only a small part, and I'll even have to do things like hand crimping hundreds of harnesses.
Everyone is saying interpersonal stuff, but I mostly only work with small companies, where things are a bit different, and there isn't that much stress from that.
When there is, it's almost always from various factors that can cause you to be the only one who knows a certain technology, and the effort needed to prevent that and avoid being on call for everything at all times with no help.
It's not like programmers are any harder to deal with than other people, although talking to some of them can feel really isolating, since so many of them are constantly talking about obscure personal tinkering stuff that I can't relate to, and sometimes it's literally the majority of their life outside of work, and it kind of puts up a bit of a barrier between them and those of us who aren't part of that culture.
Most devs seem to have a very different way of thinking, very first principles focused, always going down rabbit holes, always thinking on multiple levels of abstraction, always looking for a chance to explore. It's actually pretty amazing to watch.
Sometimes it can result in some actual conflicts because the other devs will always want to try something simple and hackable, and I'll always just want to slap a proven framework on it and move on to functionally, but other programmers seem to have a "If you didn't learn a new technology, the project wasn't worth doing" mindset.