An aspect that is often overlooked (it was by me) when considering taking a job in a shop as the sole programmer is that, by definition, you will have no peers. "Cool!," you think. "Now I can make all the decisions! If there is some new framework that seems promising, I can just decide to use it. If there's a new language I want to learn, no problem. If there is a different technological direction I want to go, I don't need to stop and have endless meetings trying to achieve consensus."
"It's good to be the king!"This will be especially enticing if you are coming out of either a large software dev shop where every change must be argued to death through layers of team leads, architects and their functionaries, or (shudder) Marketing. Or if you're leaving the world of consulting, where in many gigs all the technological decisions are made for you and your job is to simply implement. The new opportunity will seem like finally getting that opportunity to put your stamp on everything and make it yours.
And it is.
We may come back to why that can be good and bad in another post. But today, the real issue I want to discuss is this: You know all those other programmers you left behind? They served another function other than popping into your office to break your flow so they can rattle on pointlessly about the latest episode of Dr. Who or Mythbusters. And that purpose, believe it or not, is simply being a peer.
When you are by yourself as a programmer, you have no "tails to chase." And no, I don't mean that kind of tail, get your mind out of the gutter! You shouldn't shit where you eat anyway. What I mean is that there's no alpha dog to follow. There's no one to look up to, who makes you want to grow professionally, who challenges you to think outside the problem and the current system. Conversely, there's no one to mentor, either. And there's simply no one to bounce ideas off of. No one to give you a sanity check. To smack you upside the head and tell you that idea is stupid. Or to get enthusiastic with you about it.
You. Are. All. Alone.
You may think others on the IT staff can substitute, but they can't. Sure, they're nice people, and you can share some discussions with them about cool new tech stuff. But IT folks, in general, have a very different mindset than programmers. In fact, most of them eschew programming in any form, like scripting, even when it can help them. [At the risk of starting a controversy, I've said for a while now that the reason there is a dearth of scripting experience in IT shops is because scripting is programming, and if IT guys wanted to program, they'd be programmers already.] An IT expert can be your savior at 3:00 in the morning. They can be a great resource for sounding out whether an idea can work in a given environment. But they are not programmers, and they don't think like programmers.
So being the only developer in a non-dev shop can be lonely in a professional sense. Very lonely. And programmers, for all that the public may think we're misanthropic loners, actually aren't. We're very social people. We like to get together and discuss stuff. We're passionate about programming and related tech, and like to be around others who are fervent about it, too.
I've ended up using various avenues to try and substitute that loss of daily "tech talk." I started a .NET user's group here in mid-Missouri, which is now in its fourth year and has over 100 members (which, given the location, is astounding). I've met a lot of great people that way and have enjoyed all our interactions. And of course there's online social networking. This blog (coming on five years in this format, but as a private mailing list it is well over a decade old now). LinkedIn (slowly approaching 500). Twitter. Google+. And all of that is great. Truly.
But none of it substitutes for the immediacy of being able to walk down the hall and break your friend's flow mode so that you can argue again over the 1TBS yet again. Or talk about the latest dev direction (distraction) from Microsoft. Or see if he agrees Java is going down the shitter and Oracle is the one holding down the handle to make sure it flushes all the way. Or how in hell are we going to satisfy that latest request and not break the rest of the system?
So in the end, being a single developer can have many rewards, but it comes at a price. If you are ever offered such a position, consider these posts before just saying, "Hell, yeah!" You won't be able to say you weren't warned.

2 comments:
I did have a job like that *kind-of*. I did have a boss that rather micro-managed me and wanted to know how everything was going to be designed (it was all Java and if it didn't use a design pattern than I couldn't do it).
Totally like you said, it was quite a struggle not having someone to talk to, especially since I'd never done any Java dev and that was what my boss wanted me to develop in!
Either which way, he and I really didn't mesh well and I quit after about 10 months...
Chris,
I'm lucky - I am (usually) not micromanaged where I work now. But I have had the experience you speak of - "Everything has to be done this way, because...well, because I read it's the way things have to be done!"
If your boss wasn't a programmer, how would he have KNOWN you were developing in Java or not? ;)
Post a Comment