views:

146

answers:

6

For whatever reason I've only ever worked solo. The job that I have now, I was under the impression that I was being hired to work underneath a senior developer and that I'd be able to learn from them/their code. This was actually one of the conditions that I had when I accepted the position (that and I was broke and needed the cash - so I would have likely taken it anyway). As it turns out, the intention of management was for me to replace that senior developer because they were contracted and relatively expensive.

The question I have is, though I've learned a lot in the 2 short years I've been here, am I potentially seriously stunting my learning/progress working solo instead of working at a company with other developers?

+3  A: 

Yes, you are stunting your development, in particular your development of:

  • your skills in working with other developers; these are mostly soft skills but very useful nonetheless;
  • technical skills in your chosen toolset: if there is never anyone to provide (positive or negative) criticism of your work you will learn much more slowly.
High Performance Mark
+2  A: 

Pair programming has benefitted myself, and my friend in the past. There's always times you wuold be writing code only you can understand. Working with another developer closely can expand your views on how well others read your code, and suggest you with alternatives.

Bouncing ideas in between each oteher is just too invaluable to pass.

Xavier Ho
+7  A: 

To borrow from biology, it is a a little like the difference between asexual and sexual reproduction :)

The problem with working solo on solo codebase is that you only learn from yourself. That means that you may, over time, learn to do things better, but would have to encounter those things yourself. It's like an accidental mutation.

When you work with others, you are constantly exposed to their style, errors, and review. Since nobody is perfect, ideally you each learn from one another and everyone's skills improve.

I considered myself a fairly experienced developer but was working solo in academia for many years, and for the past year I've been working as part of a group. And I have learned quite a few new things, and my peers learned from me.

It's good to be exposed to other codebases, styles, and idea. Coworkers are a good source, but if that's not possible, reading technical blogs and getting exposed ot actual code (like open source) can help.

Uri
+2  A: 

A few other points:

  • Mentoring - Once you have a certain amount of experience, it may be expected that you can handle knowledge transfer and help develop some more junior developers.

  • Software development methodologies - Working solo means that you may not have the merge issues that a multi-developer environment has or pair-programming experiences. Some Agile practices like Scrum work better with more than one developer generally.

  • Coding practices - Do you use naming conventions and coding practices like logging and exception handling? Those can be trickier if you have more than one developer as now there is collective ownership instead of individual ownership

JB King
+3  A: 

One of the main issues with the working solo approach is that you spend exorbitant amounts of time sorting out problems other developers most likely already know the solution to or can work out faster than you can. No two developers know exactly the same as each other. Two PHP programmers for example who have been programming for the same amount of years will both know different ways of doing things, one might have a long and complex solution and another might have a more straightforward way of doing things.

I know for a fact if I had never worked alongside other developers, I wouldn't be as efficient nor proficient as I am now. Of course it's not a requirement because you get to a point after a while where the way you do things works fine for you and whether you are working with other developers or not doesn't really matter so much.

But in reality: there is nothing more beneficial than working with one or more programmers to solve complex issues that might be too big for you to handle.

Dwayne
+2  A: 

Ideal Situation: You'll learn the most when you are working at a challenging (not impossible) problem with interesting, smart, challenging, professional, helpful and fun people. The situation and people will drive you to learn continuously and improve yourself as a programmer (and person).

But no job has all of this all the time, and even a perfect job will change-- and you will grow.

I love working with people, and even though it can be challenging for me, I won't consider a job without that as a primary component. Although I'm good at just picking up a book and reading, I had an amazing experience learning Ruby/RoR by pairing with two experts for a few months. You really can't be pairing for learning new stuff. And day-to-day we teach each other all sorts of smaller lessons that I just wouldn't have learned on my own.

If you haven't worked with teams, you really owe it to yourself to do so. Teammates can really help you make better and more reasoned decisions, and be better at explaining them. Many experts (and me) believe that the hardest or core aspect of programming is "communication", and the more isolated you are, the less you learn that.

Hope this helps

ndp
+1: Indeed it does help. Thank you.
SnOrfus