📜 ⬆️ ⬇️

Common sense is more important than algorithmic mastery.

I propose to the readers of Habrakhabr the translation of a small note “Organizational Skills Beat Algorithmic Wizardry” by James Hague. The note seemed interesting and I wanted to share with the audience.

Many times I read about technical interviews with major companies and was very glad that I was not looking for a job as a programmer. Ability to write original heap or tree implementations. Puzzles with various restrictions. Tasks that will take about ten billion years to calculate if you can’t properly analyze and rephrase requirements. My first reaction is how do they manage to hire anyone at all?

In fact, most of the work of a programmer does not require such algorithmic skill.

When you write code, the most important skill for you is how to keep all this clutter of functions from destruction under the weight of its own complexity. I worked on large telecommunication systems, console games, blogs, several personal utilities. Very, very rarely, I had to work with cunning data structures or algorithms. Often it is required to monitor states, sort structures, carefully understand how different parts of the system interact with each other. Writing code is only part of the task. After it, refactoring, simplification, elimination of redundant manipulations take place.
')
It is for this reason that many become programmers "accidentally." It is unlikely that you often meet people who have become neurosurgeons between times, simply doing this in their free time. This requires very intensive and specific training. But learning to write code is easy and many people do it. When I started programming on an 8-bit home computer, I didn’t even know what an algorithm was. I had no idea how to sort the data and I did not need it for those simple toys that I wrote at that time. It was enough for me to know about counters, timers and state management. To do this, do not need a "genius", enough common sense.

A few years ago, I wrote a utility that converts images into rectangular textures. The program is small - about 1500 lines of code on Erlang and C. A very small code fragment with a length of about 20 lines deals with the packaging of images into a rectangle. It was not difficult to write it, but I would hardly have coped with it at the interview. The rest of the code is engaged in reading files, displaying results, processing image parameters and transferring data between different parts of the application. It is this code that I most often modify when I need to add something new, improve error handling or improve usability.

And this is exactly what most software development looks like.

Source: https://habr.com/ru/post/263427/


All Articles