Time is the only truly non-renewable, non-discoverable resource. For any other physical thing, one can imagine a future in which such a thing is renewed, discovered somewhere out there, or produced from something else, but time can only be conserved. It is this focus that has driven me to keep getting better as both a businessperson, manager, and programmer.
A few years ago I realized that I had the technical ability to build whatever I wanted, perhaps not as efficiently or elegantly as more experienced developers, but I could get it done. I got pretty complacent for a while, and I lost the understanding of why I am developing software. It was then that I fell in with a bunch of user experience people after the bubble burst and I had to find a normal job. I was building online classes for the Academy of Art University. I met some of the most amazing graphic and user experience designers I have ever worked with during that time. They exposed me to another function of code, one that has stuck with me and has become part of my technical focus, that code could provide a better interaction through transferring some value to an end user. Namely, a well-designed efficient user interface could reverse the clock as it were for some users. A good UX design could give time back to the user, time spent learning an arbitrary interface with no organic mapping, no feel, time spent being made to feel ignorant, all of that could be given back to the user of the software. Bonus points could be awarded if it were to make something that the user wanted to do more efficient, such as finding a good restaurant, or figuring out who in the organization was the best person at solving their specific problem.
I became a user interface builder, hoping to figure out some of the magic of user experience design, as this is clearly the most important part of any application. I got pretty good at it, and being able to make users smile was definitely what kept pushing me to get better, but once I got married, and had kids, I became one of those users, the ones with no time, the ones who wanted stuff to just work. Some interesting changes began to occur. The first was that I ditched more complicated tools that provided less value for the time invested and started using Apple computers and software, not because I couldn’t understand the PC stuff, but because I didn’t want to waste the time on making it work the way I wanted it to when I could be spending time with my wife and kids instead.
As I rose in various organizations, I found an entirely new level of wasted time, work consisted of aimless meetings that propagated like a bad virus, developers didn’t document or test their code, leaving me to have to read for hours just to figure out what the code path was in some cases. In other words, while the goal of the company was to build products to provide value to their customers, that wasn’t what they were spending the bulk of their collective time on, it was just in organizing itself, or fighting divergent agendas.
It is this last set of issues that has once again given me purpose. I want to give hours back to working people through the code that I write, the teams that I lead, and the businesses that I associate with. I believe that it is through good internal processes, healthy channels of communication, and heavy use of technical efficiencies that I can give time back to the people that I work with. I believe that it is through developing software for regular working people at all levels to remove obstacles and to enable them to accomplish more in less time that we can all spend more time with our families, playing video games, developing new businesses or technologies, or just plain loafing around, whatever makes you you.
Part of that is a focus on making every user interaction as excellent as possible given the technology available, and the rest is to choose to build software that has a direct and measurable impact on organizational efficiency. Some people say that having a family and responsibility slows a developer down, in my case it has sped me up. I have learned how to delegate, how to focus on what is important. Most importantly, I have figured out how to execute. I think that I have learned how to spot time wasters and find / build ( or ask someone with more experience ) solutions to get rid of them. Only time will tell if I have actually got a handle on this, but I think with some good strategic alliances to shore up my blind spots, I have a good shot at building software that can help keep our time expenditures down. Time saved is time saved, no matter how difficult it is, its worth making every effort on this front.