In Programming, One Is The Loneliest Number

solo programming not bad at all,you can managed yourself when you must work and when you must rest, I think programming like art it need to use your mood too. and it easier to control your mood if you work alone. work in team not always the best, remember it like to fix multiple head and ambition in one glass, sometimes it suck.

In my experience team development is more productive than solo programming. I have been through many situations where I am stuck with some problem and people around me could pull me out in couple of minutes. You learn a lot in a team, some times how to do things, sometimes how not to do… the percentage of each depends on the kind of team you are in, but nevertheless both are good learning which you can’t get if you are going solo.

  1. The effectiveness of communication is inversely proportinal to the size of the team.
  2. If we are talking about software development (coding, testing new ideas etc.), I prefer working alone. If it is about the whole process, like following standards, checkin, labelling;Yes, we need a team effort.

I am not sure I 100% agree here. On one hand, yes a massive software project with over 500k lines of code cannot be handled by one developer alone. It’s just humanly impossible. It’s also silly in this ultra-competitive world that we even attempt to compete on that level.

HOWEVER, Most awesome software products we use today all started by one guy (or gal) who put their heart and soul into every line of code. Just try to think of a couple of your favorite apps and then research its founding. You’ll be surprised by what you find.

I think starting a project from scratch can best realize its full potential when one developer takes its reins, gets it on its feet, and then brings in others to fill in the gaps.

Unless however that project is very small, such as a utility app (or script). In that case, bringing in others on it will just make the tool bloated and useless.

I am a freelancer/small-business owner and allthough I have to do all the coding by myself, I have friends that are in the same boat, and we chat, fairly regularly, this gives us the opertunity to bounce-ideas, correct, and help eachother, we often share code and check eachothers projects that we are working on. I enjoy working by myself but without this group I dont think I could have possibly have gone as far as I have. Working on a team is great if you have the right people, you have to get along and compliment eachother but you also have to be able to critisize each other. I have one partner for example that is posibly the best front-end guy out there, but he is not so great with the back-end stuff, or the client relations, that is where I come in, I will work with the clients as well as do the behind the scenes stuff, and this works for US, but it wont work for everyone.

Dear Jeff and Friends,

To get back to the point, ONE is The Strongest Number.

All the efforts of “Software Engineering” have been to towards the goal of being able to add more people to a project to increase its productivity. These have all failed that is why new development models are emerging all the time.

Yet the most public and successful project of all time has to be GNU/Linux.

The lack of acceptance of this spectacular and most public fact is the most revealing aspect. It leads an honest programmer to question the true motives of those behind the debate.

A cynical man might deduce that they are motivated by money and not engineering standards.

I read all your comments with interest. Nobody seems to have mentioned what it is like to be hired as the second developer for a small company where the first developer was quite happy being a lone wolf and was beligerent about code being written his way.

In the last three months I have learnt nothing from this guy who communicates in grunts and shrugs and I have had every bit of code I wrote rewritten, behind my back.

I know programmers have never been known for their communication skills but this has been a real shock for me. After only three months I am resigning from my first graduate job. At least I know what to look for in my next job, a company that has developers that can actually work with other human beings.

Because programming is as much art as science, you would think that committees would produce better artwork than individuals.

When I code alone I do control the process. And I don’t have to explain myself in code reviews, I don’t have to build long complicated documents describing interfaces and making powerpoint presentations about the division of labor. I sit down, start coding, and get it done.

Of course I could cheat and not make good code. I could hack away at it and munge it up so nobody could modify or maintain it. But I don’t do that because I have pride in my work and a long lifecycle view. Working with a bunch of other people looking over my shoulder wont fix the lazy, it just makes them lazy AND devious.

@Chubber

While all that may be true and you’ll get the job done, but you’re ultimately restricting yourself to your own experiences and thoughts.

That might be good enough for you, especially if you’re working on “safe” projects. My thoughts on the matter are something like this: Why go through the painful process of making big mistakes yourself when somebody else has already made those same mistakes and learned from them?

Yes, sometimes you’ll have to filter the rhetoric from the true wisdom. But inevitably, from working with others you will learn new and wonderful things without having to go through the agony of making those mistakes yourself.

I’d agree with Jeff’s sentiments, which many of the comments posted so far seem to miss the point of:

Yes, it’s possible to work on your own.

Yes, it’s possible to do a good job on your own.

Yes, it’s even possible get your work done on time in a productive and efficient manner, perhaps learning a thing or two along the way.

But there’s a significantly reduced opportunity to learn by working on your own. I’ve been a loner for most of my professional career and I’ve been craving the experience of working with a real team of developers who know their stuff. People who can potentially lift my software development game to a whole new level.

It’s only recently that such an opportunity has come along, and I’m already excited about it. Those of you who have always been loners too but say you’re doing “well enough” … that’s fine if it works for you but if you have any hunger for professional growth, you’ll almost certainly find yourself wanting.

In my personal opinion, that’s the difference between being a “good” developer and a “great” developer. It depends as much on the people you work and their willingness to share their experience as it does on your own ability to learn and adapt.

My two cents :slight_smile:

All the efforts of “Software Engineering” have been to towards the
goal of being able to add more people to a project to increase its
productivity. These have all failed that is why new development
models are emerging all the time.

From a business perspective you maybe, kinda, sorta have a point.

Methodologies come and go. Software development is still as much art as it is science. We’re still feeling around for what might be a methodological silver bullet. This may very well be a fruitless search.

But to deny yourself the experience of others is, in my humble opinion, professional suicide. Which is how I interpreted Jeff’s article.

Yet the most public and successful project of all time has to be
GNU/Linux.

