The Hardest Thing in Programming
Tags: webdev, productivity, computerscience, teamwork
Published: 2020-03-11 16:03:59

It's a common saying that the two most difficult tasks in development are naming and cache invalidation.

Inspired by this, I recently tweeted out the following question: https://twitter.com/josepheames/status/1196835125700354048

![image](https://cdn-images-1.medium.com/max/800/0*5aqx9cfCrQ_gNt6U)

I got a crazy amount of response and thought it would be interesting to compile and categorize the responses. So, according to about forty developers, here are the hardest things in programming: (I tried to categorize and compile it intelligently)

First, I'll start with the purely technical items. Some of them are unsurprising. A few probably imply a current problem someone is working on…

* change detection
* dates and time-zones
* folder structure
* off by one errors
* picking and sticking to a front end framework
* regex
* macbook keyboards
* any problem involving linkage of two systems that expect certain things to 
* match up
* data structures
* reading and understanding someone else's code in order to fix it
* for newer programmers, getting things working efficiently
* thread management and synchronization
* setup & config of a new language, library, or environment
* ignoring unit test coverage
* providing estimates
* threading (2 votes)
* logging
* working with legacy databases that lack referential integrity

Next are the architectural and design items. This is what I thought most people would reply with. I personally identify very much with much of this list:

* finding the balance between good architecture and over-engineering
* keeping things simple (2 votes)
* striking the balance between shipping code quickly and shipping quality code.
* composition
* choosing when to build/use abstractions. If you abstract too much you become an architectural astronaut if you abstract too little your codebase becomes 
* unmanageable with copy-paste pasta, lack of consistency and just hard to understand (I REALLY loved how elegantly this was phrased)
* thinking before coding to avoid bad architectures
* avoiding duplicated code but also not over-engineering everything

Then we have the personal items. Things people struggle with internally. Perhaps here are some items you may personally identify with.

* choosing a side in the text editor, naming convention or tabs vs spaces holy wars
* remembering it's time to sleep
* taking the first step into the unknown
* the ever-increasing concept count of all tech
* remembering you don't have to learn everything
* balancing learning with productivity
* deciding what to ignore
* knowing when to stop
* motivation/consistency

Finally, the items that have to do with groups and organizations. Here I compiled all the similar items, and ended up with the most common issue people said they believe is the most difficult task in programming.

* working as a team (6 votes)
* convincing people to design and implement with a11y and mobile-first mentality

Here, I compiled many variations of working as a team, from getting agreement to just a simple reply of "people". How interesting that the most popular answer (although only 6 of about 40 votes) was not really anything to do specifically with programming.

What do you think is the most difficult task in programming (besides the 2 exclusions)? Do you agree with this summary? Are people the most difficult part of your job?

Signup for my newsletter [here](https://thinkster.io/?previewmodal=signup?utm_source=devto&utm_medium=blog&utm_term=hardestthinginprogramming&utm_content=&utm_campaign=blog).

Looking to increase your skills? Check out [Thinkster.io](https://thinkster.io?utm_source=devto&utm_medium=blog&utm_term=hardestthinginprogramming&utm_content=&utm_campaign=blog), we are always adding new content.

Happy Coding!

Visit Us: [thinkster.io](https://thinkster.io?utm_source=devto&utm_medium=blog&utm_term=hardestthinginprogramming&utm_content=&utm_campaign=blog) | Facebook: @gothinkster | Twitter: @GoThinkster