
Why You Shouldn't Code Alone - carols10cents
http://steelcityrubyconf.org/blog/2012/05/04/why-you-shouldnt-code-alone/
======
guynamedloren
When I graduated college (with a non cs degree and no programming knowledge),
I basically locked myself in my bedroom for 5 months with one mission: to
learn rails and hone my frontend skills. I cut off almost all social
interaction. I had 3 roommates and our paths crossed maybe once a day -
usually when they were leaving for class in the morning and I was still up
from the night before. I neglected 'normal' sleep cycles and followed my
internal clock. Depending on how focused I was, I was often awake for days at
a time. It was crazy, and it was the most productive period of my life. Ideas
in my head were coming to life before my very eyes. I was building a powerful
skillset that would allow me to control my future. And I did it without
anything except my own drive and the internet.

So yes, you absolutely can code and learn on your own. _Some_ people can't.

~~~
sliverstorm
One thing about working while in touch with others who are either already
experienced, or learning the ropes with you- sometimes you can save yourself
hours, days, or even weeks worth of wasted time trying to understand something
you could understand in five minutes with anothers' input.

~~~
guynamedloren
> _sometimes you can save yourself hours, days, or even weeks worth of wasted
> time trying to understand_

There's no such thing as wasted time when you're learning. In fact, I can't
think of a better way to spend my time.

~~~
muyuu
I'm sorry to tickle your confirmation bias, but that's absolute nonsense. You
can waste a lot of time learning the wrong things or learning the wrong way.

I remember learning assembly, Basic, Pascal, Modula, C... in the late 80s and
early 90s, from childhood to college, and how many stupid long hours I wasted
just for not having the right resource available anywhere, and having nobody
to ask (before Uni). Spending days, weeks clueless simply because a certain
book wasn't available or, later, because I couldn't get internet access to
look stuff up at will.

One gets the wrong assumption that since Google and Wikipedia times everything
is easily searchable and personal expert advice is obsolete. It's not. There's
an excess of worthless content, even wrong/misleading content, and there are
also many questions that Google cannot effectively answer.

Wasting time hitting dead ends is VERY costly. It takes away time and energy,
might end up with you having wrong or worse-than-otherwise conclusions.

------
catastrophallie
Thats what it feels like to be a female programmer. only, when you ask for
help you hear things like "that's okay, your a girl" or "why would you need to
know that?". So you stop asking your stupid questions, and your self esteem is
ruined forever.

~~~
delinka
This is what it feels like to be _me_ and I'm a male programmer. I get
slightly different responses of course. Like "that's not smart; why do you
need to know that?" and it has affected my self esteem during my entire
career. When I've run against the same wall for hours and repeatedly received
this response from co-workers, I finally decide to monopolize their time for
half an hour explaining the problem. And we discover I was indeed headed down
the right path and Mr. MoreExperienceThanYou didn't know the answer anyway.
Nothing quite so frustrating as a group of "experienced" people jumping on the
"n00b" and telling them that they're on the wrong path only to discover the
neck-beard-wannabes couldn't think past their own limited codebase.

The industry is full of ego. And I've have to learn to code alone to avoid
working with assholes.

~~~
Mz
I doubt that is specific to programming or really about ego. In the movie
"Erin Brokovich", Erin gets treated that way when she asks questions. It turns
out they most likely did not answer her because they had no explanation and it
was just convenient to treat her like she was stupid rather than admit they
were.

~~~
delinka
You are correct that it's not limited to our industry. I run into these kinds
of people in many other places in my life. And if I've ever needed to spend
any amount of time working with them, I prefer to work alone, interacting only
when absolutely necessary.

As to Erin Brokovich, she's an excellent example of confidence without ego.
It's been difficult for me to cultivate confidence in the presence of others -
I was never actually _encouraged_ as a child (sometimes passively discouraged-
"why would you want to do that? plenty of other people are doing that.") And
apparently it's not common practice to encourage each other as adults.

