My primary job isn't writing software, but from time to time I do still end up writing software. My unofficial approach has been to solve a given set of problems, without adding complexity or new problems.
I wrote one piece of software that automated a process that had previously been 1/2 of a person's full-time job. The software I created was !@#$%^&. Part of the reason my software was so bad was because I was a relative novice programmer. But the biggest reason it was so bad was that the person who did the job had been so non-specific and inconsistent about requirements. While my software blew, I captured and solidified the underlying processes.
About 3-4 years after I finished that piece of software, I heard that a "professional" software programmer was hired to rewrite it from scratch. My first thought was, "OMG, some poor slop is going to have to wade through my !@#$%^& code!!!". But then I realized that I was actually grateful. I knew my code blew and it was going to get replaced with code that hopefully doesn't blow. More importantly, I knew that I had left the next programmer so much more of a foundation than I had when I had started working on the problem.
In the 3-4 years prior to the rewrite, I had been ashamed of what I had done. Since I found out about the rewrite, I've actually been really proud of my contribution. Because my biggest contribution wasn't code, it was the analysis and detailed documentation of the underlying processes.
This is a good reminder of the big picture. I need to spend less time being a craftsman at the task level, and more time being a craftsman at the life level.
>These people did not fight any holy crusade for their principles and, despite their accomplishments, will not be remembered by history (except perhaps to be immortalized by their old buttons and bumper stickers in a hallway in Mountain View).
One genre of history book that fascinated me was what I call the "ordinary biography". Biographies written about people who lived interesting lives, but never really did anything that would put them in a history textbook. I'd really like to see more of these.
The example that comes to mind is a book I once saw about a communist labor organizer in the 30's. Not a particularly famous one, just a guy (or was it a woman?) who went around helping workers form unions. It sounded interesting but I passed, and now I can't remember the title.
Great read. Some parts about the lack of permanence in our work, and how one deals with that, really hit home.
Steve Jobs reflected upon this notion back in 1994, and provided a great analogy. He said that each generation of tech, like sediments of rock, adds a new layer to our history. That's something I've carried with me through project cancelations and shifting in the industry, and has helped bring a lot of perspective to my career.
Of course things go obsolete and eventually new and better stuff comes along. This is the nature of just about everything, not just software. From replacing old cars, to restructuring your apartment. Things change.
The point is that even if you don't write 100% good quality software, it'll still be valuable. As long as it serves its jobs for the time being. Just like an old building, ready to be wrecked, has created a home for hundreds of families. It served its purpose even if a new shiny & eco-friendly building is replacing it.
"In many organizations, people who straddle the line between technical and non-technical quickly find themselves having to take a side. The result is that after too long in the wrong company, you can find yourself being molded into what's useful for the organization and not necessarily for you (or for the world)."
I find this to be true - though I think it may correlate to the size of the organization. Huge places favor crazy specialization.
The foolish expend a great deal of energy and time trying to do everything and end up achieving nothing. On the other end of the spectrum, the truly wise don't seem to do much at all and yet achieve whatever they want. This magic is possible, indeed unavoidable, when one is in tune with the Tao and acts without attachments.
My primary job isn't writing software, but from time to time I do still end up writing software. My unofficial approach has been to solve a given set of problems, without adding complexity or new problems.
I wrote one piece of software that automated a process that had previously been 1/2 of a person's full-time job. The software I created was !@#$%^&. Part of the reason my software was so bad was because I was a relative novice programmer. But the biggest reason it was so bad was that the person who did the job had been so non-specific and inconsistent about requirements. While my software blew, I captured and solidified the underlying processes.
About 3-4 years after I finished that piece of software, I heard that a "professional" software programmer was hired to rewrite it from scratch. My first thought was, "OMG, some poor slop is going to have to wade through my !@#$%^& code!!!". But then I realized that I was actually grateful. I knew my code blew and it was going to get replaced with code that hopefully doesn't blow. More importantly, I knew that I had left the next programmer so much more of a foundation than I had when I had started working on the problem.
In the 3-4 years prior to the rewrite, I had been ashamed of what I had done. Since I found out about the rewrite, I've actually been really proud of my contribution. Because my biggest contribution wasn't code, it was the analysis and detailed documentation of the underlying processes.