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.
- The effectiveness of communication is inversely proportinal to the size of the team.
- 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.
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
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
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?â