~~~
Mz
FWIW: I was one of the most adorable 3 year olds in the history of the
universe and a bit of a social butterfly. It helped me not one whit with such
things. I still get told "you can't do that!" to which I often feel like
replying "you keep using that word. Given I have already done it, I do not
think it means what you think it means."

You have likely heard of "Imposter Syndrome". Excess competence might be part
of your problem.

------
jmtame
I already wrote about this[1] but the time period where I learned the fastest
and the most programming knowledge was the winter of 2008 when my cofounder
and I worked out of the computer science building, and various other buildings
on campus. Having someone who could help me get unstuck made a huge
difference. Same story even farther back when I was working with new
frameworks for a different company; a more experienced person who was giving
me feedback on my code was more help than I could have ever received on
Freenode, Stack Exchange or from reading a book.

It's a lot like setting a new years resolution: it requires willpower and
discipline to learn something difficult like programming (everyone has their
own opinion on whether it's easy to learn or not, but I think it's easy to
lose sight of all the advantages you had growing up with computers and
incrementally learning vs. complete beginners). You need others to hold you to
it and help you whenever you get stuck.

[1] [http://jmtame.posterous.com/this-is-how-you-actually-
teach-p...](http://jmtame.posterous.com/this-is-how-you-actually-teach-people-
to-prog)

~~~
dudeguy999
On the flip side, I tried (and failed) to learn to code several times before
it finally stuck. It took me days just to get the programming environment set
up! What finally or me over the hump was working with a partner when I went
back to school.

~~~
jmtame
If you're on Windows, setting up Ruby on Rails and using it can be pretty
difficult because you need a proper terminal, and Windows' Command Prompt
sucks. We've used Vagrant virtual boxes with Ubuntu with our Windows users at
Bloc.

There are also lots of other issues with running Ruby on Windows like
character encoding, file paths, and particular gems not working properly, but
overall the experience of setting it up is pretty painful for beginners and a
huge deterrent to learning to program.

------
jsaxton86
This article is tangentially related to a question I've been thinking a lot
about lately.

At many organizations, the amount of time you spend programming is inversely
proportional to your skill as a developer. As you become a better developer,
you end up spending more time mentoring less experienced developers, fighting
fires, dealing with management, dealing with customers, and dealing with other
tasks that are not programming. Not only are you spending less time
programming, but you're also in a state of perpetual interruption. Maybe this
is good for the team in the short term, but in the long term, I am convinced
this approach will cause the talent level of your organization to converge to
a pretty mediocre level.

What is the best solution to this problem?

~~~
kitsune_
I want to know a solution to this problem myself. I'm definitely the most
skilled developer in my team right now. This sounds like arrogance, but it's
the simple truth. I don't think I'm a great developer in general, but I'm just
more skilled than my team mates who are really not that good.

I'm constantly interrupted. There are always questions.

It's such a drain. I want people who can show me things, who can validate my
work, I feel like I'm working in a bubble. I'm stuck to online communities for
feedback and input.

I recently suggested two things, a) a couple of hours per week where
individual developers can learn new stuff on their own. b) a meeting every
week where we can share knowledge and mentor each other. I'm just fed up with
the knowledge gap.

------
dsirijus
At my last company, I've worked as solo flash game developer. Within 2 years
of active development, I've became one of the best in the region. Most of my
interactions with other developers at the company (all Ruby guys) was about
trying to explain to them that unit testing is absolutely not neccesary in my
line of work (small games in impossible deadlines).

Now, this might sound contrary to the proposition in the title of article but
it really isn't. I don't code alone. I do it with the entire cyberspace behind
me. No beer with fellow coders competes with that.

------
josefonseca
If you have the proper technical background(the author says he does) then
getting tips with a team is a most productive learning experience.

BUT.

If you do not have the proper theoretical background, then learning from peers
without proper books and the "alone time" will most certainly turn you into a
hack.

