As a software developer it is my responsibility to maintain connections between my work and the real world. I cannot afford to code features that no one will use, to write documents that no one will read, to use tools that do not add value. I love getting lost in the code for weeks as much as anyone, churning out feature after feature while experimenting with the latest productivity tools. But ultimately if these efforts do not create value for my customers they are best suited for a hobby.
It is no longer good enough to exist as a software developer following a given software process. I must constantly step away from my laptop to run my code on other people’s machines; working code on my machine means absolutely nothing. I must question *everything*; my intuition regarding look and feel of a graphical user interface is meaningless. I must keep looking after the first solution to a problem presents itself; the second solution or the third may provide more value to my project. I must never do anything for only one reason; my time is too valuable to waste killing one bird with one stone. I must assume nothing; talking to my users face to face on a regular basis is the only way to understand their ever changing realities.
If I sit at my laptop and code away day after day I may be having fun but I am not doing my job.