In Programming, One Is The Loneliest Number

I mostly disagree with this post although it is a good post along with the comments prior to this one.

I believe that a talented developer, with the right discipline and passion, can accomplish a lot working solo. Here is a post I wrote a while back that captures some of my thoughts on this:

http://www.aeonscope.net/2007/04/12/enterprise-of-one/

Think of yourself as your own CEO where the business you run is yourself. If you work for someone then think of yourself as a business within a business. It is a good mode to get into especially if you have the desire to strike it out on your own (i.e. freelancer, Micro ISV, etc.).

You can also complement your solo career by still being active with others. Such as being involved in open source movements, attending local community gatherings, staying abreast on syndicated feeds such as this one, etc. Don’t forget about using other forms of communication such as instant messaging (with web cams) or even Second Life.

Communication and collaboration doesn’t cease to exist once you have gone solo, it just changes form.

As I said in your latest post about proceses, I believe that a team of two developers is ideal for many reasons.

I’ve been a sole developer upwards of 10 years for the same company. I think very few developers are in a position to demand they have other programmers to work with, certainly that was my case as I was the only developer doing what I did - there was no on else.

But that aside, the keyword here is “discipline.” Yes, I know it’s easy to ignore and hard to do, I have my tangents as well, but when it comes to being overworked and beat up on, you just need to say “No” and keep your sanity as a priority. Because if you’re tweaked out you are not help to anybody, yourself or your employer.

If you’re running out of time or resources that is entirely (probably) not your fault. It is usually the manager’s fault – a manager’s job is managing resources for their staff, so if you as the developer are running out of resources, or weren’t given many to start, then this is your boss’s problem.

I try my best to stick to my guns and not rush myself or freak out just because someone failed to give me enough time or information on a project. And I’m not talking what I think is enough time, I’m talking the “we need it tomorrow” type stuff that we all get way too often. I refuse to jack myself up due to poor planning and organization that is beyond my control, and so far this approach has worked pretty well.

And when it comes to having backups for vacations, etc. that again is the fault of those above you. It’s not my fault that they haven’t hired another developer. That’s their choice and their pill to swallow when I do go on vacation.

When it comes to work methods I will have to argue that a one-man process can be better because it is homogenous. Right now one of my friends in another department is dealing with project code that has been touched by too many people and thus is extremely hard to debug and fix. It’s not that there were too many people really, but that those people were not well managed or organized.

More people is not a good solution if those people cannot organize or be controlled.

However, the one area where working alone does bite is in brainstorming. Coming up with ideas is just hard and the more heads thinking the better off you are. So I took to calling other nerds around when I had a problem and we all thought it over. After a session I took all those ideas and went back to work on a solution in solitude. It worked out most of the time, but having extra brains is invaluable.

Another danger of working alone is you get used to it and is hard to get back to groupwork. Alone you can move along pretty speedily, not so much with a group of people. It’s a hard change to accept, but then again, you just have to discipline yourself.

I spent a lot of time when I started trying to adapt team ideas into a single-man idea. Success is possible, you just have to stay focused on what will keep you happy and stress-free.

Good topic and a situation that I think is more common we realize.

I agree with the posting, but I think Peer programming is going too far. I like working with others, I think code reviews are great, but to have someone looking over your shoulder (or you over their’s) while you develop together has been a negative experience for me.

I would KILL for another developer to even be in the same building. Having another head to discuss things with when I get stuck, or even just show off what I think is a cool trick. How about a discussion of best practices? My output passes the ultimate test, it runs and does what it is supposed to, but what could I have done better / different? Jeez just somebody that understands what I do so we can talk shop over a cup of coffee. Yeah I love the “hive mind” on the internet but it is difficult to talk to, and as my fellow inmates in this rat maze that is our cubicle farm already think I am 3/4 nuts. Talking to the Internet would assure them it was time for the white jacket gentlemen

Working alone in a quite room is bliss, pure bliss.

Now as for working alone for some jerk organization, that’s where you simply must have good political teeth - show them - and you can go back to your quite cage and code.

Ahhhh alone is bliss…

I currently am the sole developer for a large company and working alone is not pure bliss. I haven’t had a vacation in 2 years due to the rest of the IT staff not having any kind of development background.

I am constantly on call for one thing or another.

So yes… I think a team environment is a much better working atmosphere.

pI’ll throw my $0.02 in here, if only to add another voice to the choir. I am an IT department of 1 for a non-profit company that employs under 20 people (15 full-time). I am responsible for the office network, from clients to servers to CAT5, and assisting off-site consultants and staff. E-mail, web-server, domain management, the list goes on./p
pOn top of all those responsibilities, I’m also the guy who does all our system development (web-based management program for our offered services). It’s incredibly frustrating to find my coding groove only to be interrupted with some (sometimes insipid) question about a printer issue, or a missing e-mail, or how to create a PDF. And my boss wonders why I almost never give completion dates!/p

Well yes, there are pros and cons. I think it depends very much on the talent pool and whether the team roles are well understood. Where I work the talent pool and education level is very mixed and projects have always been highly individual.

Cons
That means while I do take part of larger project phases, it gets a little harder by not being able to be there physically. And I certainly do miss the social aspect , however I have not REALLY felt part of a well greased team since university where you can actually choose compatible people that you respect. And it does take a high since of self discipline.

Pro
I work mostly from home, it sames me many hours of commute and money for the ride. I get a lot done, unlike when I go in to the office and spend most of the day socializing, in meetings etc. Also, I get to do what I want, when I want - you do not depend on anyone so the development pipeline is never clogged because you are waiting. Of course, it is important to throw design proposals around to peers and have some informal feedback not to go blind. I don’t have to babysit newbies, that do not yet realize how much they have to learn.

Hmm, I don’t entirely agree.

