Archive for September, 2009

Just a Means to an End?

September 25, 2009

Joel Spolsky’s latest article inspired this post.

When I was a kid I used to love logic puzzles.  They were so much fun.  They demanded a flash of insight coupled with really sharp thinking.

Discovering programming was like a eureka moment.  It was this amazing mix of design decisions and clever logic.  In my first few years of programming I toyed around with TurtleLogo simulations and I simulated a Bee Swarm in OpenGL (I was really into distributed automata).  I wrote code that would find the square and cube root of numbers to an infinite precision using the old school manual method that nobody even learns anymore.  I studied GADDAG and wrote a super fast Scrabble Solver that just took the board state and your letters as XML input.

At the end of my Freshman year in College I interviewed for an Internship at IBM (which I didn’t get).  The cover page on my resume said:

I’m going to feverishly program, whether someone pays me to do it or not.

I never got into programming because someone told me it might be a good career move.  My main career goal has basically been to trick someone into paying me to write the same fun code I’d otherwise write for free.  The Manifesto of the Futurist Programmer resonated with me when it said

we judge unjust, criminal in fact, the habitual disdain for programs whose construction is different, new, throbbing with life.

I can imagine a different path to programming.  I can imagine a person sitting at their screen wishing their software was more useful and empowering, and then deciding to learn to code so that they can build software to fulfill their needs.  This was DEFINITELY not how I got into programming.

It’s great making a product people use and love, but making things for others is not, fundamentally, why I got into programming.  For the business manager, code is just a Means to an End.  But for me, code is a reward in and of itself.  It seems very chic nowadays to deride design patterns and rewrites.   I want my code to sparkle with brilliance and not just chug by like an old diesel engine…am I the only one?

If a musician creates “poppy” music simply to get more listeners, appease publishers, and make more money, then people will call them a Sell Out.  When we try any hack possible just to garner more “active-users”, are we any better?

When I write code I feel more like an artist then I do an engineer.  More like a craftsman then a construction-worker.  Doesn’t every artist yearn to push their limits and make a product they can be proud of, with no compromises?  Haven’t all truly great and lasting creations been acts of love, and not greed?

Silicon Valley is such a lucrative place, surrounded by investors and people who really are just after the money.  The MBA’s have infested our thinking.  I suspect at some level the argument that design patterns are efficient and productive is just an attempt to legitimize our childlike love of shiny, polished code.  We have to do this, because it’s not acceptable to say “I want to write it to be beautiful and sublime simply because it makes me happy.”  No, there must be good economic sense behind it..

Is greed blinding?  If coding weren’t profitable, what would the culture of remaining programmers look like?  What would their code look like?  I suspect it’d be quite different.  If Artists and Musicians had opportunities to “sell-out” en-masse and all make 6-figure salaries the way Software Engineers can, would they all forget what made them love art/music in the first place and chase the bucks?

Coding no longer feels like a game of intellect.  It becomes a slog, with timetables, deadlines, legacy, and settling.  “High leverage work” doesn’t mean “the work that can most effectively make me happy”, unfortunately.

If you couldn’t get paid to code, would you still do it?  If so, what would you work on and how would your work and your product differ from what you do now?  Is this trade-off worth it?

I still love my job, don’t get me wrong.  I don’t have all the answers.


Best Career For The Times

September 25, 2009

So I was thinking that if we say people have a 20 year prime that is 18-38 then mine is 2000-2020.

I’m spending it as a Software Engineer working on the Internet, and that seems optimal for this era. We have our pick of places to work, we get paid well to exercise our brains, and we get to play a bunch. It’s a good job.

I suspect 2020-TBD will be Nanotech/Biotech.

If my prime was between these other dates, I’d have been:

* 1974-2000, Desktop Software Engineer: Because there was no web, but we did have computers, so, duh.

* 1946-1973, Journalist: I always wanted to be a journalist when I was a kid and I think this would’ve been a good time for it. Newspapers were still going strong, and news was really for the first time being propagated worldwide in virtual real-time. There was also a lot of interesting news to cover between McCarthyism, The Cold War, The Cultural Revolutions of the 60’s, Vietnam, and finally: Nixon.

* 1910-1945, Pilot: Flying seems like fun, but nowadays being a Pilot is probably like being a computer administrator. This would’ve been the time to fly a plane, when it was a prop-engine you and your mechanic buddy built and flew over the local farmland. Crashing was something you could reasonably survive, and not crashing was an act of true skill.

* 1860-1909, Biologist: This was the golden age for biology. Darwin figured out evolution, and Mendel figured out genetics. The world of biology was ripe for innovative thinking and new discoveries once mankind figured out the explanation for life in general.

* 1760-1860, Politician: The time of Ben Franklin and Thomas Paine. When slavery was being disputed, and strong democratic nations were emerging. The French Revolution gave us such things as the metric system, and was easily as interesting as our own.

* 1600 – 1760, Astronomer: Newton had just invented the Telescope, so unless you were extremely good at like reverse-engineering trigonometry (ahem Copernicus) this was your first opportunity to really discover new things about the cosmos. Everything from binary star systems to other galaxies to about a bajillion new stars were discovered during this time period.

* 1350 – 1600, Mathematician: Back before the really brilliant bastards made math impossible to advance. This was the period when logarithms and trigonometry were invented. It would’ve been a fun time to explore the edges of mathematical understanding. Trying to advance math beyond Newton is just too hard.

* 100 – 1350, Inventor of mechanical novelties for my village/town: Well there probably wasn’t much else to do, and the inventor-person was probably revered and fairly indispensable so maybe I’d have gotten a nice house or first pick of slave when we conquered new villages and such.

* 400 BC – 100, Philosopher: Ahh the greeks and romans. Science would’ve been fun too but they were more into Philosophy and I like to be a man of the times. Also there’s huge fame potential for this period. I really don’t think Aristotle/Plato/Socrates deserve the amount of fame they’ve achieved for their silly philosophical crap.

* Hominid – 400BC, Simple tool maker for my tribe/family: Again, not much else to do. I’d have been bored, and so might as well try to make some tools. Depending on how far back we go, I might have been interested in trying to figure out how to make fire or wheeled carriages.