Even highly skilled coders like demoscene hackers and hardware specialists had
to have some proper theoretical background. Linus Torvalds was in a good
university and used Tanenbaum's books to later defy Tanenbaum himself. The
fact is Linus didn't just crop out of nowhere and hacked Linux together, he
had proper theory to go with his major league hacking foo.

Social interaction is great, fun and a wonderful way to learn and trade cards,
but there is a time to code alone and it's a necessary one for you to improve.

~~~
maratd
I can agree with the need for alone time, but the ivory tower worship is a bit
much. My professors set the right tone and pointed me in the right direction,
but that's about it. Theoretical background? More like a loose set of
principles mostly boiling down to an aversion for needless complexity and a
desire for elegance through proper organization.

~~~
krsunny
Isn't "complexity" just a euphemism for "the programmer did not understand the
problem he was trying to solve"?

------
FuzzyDunlop
Coding alone and coding in a team/with others shouldn't be considered mutually
exclusive. You can learn valuable things from both. You will most likely
prefer one over the other, though.

Alone, you might be able to spend more time with the theory behind what you're
doing, or learning from books, or learning things in your own time that are
beneficial to you but not immediately applicable. You may also have a vastly
increased responsibility, _especially_ if by working alone you mean
freelancing. This teaches you things you'd struggle to learn any other way.

But then you go to work, surrounded by colleagues, and in a team, and all of a
sudden there are all these people, who have a similar skill-set to you but
different ways of applying it, and different ways of thinking. You learn to
ask questions, and learn how to answer other people's technical questions
verbally. You may also learn that your way of doing something can be done
better.

I prefer the team-work, personally, but that doesn't mean that I wouldn't, or
hated, working alone. I instead found that what I'd taught myself was greatly
strengthened by the experiences and alternative approaches expressed by
colleagues who thought differently. I understood design patterns and
javascript after a colleague typed out and walked through examples. He
understood the event-loop and blocking after I demonstrated that in practice
and let him question what I was doing.

And, in reference to _guynamedloren_ 's post about burnout, working with
others might allow them to give you some perspective on your own stresses and
anxieties. They might have been there and understand, and help reassure you.
They did for me, at work, but no one could stop me pushing myself too far when
coding alone at home.

If it's not for you though, it's not for you.

~~~
fatalerrorx3
I've worked alone for myself (freelancing), and alone for a startup
(remotely), and together with business guys for a startup. Here's what I came
up with: working alone for freelancing is usually fine because the freelance
work that you get is usually not as complex and requires little to no fore-
thought, you can just jump into requirements and go. Working alone for a
startup has it's pros and cons, working alone is great for concentration but
working together with others who share the same vision and discussing
solutions to technical problems in non-technical terms is definitely valuable
for all involved. The one thing that's an issue working with a team of
strictly non-technical guys and being the only technical guy is explaining
what is or isn't feasible in understandable terms. Having more than one
technical person involved in a team of people who share the ultimate vision is
probably ideal because technical issues can be discussed between each other to
see if a solution can be found, sometimes I think you just need another point
of view.

------
asdfghtyulop
I never code alone, the voices in my head tell me what to type.

~~~
Mz
Damn. If only I had not resolved my Multiple Personality Disorder...

------
ecaradec
I'm probably the strongest coder at my startup and I agree that it can feel
lonely when you have a hard issue and you know that nobody is going to help
you.

Meetup group are totally awesome, I was scarred as well at going to a meeting
alone with no connection at all. There was a lot of other geeky people doing
awesome thing in other companies. It feel good and it's also a best investment
in case of job loss.

------
codeonfire
Some people shouldn't code alone.

------
irrationalfab
Another great alternative is to join an open source project. Your learning
will be skyrocketed comparing to what you'll learn by your self in a give
amount of time.

------
cgmorton
Not to be glib, but has this guy never heard of IRC? First thing I do if I'm
learning a new language is join the IRC channel. Frankly, there are smarter
people in there than you're likely to find at a local meetup.

It sounds more like the OP's problem was more along the lines of 'didn't have
any coder friends', which is a much less universal problem.