I have worked on a team of over 50 programmers, a team of 10-15 programmer, a team of 5 programmers, a team of 2 (including me), and I’ve done projects by myself. Each of these situations was for at least a year.

The bottom line is, the larger the team, the worse the nightmare. Anyone who’s ever been on a large development team knows how impossible it is to touch any single line of code without stepping on a whole row of toes. Decisions and discussions which should take no more than a day to resolve go back and forth for weeks, and I’m not even going to mention the management.

Possibly the best situation I’ve ever been in before now was when it was just 2 of us working side-by-side but not neccessarily overlapping in our development. Person A wants black box library to perform function X, and Person B wants black box library to perform function Y. We got loads done, we fixed each other’s code, kept each other in check, etc. - but I’m not talking about XP-style “2 programmers 1 keyboard”, which is simply not efficient for experienced programmers (I’ve tried).

In my current situation, I work on smallish (1 week to 6 month) projects, largely by myself, but on a programming team of 5 people. There are always people to go to for help, and always people to show off to, and always some accountability between us, but the person responsible for the project gets to make most of the decisions, and that’s pretty much ideal for me. Best of both worlds.

I wonder how widespread is that tendency in small-to-medium companies to divide projects between programmers… It seems to me that employers are afraid to waste more than one resource on a single project, so they assign projects to specific people. It even appears they’re also aware they’re shooting themselves in the foot, not to mention their programmers’ leg! Do these managers care at all? Don’t they have any vision?

The single programmer has to develop other strategies to counteract the debilitating effect of working alone. These include: self-discipline, seeking outside sources of information, an ability to envision multiple viewpoints, joining user groups and engaging in technical chit-chat… but is that sufficient?

I don’t think so. I’ve been there and I never was able to get up to my own standards working this way.

I expect there’s nothing like working with a team that’s good enough to recognize what to aim for and work at it. Anyway, I’ve fantasized about it, argued for it, tried to sell the idea, because I’ve figured it could be a really nice way to stimulate growth of processes, products and individuals, not to mention the bottom line. I’ve given up looking for such an employer. And to be frank, I’m a bit shy of my shortcomings to apply, even though I’m considered competent by my peers.

On the brighter side, these sort of situations can teach you a valuable lesson: leave the computer alone and seek out various other people in different situations.

I used to be the sole programmer in my group. I had a good boss who - while non-technical - could give good general advice (non programming advice) and help deflect things at the time.

My days spent as a single programmer are looked back on fondly.

These days, I’m still a single programmer essentially. I rarely work with any of the other developers because my immediate team consists of me. I have to make all the design decisions and write all the code.

Working in a team has merit. Working by yourself can be great. Working by yourself can also be horrible. My current experience I would describe as the latter but the first time I did it, it was great.

To the guy that hasn’t had vacation in 2 years…take a vacation!! They can’t NOT let you take vacation. Period. It doesn’t matter if there is no one to fill your spot; not your problem, their problem. People that are all-work-all-the-time will go nuts and/or burn out and then be no help at all. Just remember that you are important to them and they have invested a lot in you, and you’re probably (honestly) underpaid, so you have to do things for yourself sometimes.

You have to put yourself first, then your company.

The reverse is another problem and could be another article all to itself.

While I agree with the post, in terms of pure productivity on the right project, working alone can be best. One example: http://damienkatz.net/2005/01/formula-engine-rewrite.html

I’m in a strange position because I’m solo in this city with the core group in another. It is interesting to see how I’m viewed because I’m not part of the main group. My main coworker is in yet another city, and though I can call her, she works odd hours and I just never bother. She also never has IM on, and I can’t help but percieve this as a signal to “let me me”. I do think that the worst thing about this situation is, as you write, the lack of career growth that comes with collaboration.

I also wish I could work somewhere that did code reviews. Of all the places I’ve worked and interviewed with, I’ve never come across anyone that does this (save a single review of my first piece of production code).

To echo the “dumbest guy in the room” comment- the most “fun” I get at work is sitting down and discussing stuff with the highly academic (PhD-level) guys and hashing out what-ifs and such…

Could not disagree with you more. If you are stuck you can use the internet, but really I think stuff gets done faster, coding is more consistent and there is not far to look if anything goes wrong. Plus another benefit is that I know everything that is going on in the code, and am not surprised by undocumented changes or “fixes”.

I think as long as you are a strong programmer and can be truly honest with yourself that 1 is the strongest number.

Working with other people is much better, for me at least. I went through a five year period where I was the sole coder and while having full control was nice, I realized that I was stagnating.

Everyone has their strengths and weaknesses. In a good team, those strengths and weaknesses overlap. Working alone, those weaknesses can kill you. But even more, we’ve all had the experience of that frustrating, inexplicable bug that you solve merely in the process of explaining the issue to a cohort.

There’s seriously diminishing returns with both these things. After 6-8 people, the communications issues exceed the advantages.

But I think the single biggest advantage of working with other people is that other people teach you things. Working alone, it’s too easy to fall into the same ruts of doing the same things the same ways all the time.

I’m an ISTJ with an extremely high I and I’m leaving programming because I hate it so much. I also though it was the perfect job for an introvert. :stuck_out_tongue:

It matters WAY more what kind of people make up your team, rather than how many. Great development teams consist of talented, considerate, motivated people. A team of four with three mushrooms and one heavy-lifter is in many ways worse than the one heavy-lifter as a solo developer.

I am sorry to see the perpetuation of the “Computer Geek” stereotype. Taken in all, programmers and other computer professionals are no more or less “geeky” than other professionals (lawyers, CPAs, doctors, etc…). To be cool in these terms, you must be an athelete, celebrity, rockstar or some other unproductive mode of being.

I don’t buy it… and neither should you!