Why You Shouldn't Code Alone
steelcityrubyconf.org
steelcityrubyconf.org
So yes, you absolutely can code and learn on your own. Some people can't.
After three months of manic reading and coding, I had a working product and enough programming knowledge to get a job with a local startup. I was also a wreck. It got to the point where opening up a text editor made me nauseous. The main reason I applied for the job at the startup was to work with other coders, to alleviate my stress and isolation, but it was a marketing startup at its core, and all the other developers worked remotely. The people I worked with were great, and they had nothing but good things to say about my work, but I was the only on-site developer. It made me feel even more isolated.
Honestly, I felt like a fraud. I spent most of my time at work teaching myself new tools. I felt like these were things that I should just know, and I couldn't convince myself that I was doing a good job, because there was no developer community around me. In retrospect, I know that my stress was irrational. Textbook impostor syndrome. Every time I fixed a bug for a customer, which I did a few times every day, I was protecting a revenue stream worth several times my hourly wage. But because the community wasn't there, and because I had burnt myself out over months of manic self-education, I couldn't internalize this at the time. I brought up my issues with the CEO - who was in the room next to me, since it was a small shop - but no matter how many times he assured me that I was doing a great job, it didn't cut through the burnout and the stress. When I graduated, I left the job behind. I also left coding behind, for about eight months. I made a few static HTML/CSS pages for various projects, but that was it.
I'm back to coding again now. Everything is fresh and fun again. I'm working on an ambitious project, and I'm still a team of one. But I'm going to start visiting meetups and getting involved in the community, because I've felt the stress of being completely on my own.
Your mental makeup may be different. You may be able to continue learning and coding on your own indefinitely and never succumb to burnout, paranoia, panic, or isolation. If so, that's great! I'm a little worried about your note at the end, though. Most people can't do this on their own, and it's not a knock on their aptitude. The emotional toll of isolation is what brings people down, and it's perfectly normal.
It seems that you could be manipulated into working crazy hours because a "big payout" is "right around the corner", if only you do what they say and work your tail off.
Just be careful.
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.
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.
To you, catastrophallie, on behalf of male developers who happen to think women–ESPECIALLY women who program–are totally awesome, I'm sorry. I'm still confused on how being a woman has anything to do with writing code, and think people who pre-judge your ability do so on unfounded misconceptions.
... how being a woman has anything to do with writing code...
I agree with you in spirit, but, logically I think you have a fallacy here.
That said, my areas of knowledge are in HTML, CSS, JavaScript and PHP. What I know in PHP could probably be translated to a lot of other languages. If you have any questions, you can certainly throw'em my way. Here are a bunch of ways to find me: http://fredhq.com/contact
And that goes for anyone reading this. I'm not always available (obviously), and I may not have the answer, but I can bounce ideas back and forth which sometimes is just what is needed.
The industry is full of ego. And I've have to learn to code alone to avoid working with assholes.
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.
You have likely heard of "Imposter Syndrome". Excess competence might be part of your problem.
However, I have found asking for specific advice is less useful than defining the problem, how your approaching it, and what's not working. Some times what might seem like a stupid idea is the best compromise available, but you need to get people past the ick factor before they will help solve the problem.
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...
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.
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?
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.
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.
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.
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.
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.
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.