Beeing on the linux gentoo beta (~amd64) for my desktop machines is often seen by people as a pure "loss of productivity" as a software developer.
Yes it brakes sometimes... But for me those breakages (most of the time) worth it, it keeps me aware of the inner workings of my system.
When would I look for how the bluetooth system is related to udev if my BT mouse did not work this morning after the udev upgrade ?
This kind of system knowledge gives you as a software engineer some depth, it makes you see a larger picture than just the logic of your code. It makes you a better developer.
Once I helped a medior developer to solve a performance issue in his Java code he could not solve :
The classic trap of the database round tripping. Retreiving a list of ids then going to the database for each one of them. His answer when I finger pointed it was : "but Java is optimizing that !!".
The guy had no clue about system, networking, database drivers, database optimization engine, disk accesses.. For him he is just working on a "magical" system that applies his logic the most efficient way.
As a general attitude, I really recommend to my fellow engineers : break your systems ! hack your kernel, tinker with compilation options, try out new stuff like wayland or any other experimental systems... Push back the limits, learn what your code is calling, then what this code is calling then again and again until you find yourself reading about how a CPU uses his caches lines and optimize branch predictions...
At the end of the day it will make you a better software engineer, perhaps you will loose some immediate productivity but at the end of the day you will produce better code and be able to solve problems that are way more complex than simple logic flaws in your code path.
No comments:
Post a Comment