HACKER Q&A
📣 duceum

What is the hardest part of programming for you?


What is the hardest part of programming for you?


  👤 perrygeo Accepted Answer ✓
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.

👤 hnfong
- 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


👤 lioeters
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.

👤 mikece
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.


👤 didgetmaster
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.


👤 eternityforest
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.


👤 robalni
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.

👤 superchroma
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.

👤 scombridae
Having to convince other programmers.

👤 sdevonoes
The infrastructure setup. You have an idea, you can program it... but you need all the incidental complexity that goes with it is a headache for me:

- 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.


👤 bilsbie
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.

Maybe something with VR?


👤 ralston3
Programmers

👤 the_only_law
Caring enough about anything.

👤 openfuture
Hands to keyboard

👤 billconan
whiteboard leetcoding