📜 ⬆️ ⬇️

Invent the bike often

The translator is not responsible for the discrepancy of the author’s opinion with the reader’s point of view.

“Just use what exists - it’s stupid to reinvent the wheel ...”

Have you ever heard it in one form or another? Of course, heard! Each developer and student often hears something like this. Why? Why reinvent the wheel so shamefully? Because, most often, the existing code is a working code. He has already gone through some kind of quality control, thorough testing, and is currently being successfully used. In addition, the time and effort invested in the invention usually do not pay off in the same way as when using an existing product or code base. Do I need to bother inventing a bicycle? What for? When?
Maybe you saw the publication of patterns in the design or books on software design. These books can still wait in the wings, no matter how great the information contained in them. Just like watching a movie about sailing, it’s not at all something that sails yourself, so using existing code as compared to developing your own software from scratch, testing it, breaking it and fixing it.

Inventing a bicycle is not just an exercise in placing control structures, it is how to gain in-depth knowledge of the inner workings of various existing components. Do you know how memory managers work? Swapping? Can you do it yourself? How about doubly linked lists? Classes of dynamic arrays? ODBC clients? Can you write a graphical interface that works no worse than your favorite popular interface? Can you create your own browser widgets? Do you know when to write multiplex system, and when multi-threaded? How to choose between a file and memory-oriented database? Most developers simply did not implement these basic things themselves, and therefore do not have in-depth knowledge of how they work. As a result, all this is seen as mysterious black boxes that just work. Understanding only that on the surface is not enough to reveal the dangers hidden in the depths. Ignorance of deep things in the design will limit your ability to create truly brilliant work.

To invent a bike with square wheels is more valuable than immediately getting it perfect. There are lessons learned from trial and error, with an emotional component in them that are simply impossible to get by reading a technical book!

Memorized facts and book wisdom are very important, but becoming a great programmer requires more experience than the simple gathering of facts. Inventing a bike is just as important for a developer’s education as weightlifting for a bodybuilder.

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

All Articles