The most difficult thing is often the inadequacy of the technology and how to get what you want despite all the nonsense in it. Of course, it's not nearly as bad today as it was decades ago, but certain things are still chronically complicated such as:

  1. New technologies arise out of necessity, but the appropriate tools for the new technologies are often missing.
  2. New technologies are also often simpler than established technologies. With corresponding advantages such as easier usability and disadvantages such as certain things are not yet possible.
  3. It is often difficult to present the problem adequately. Or, to put it another way, the user's thought model, as he understands it, is correspondingly mapped onto the computer.
  4. Small/different sized screens make it difficult for designers to find a good design that works optimally everywhere and is programmable in the foreseeable future.
  5. 3D game programmers struggle insanely with how to get stuff rendered in a way that is computable by the graphics card. In other words: How do I simulate light reflections on water with triangles and frustum matrices?
  6. Front-end developers in the web environment often find it difficult to program the software so that the animations run smoothly, even on low-performance devices. Another problem is the permanent request for data from the server. Network latencies play a significant role here.
  7. Middleware programmers often find it difficult to design the software so that the data can be delivered exactly as it is needed. And that in an extremely short time.
  8. Database programmers struggle with storing the data so that a query can be queried by the middleware extremely quickly without consuming a lot of memory. In addition, the data must remain consistent and not be lost.
  9. User errors can occur both in the front-end (entered the wrong password, clicked somewhere you shouldn't be looking, etc.) and in the middleware (forgot auth token, wrong HTTP headers, etc.)

A good developer knows the strengths, weaknesses, and limitations of their technologies. They also often know a few tricks for getting what you want and can develop new tricks themselves. In addition, they understand the basics of computer technology in general, so tricks are often not necessary.

More content at PlainEnglish.io. Sign up for our free weekly newsletter. Follow us on Twitter and LinkedIn. Join our community Discord.