(I hope Belle and Sebastian will forgive me for using one of their wonderful titles for a less interesting piece of mine!)
A month ago, I turned 30. And since everybody told me that it would trigger in me a phase of reflection back on my life, and more importantly where I would go from here on, well it did (surprising feat of mass hysteria and self fulfilling prediction isn’t it?)
Professionally, I’ve been paid for writing code for 12 years. When you think that’s more than a third of my young life, it’s mind boggling. A few days ago, I was talking with a good friend of mine, also in the trade, and we felt… Old.
Think about it: When I went to my first WWDC (last… century?), being a developer was being an outcast, in a way. Forget the old myth of social inaptitude… The fact that 3000 of us gathered to eat, talk, joke, sing and code means that we are just as social as anybody else. But instead of having excellent social skills with people immediately around us, we had social skills with relating to somebody who’s halfway across the world, working with something that has no social skill whatsoever: the computer. Blind to local problems, mostly, but very hot on stuff that is virtual (that you can’t touch).
Funnily enough, now everybody is a geek. My brother keeps in touch with people he hasn’t seen in years through chat services or social networks. He used to chastise me when I spent some nights on IRC or participating in forums on the interpretations of the Snark poem, by Lewis Carroll. These days, he spends half his leisure time on the ‘net.
In a way, my whole early adult life has been validated in the past couple of years. The comments I got went from “oh, so you spend all your time on a computer, huh? Must be tough to meet girls” to “oh, you are a developer? What cool projects did you work on?”
Most of my “online friends” from the late 90s I’ve kept in touch with, albeit yearly instead of weekly, and most of them are now successful people in their own right, thus contradicting our parents and “real life” friends’ predictions.
But, as the trade got a wider attention, and a wider acceptance, some kind of pollution crept in with it. I remember when my friends got admitted to some computer software school. They were entering a world where 90% of the people they were going to interact with were as geeky, obsessional, curious, or plain weird as they themselves felt.
When I got around to teaching in such a school, I realized it is now a job like any other job: some are in for passion, some are in through need, some are in for the money. About 15% of my students were like I remembered my friends to be at the time they started school.
Small pause: I am not being bitter or conservative or elitist in any way. I just observe the fact that every trade that starts as a hobbyist thing and starts generating business is heading more or less in the same direction: you’ve got to be able to make a living off it. Therefore, profit starts being important. And in the name of profit, compromises have to be made, and that of course includes sacrificing part of the geeky pleasure someone derives from just rising up to a challenge no one else has yet.
In my professional landscape, lines have shifted too. The customer base isn’t just the professionals and the gamers anymore. They are people like my parents, or my friends. The expectations of such a crowd are vastly different from the previous one. And it’s a good thing, mostly. People care about the looks of things, about ergonomy, about tiny details that 10 years ago “real” developers would have scorned at and dismissed like their first pair of socks. Aspiring to better things is good. So in my mind, the level of the demands from the users has rocketed, and it’s thrilling, even though it requires a lot of work. I am no graphic artist by a long shot, but I still need to be careful about the looks of things. New challenge! Yeaaaaah!
However, since the market is a lot bigger, people with appetite for money rather than craft have also taken a big slice of the cake. And that makes me a little bitter.
From personal experience, and from what other people in my position tell me, less than 30% of the people involved in computer projects out there are actually positively contributing to said projects. That includes the manager who takes swift decisions about features and “protects” the craftsmen from the end user/customer, the artist who does the graphics, the beta testers/support people who report bugs in a way the developer can fix it and who interface with users who don’t speak l33t, and the code monkeys.
Let me take a quick example. A few months ago, I was approached to build a piece of software. After a quick phone conversation, followed by a meeting, we started swapping ideas, and talking budget and planning. Then something happened and another company was hired for the job. A 300+ developer strong company, versus me. To what I say “alright, fine, maybe this is a project too big to give to a one man company, no hard feelings”. About a couple of months later, I get a call from the company that was hired in my place. They had just finished the specs and the budget and the planning, and the rest and were looking into hiring me to make the program itself. So, for reasons I don’t think I will ever grasp, the situation was that the same program, with the same features, and probably the same deadline, was to be built at 50 times the cost, and with more people diluting the engineering process.
What happened? Why would any sane person think that this is a much better solution than the original one?
I’ve heard people say it’s the price of insurance: if a big company is paid for the job, they will have the resources to pull it off, even if the lead developer dies suddenly or decides to quit. Fair enough. But does that justify the 50 fold increase?
Let’s say I ask for 10k for the job. Half up front, half on delivery. Now let’s say I disappear halfway, leaving a couple of unfinished betas, but no source code. What do they have?
- a hole of 5k in the bank
- a bad experience
- a lot of design choices and a much better spec that they started with
- something that exists and can be duplicated or improved upon
With a bigger company in front of them, who will outsource to small developers anyway, what they don’t get is a direct access to the developer (usually), a somewhat lax business policy in terms of decision reversal and prices, and the human relationship. Is it really worth all that money? Especially since the risk of going over budget or over deadline is higher with a bigger group of people to handle.
It took me a year to recover financially and “cred wise” from my US attempt. Now that I’ve reinvested time and energy into making a living off my craft, I can see some of the reasons why things work like that. But I can’t really say I find these reasons any good. The number of direct-to-customer links is kind of dwindling, and talking with the middleman, who doesn’t have the same set of priorities as either the customer or myself, is tricky, to say the least.
I thought the advent of iOS apps (small and easy to publish) would change that a little bit, but it doesn’t seem to have that kind of effect. Indies somedays feel like a dying breed. We still are indies in financial terms and in name, but we are not independent anymore. And when we are, it’s tough to make a living off it. It’s a job like any other job.
Question is, now that I’ve done that for more than a decade, what do I really want to do with my skillset?
I can carry on, ranting as I go about the vagaries of my line of work; I can endorse the changes made and become part of the system, at any level; or I can shed it off and move on to a different field, where what I learned may be useful… or not.
I think I need a well deserved vacation ;)