With all due respect, if you think Linux was written in a communication vacuum with no sharing of knowledge … you’re stark raving loony :slight_smile:

Great comments so far. I’ll add one more thing.

Being a lone problem solver is something that most programmers are naturally good at, so they don’t need any additional encouragement along that particular axis.

I don’t want to devalue working alone, because it’s absolutely an important part of the effort. But so is working with other people.

I’ve worked on teams and for now I am working alone, or at least virtually alone, and I have to say that I’m pretty much enjoying every minute of it. Occassionally I get bored and I wander…which is where the above article has some good points about accountability. Other than that I have the “hive mind” as you call it to ask questions from, bounce ideas off of, find examples, etc… Rarely the guys sitting next to me can add more to what I can find off the internet. Still sometimes having fellow coders to bounce ideas off of is great, but more often then not fellow coders tend to be a pain. I’ve met some great people programming, I’ve also met some real freaks, I think the last two teams I was on burned me out and disillusioned me about the whole team dynamic. So I guess ultimately it depends on who you are and who you are working with. If you are working with a talented, open-minded, humble set of individuals then by all means hang in there and both teach and learn all you can while your team makes great product. If you are stuck working with a bunch of freaks you are better off on your own.

If you are stuck working with a bunch of freaks you are better off on your own

Or, find a better bunch of freaks!

I did some work with proverbs as an independent study at school a few years ago (before getting into database design and some Net programming), and this blog is about the tension between contradictory truths. Specifically:

“too many cooks spoil the stew (or soup or whatever)”

vs

“many hands make light work”

They’re both true, just true in different situations. Multiple people can accomplish more, but only if they can work together, they all know what needs to be done, they have the ability to divide up work smoothly, etc. Otherwise multiple people working together just get into each other’s way.

I wish more teams like that existed, but the grim reality is that when I work alone at home on projects for clients I have process, I have source code control, I have a bug tracker database, I have unit testing, I have a secure, stable PC with virtualised test environments and all the tools I need for the task at hand.

When I am at an office, even as part of a development team, I consider myself lucky when I can get permission to use source code control. Usually I am forced to work on a crippled PC with no development tools and I have no access to test environments.

How do I fill the vacuum? I read books (and quality websites like this one).

Jeff,

Fantasic post, and it came quite timely for me. I’ve been the sole developer for the same company for the past 12 years. Along with that title, I’ve also been the sysadmin, phone guy, security guy, fill in the blank guy. My crave for working with other developers has reached the point of breaking my sanity. To sum it up, I’m tired of being the smartest programmer in the room.

So when I started listening to Hanselminutes and DNR I began to realize that there was this whole other world of developers out there that were WAY smarter than I, and at that point, my faith as a developer was renewed ten fold. I had read your blog a few times here and there, mostly when Hanselman referred to it. But it was your podcast with DNR that really stuck a cord. For the first time I was listening to someone else tell a story about being tired of not having any peers to share their love of computers with, about not having anyone care or understand when you were dying to share something completely awesome (and after listening to that podcast, I ran out and picked up a copy of Code Complete 2.) So from that day I began to realize that there are other developers out there that honestly share the same passion for computers and programming that I do. This became so exciting to me that I’ve made the decision to find another job that will allow me to work with a development team. While I don’t feel that the past 12 years of being the sole developer were a complete waste, I DO strongly feel that I’ve done a disservice to my professional growth as a developer and that I’ve missed out on some great comradery with people of the same cut.

Many people seem to think that working solo is best, and perhaps that’s fine for them. But what I have to wonder is are those people really able to turn out top notch ‘usable’ software that doesn’t make the user think? I highly doubt it. And are those people really growing professionally? I sure didn’t. My role as a sole developer has not produced software as effective and usable as it could have been. If I just had someone else to share the work with, someone else to contribute ideas, then we could have developed something truly grand; and I’d be a better developer for it too.

So there’s my goal as a developer who has just opened his eyes to the larger world. Find an awesome team to work with, find smarter developers to work with, and really discover where my potential can take me. And for anyone else stuck in a similar situation, don’t let being a sole developer close your view to and interaction with the rest of the developer community. Furthermore, if you’re in the role of sole developer and were the other hats of sysadmin, phone guy, security guy, etc guy - SERIOUSLY think about finding working somewhere else where you can be a developer full time. Those other hats will eventually hinder your productivity and may even leave you wanting to stop programming altogether.

Yes, I was the sole developer in our office in my previous employement. Glad to be out of it, and working in a large software development team again.

Found out the hard way, that the Peopleware quote was true; “The major problems of our work are not so much technological as sociological in nature”

“The major problems of our work are not so much technological as sociological in nature”

so true I worked with biggest bunch of deeply arrogant conceited a**holes ever

I am an independent contractor. I work at home for one client who has many clients. There is one other Web Developer who works for my client. If we were to be considered a company, I’d be the Senior Web Developer. But both of us work primarily alone.

If it wasn’t for the internet with its wealth of information, 24x7 Books and Safari Books, I’d be in a lot of trouble trying to work on my own.

I am trying various things to get to be with other developers, such as a PHP Meetup and taking classes at the local Technical College. The problem with the Technical College is that the course work for programming isn’t that challenging for an experienced developer (25+ years of programming experience). I will be looking at other inexpensive coursework that would get me out with other people.

The biggest problem I have, which I’d probably have to some degree in large company, is that with the amount of experience I have, it isn’t easy getting help in the areas I’m not as experienced in. I don’t need to be led through the basics of the area I need help in. I just need to know, “What can I be doing differently to make use of the newer technology more efficiently?”