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.
To the OP, thanks for writing. I'm going to try to act on it and get out to some sort of meetup.
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.
It's horrible that this is so prevalent in the tech community (and really any community, but I come from tech, so I'll just speak from what I know). It probably doesn't mean much coming from some random commenter, but I can assure you that there are a lot of great people (male and female) out there that don't think or carry on this way.
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.
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.
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.
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.
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.
Coding alone can be hard for anyone. I liked this article because I know there are countless men and women who feel this way. It seemed like a good cross gender way of explaining some of the frustrations of not fitting in the club. don't give up!
Sounds like your on a terrible team, you might be asking people who don't know what their doing for help.
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.
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.
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.
A Less experienced programmer does not necessarily mean a bad programmer. Its a myth that the best programming team consists solely of rockstar ninjas. I have worked on teams that consisted entirely of very very good programers and it resulted in a-lot of friction because everybody had there own philosophies and approaches to solving problems. This becomes more true the larger the team gets. I think the best team is a mix of skill and experience mixed with youthful exuberance.
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.
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.
The problem with the manic loner method of learning to code is that it can lead to burnout really quickly. I taught myself to code in a similar way. It was my senior year in college, I was getting a degree in creative writing, and my only programming knowledge was whatever was still rattling around my head from an introductory course in high school. I had an idea for something that I wanted to build, so I bought an HTML for Dummies book and started working my way down the stack. HTML, CSS, JavaScript, PHP, MySQL, jQuery, cron, VPS hosting, web APIs, and on and on.
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.
Thanks for sharing. Yeah, this is the second half of the story that I deliberately excluded. My story mirrors much of your own, actually. Once I felt my skills were up to par, I sought companionship with like minded folks. Not because I wanted to learn from them necessarily, but just because I wanted to be around people like myself (whom I couldn't seem to find locally for the life of me, despite attending a university with one of the most prestigious cs programs in the world). So I packed up my life in the dreary midwest and now work for a startup in sunny Los Angeles with great people. Just barely avoided the burnout phase and couldn't be happier.
Our stories are even closer than you think. I looked for people like me in my college town, but it was a small city with few tech businesses (mostly state government contractors), so I didn't find much. Now that I've returned to coding, I decided to move out to San Francisco so that I could be a part of a larger community. I've been out here for just over a week now and I've already been to a conference and have an interview with a startup tomorrow. (Not as a developer, but still!) There are tons of meetups and interesting events out here, so I'm really optimistic about the future.
I'm working for a healthcare startup now and I feel like I'm starting to get burned out with the constant change and long hours. I think what stresses me out the most is that I'm employee #1, so I'm being paid, but we haven't raised money yet. So I've been working for exactly a year now on this project, we've had 1 team investor meeting in NYC, and I've been working long days to keep up with the constant changes. Like you guys I've also been looking to meetup with others who share my same situation, in my town theres a meetup but it's mostly freelancers who are mostly involved strictly in web design or graphic design, rather than the programming end of web development, which is what I'm really looking for. To be honest since graduating highschool I've wanted to move out west to work with others on a startup, just haven't made it there yet, but maybe soon. I have 2 friends that I graduated highschool with who got jobs at Microsoft, I don't think I fall into that category of wanting a stable corporate job, but I do want to work on something new and cool that adds value to peoples lives.
As I read your comment I felt a tinge of concern for you in your current situation.
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.
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.
There are definitely varying rates of efficiency in learning. I personally find that working with others tends to make me more efficient, for the exact reasons that sliverstorm cites.
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.
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.
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.
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.
I love the resurgence of the old-school learning model (in-person). It's like university, but focused on practical things instead of trivium. And with the shortage of developer talent today, an 8-week $3,000 course can have a huge return for your students.
I am in the current Bloc cohort (bloc.io), and I can tell you that I am learning much faster without a doubt. I was following the go it alone path for a few months prior, and was caught in the same situation described in this post. The Bloc guy's hybrid model of teaching (old/master-apprentice, new/online access) is excellent. It is way more efficient to have that direct feedback, and to have someone point you in the right direction.
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.
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.
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.
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.
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.
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.
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.
48 comments
[ 2.8 ms ] story [ 86.7 ms ] threadTo 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.
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.
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.
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.
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.
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.
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.
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.
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.