Hard Truths about Programming
Hard? I never finished a paid project in Grad school because of a compiler error (PL&#x2F;I &#x27;copy like&#x27; bug).<p>On my first job they gave me a paper tape containing the binary to control a robot... no source available... and I had to fix a bug that caused the robot to do something wierd (atan 0&#x2F;0) on a computer with no &quot;developer software&quot; (aka no compiler, libraries, etc. ... just a raw machine with a front panel of switches).<p>On my second job I spent a couple days trying to figure out how a tape drive delivered duplicate records (worn tapes caused hardware &#x27;reread&#x27;).<p>On my third job I spent a week tracking down a memory error in a mainframe memory that caused many crashes on a computer used by over 70 programmers (every crash resulted in hex listing of 4 megabytes of memory (2 ft stack of paper) delivered to me).<p>On a later job I had to hand-recover a hard drive that contained all of our software when the &quot;extended second drive&quot; died, causing the machine to fail to boot (had to write code to read the raw drive by controlling the electronics).<p>I was nearly fired because a C compiler contained a bug that took me a week to find (bad code generation). The boss thought I was unable to program and had no idea what a compiler was, only that my project was late.<p>One boss was newly promoted. She forced me to end a several-year research project, threatening to fire me if I didn&#x27;t. She was fired for the threat but I still lost the project.<p>One boss decided to fire me so he lied on my performance report. He falsely quoted comments from other managers. Even when the other managers called HR and gave me glowing reports HR refused to change the result. Prior to that all of my reports were highly rated.<p>At one job the whole project (fixed cost, 5 programmers for 5 months) ran long (10 programmers 18 months) and they fired all the programmers.<p>One of my open source projects forked twice in one week over a dispute about goals, with the side-effect of destroying the community.<p>One of my jobs was to take over code from a programmer that died. He used the GCC -MM option to automatically generates C++ makefiles for code which generated C++ and then generated makefiles from that code. Not a line of comments anywhere.<p>That C++ code generated classes DURING THE CALL SETUP of a procedure (who knew you could do that?) so classes that occur nowhere in the software &quot;appear&quot; magically at runtime. Again, no comments anywhere.<p>I spent a day applying the brand-new &quot;Design Patterns&quot; to our software on my whiteboard. The chief designer saw it, got angry, and I got fired.<p>I was hired to move teaching software (400 Flash Videos) from laptops to the new iPad... and then Jobs announced that the iPad would never run flash. Goodbye job.<p>I maintain open source software that has run on Unix-based systems since the early 80s... and then stopped working because GCC switched to a &quot;new C standard&quot; that changed the meaning of &quot;inline&quot;, breaking the build everywhere.<p>I was hired to write &quot;pinch zoom&quot; for a touch display and camera setup. The camera driver only worked on Linux, the touch display driver only worked on Windows.  Neither manufacturer would port their driver, nor release their driver source code.<p>My AI project required recognizing lugnuts... did you ever try to find &quot;big data&quot; for lugnut images? Or try to create a &quot;big data&quot; dataset?<p>I taught Data Structures at a University. At a Google &quot;job interview&quot; I failed to remember the complexity of an algorithm... and never got the job offer.<p>I have many more &quot;war stories&quot; but they all have one thing in common. Programming isn&#x27;t hard, in fact it is often the only joy on the job. But being a programmer is really hard for a lot of reasons you won&#x27;t find in boot camp.<p>I love programming. I turned down 8 job offers to become a manager (or, as I say, &quot;retire into management&quot;). I love programming. I do it every day. And every day is another day of frustration except for the final hour when it all seems to finally be working... and then back to programming and frustration, bugs, hardware crashes, lost data, impossible tasks, really late nights, and clueless bosses.<p>But I have done it for 46 years and never once had any regrets about programming.
Programming is the easy part.