Think about how many students were in your freshman level courses. Now think about how many students are in your senior level courses. Add a fudge factor for the larger dispersion in senior level courses if you like, but don't forget seniors are also taking more of the courses per semester as well.
The size difference is basically the number of people who dropped out. A few may have dropped college altogether but many have migrated to another major, because they too doubted they were in the right major until they felt they had to take action. (Or in some cases had it forced on them by failing grades.) This is not a unique experience.
Presumably this is posted here because of the gender issue raised in the post, but given how non-unique this experience is I don't see that the gender angle adds anything. Scratch a few sentences out and any number of juniors could post this. This is not "woman doubt", it's just doubt, and the doubt does not admit of "woman solutions", it's just the same "finish the degree" solution everyone else has. I take the time to say this because I actually think adding the gender idea into this is a little cognitively dangerous; incorrect identification of the problem leads to incorrect identification of the solutions. (As every engineer comes to learn instinctively after a few years under their belt.) Those who are certain they are in the right major are the unusual ones, regardless of gender and from what I saw in college, pretty much regardless of major.
I see two problems here: one, Carolyn is calling this a gender issue and not doing a good job of explaining why it is; and two, any time 'gender' is mentioned on Hacker News, twenty people defensively write comments dismissing the gender issue.
This might be more of a gender issue than we realize. CS is just plain unwelcoming, no matter who you are, but there are fewer women in CS. We are turning women away somehow, and it's probably in ways more subtle than we realize.
Any time someone complains about CS being unpleasant, we should take a hard look and wonder if it's more unpleasant to women for that reason. There's no point in trying to end or simplify the gender conversation, even if we were brought into it sloppily.
> CS is just plain unwelcoming, no matter who you are
I think this is the problem we need to address first. Even after working in the industry for years, I'm still constantly struck by how contentious and irritable this industry is.
This research concluded that women were not in STEM careers because of this "work" culture, choosing instead other career paths with a better work/life balance,
>The size difference is basically the number of people who dropped out.
Not hardly. There are a lot of people in other disciplines that take lower level computer science courses. Quite possibly more than are enrolled in comp sci itself.
My school separated comp sci major and non-major tracks. Very few were in the intro comp sci classes who were not intending to be majors for me. YMMV. At any rate the point is there's a very high dropout rate in computer science. Many more switch out than switch in.
In any competitive field, from computer science to ballet, there are those who practice for hours and hours per day.
The author does not want to be a competitive computer scientist, and is happy being a casual one -- skilled enough to make a 40 hour-per-week living with it, to be sure, but not obsessed enough to advance the field itself. She made a great choice going to a liberal arts school.
When she compares herself to students at engineering schools, or references a study of students at CMU, home to some of the top computer science students in the world, she is doing herself a terrible disservice. She sounds a bit like a casual runner upset by the fact that Usain Bolt exists.
Elite computer scientists, like elite athletes, live in a different world. If you want to join that world, the rules are pretty gender-neutral -- work 80 hour weeks, write great software, publish papers, dream in code (or math, really). If you don't want to do that, you aren't a lesser person. Just don't compare yourself to those who do make that choice.
No it isn't, there are plenty of people working hours late that and slugging through it. And it's true that 80 hour weeks don't 'necessarily' lead to excellence; actually it's quite obvious. However, there aren't many people who do achieve excellence without extreme dedication. So working 80 hours will add to the results you will achieve.
It's not for everyone, fine. Not everybody can be top 1%. By definition, 99% can't, obviously. But let's stop pretending that we're all equal and everybody is the best. We're not, and only the brightest who work the hardest and smartest, and have some luck, will be the best.
Where did I "pretend that we're all equal and everybody is the best?" Please don't set up a straw man. And my argument was not that there aren't "plenty" of people working those kinds of hours. I am simply not convinced that working 80 per week = excellence.
You're equating hours put in with working harder and smarter. If someone plays the drums for 80 hours a week but has no natural sense of rhythm, they'll never excel as a drummer. If you want to make Gladwell's "Law of the Few" argument, then make it (or cite it) and leave off the false analogies.
"Where did I "pretend that we're all equal and everybody is the best?""
You didn't, that was a generalization, an additional message or thought, on top of the reply to your post which was in the 1st paragraph.
"And my argument was not that there aren't "plenty" of people working those kinds of hours"
You said that it was a "sure recipe for burnout", implying (more than that, 'positing' even) that everybody who works those hours will at some point burn out. I disagree. Some will burn out, some (I'd even say the majority but have no numbers to back that up) won't.
"I am simply not convinced that working 80 per week = excellence."
Right, neither am I; actually I'm convinced of the opposite, that 80 hours/week != automatically excellence. I said so, in those words, in my post.
"You're equating hours put in with working harder and smarter."
I explicitly did no such thing. Putting in many hours is just part of it, in addition to working harder and smarter. If somebody wants to excel as a drummer, they'll have to have rhythm, study hard, and practice a lot. Just the first two won't cut it, because there will be somebody out there who will do anything it takes to be the best. When there is a large group of people competing, you cannot let anything slack if you want to be the best, because others will do what you won't. (not you personally, of course, I mean 'someone who wants to be the best).
80-hour weeks amount to less than 12 hours per day if you work every day. That leaves you 4 hours to do whatever else you need/want to do, and you can still get a nice 8 hours of sleep per night.
You'd be surprised how manageable that is, especially for introverts for whom social interaction is more of a chore than a joy.
You'd be surprised how often those two things go together. I hate to break it to you, but truly excelling in a field - where excelling is defined as being one of the best at it - takes tremendous amounts of hard work, long hours, and more than a little luck.
This betrays a bit of a self-confidence issue on the part of the author, as does http://blog.carolynworks.com/?p=537 (more revealingly). It also plays like a specific issue trying to be painted into a gender issue, which it really isn't.
> “Who knows what lexical analysis is? No one? What, don’t you guys do this constantly in your spare time? All right, I’ll show you …”
If I may, I believe that the professor was connecting lexical analysis with what humans do on a second-by-second basis -- that is, parsing and interpreting speech from other human beings. Your brain is lexing all of the time, and I believe that's what the professor might have meant -- that was the first thing I thought, anyway. I'd drop a class like a bad habit if the professor quipped about me knowing something before he taught me (I'm not paying for self-study, pal).
Self-confidence issue? Yeah, that's the point of the article. She's saying, "I doubt myself in this area, but I am confident about these other things, and it's not just me, so I think I'll be okay."
> This betrays a bit of a self-confidence issue on the part of the author
That, right there, is probably the biggest reason for the low percentage of women in CS. CS - and by extension, software engineering and development - are fields that unrelentingly punish those without the confidence to stick with them. Combine that with the (sadly) endemic lack of self confidence in women in our society, and it's not hard to see why there are so few women developers.
Every time I hear about how we should be doing this, that, and the other thing to lure more women in to tech, one of the thoughts that springs to mind is, why aren't we doing more to address the general lack of confidence in the female population?
> It also plays like a specific issue trying to be painted into a gender issue, which it really isn't.
That's why I came here to comment. Is the author trying to say that all men want to live in the cs lab, and all women don't? That's the kind of sexism that is the problem. On the other hand, if there are others who eat, breathe and live CS, yes, they will be ahead of you. What do you expect? It's just like anything. You'll never be the best, so be what you want to be.
This has nothing to do with women in tech. It has to do with specialization vs. generalist.
The image of the ultimate hacker assumes a specialist. 100% focused on their expertise. It could lead to a great coder. but a company will also need someone with a decent technical background who can also relate to the end-user for instance, or align more than one sentence when a customer calls. That would be more a generalist.
I don't think it's a specialist/generalist thing. I think it's a "do you have interests outside of programming" thing. In my experience, the image of the ultimate hacker is someone who eats, breathes, and drinks programming (which used to be me). As I've grown older, I've learned to appreciate the value of learning things outside of programming.
'value' to who? You yourself and your direct environment, presumably. How much did your other interests contribute to your software skills? Maybe a bit, but not as much as other skills would have that you could (with directed effort) have learned in the time you spend on other things.
I'm not saying it's wrong, I too live my life for myself, not for others, and not to be the very best developer I could potentially be at the exclusion of everything else. I like to do things outside of software as well, every now and then. But that doesn't take away from the fact that I could have been better if I'd spend the time on it.
So, 'the ultimate hacker' (as in, 'the theoretical ideal of the very best developer') is someone who eats, breathes and drinks programming (or at least 'software development' in the broad sense). Socializing, a family, learning macrame - all of those things do not add to being the ultimate hacker.
> Socializing, a family, learning macrame - all of those things do not add to being the ultimate hacker.
When you build stuff for the outside world to use (software, architecture etc.) then knowledge of the "outside world" is of extreme importance. You being the "ultimate hacker" or the greatest architect since Phidias has no importance whatsoever.
I agree. But your point is not at odds with my point. Just taking a macrame class to 'learn about the outside world' is not the most efficient use of time. What I meant was (it was implied my 'with directed effort' sideline) that there are ways to learn about what you need to build from specific focus on those things. You don't have to have family picnics each Sunday to learn how to best design something for 'the outside world'. When you recognize you need to know something for the audience you're building for, you can study that specifically, you don't need the rest.
Of course it's much nicer to go on Sunday picnics and solve cognitive dissonance between 'I want a personal life' and 'I want to be the best at XYZ' by rationalizing it as 'oh but these non-specific activities will make me a more well-rounded person, which will make me better at 'XYZ'. In itself that's OK, humans need such rationalizations otherwise we'd go crazy in no time. BUT, just because we use those rationalizations, that doesn't mean we shouldn't recognize them as such.
So, after this detour ;), my point is: having a family, socializing etc. are not necessary to know what you need to know about the outside world to be the best at anything.
Sure they do. Because if you don't socialize, have a family, and learn macrame, then you'll have a nervous breakdown before you get to be a great hacker.
I agree, it's not a roadblock specifically for women. I did software engineering (not cs) but the 4 year course is basically strictly engineering (with a large overlap with doing cs as science). There's no scope for electives. You want that particular degree, that's the road you have to travel.
There are other options, like CS could be done as an arts degree which would give you more scope to choose other electives, and presumably socialise with people who do likewise.
The year I did eng, there were a lot of women in the class. Other years, not so much.
As jerf has pointed out, this is Impostor Syndrome. It is present in men as well. Ironically, the better programmer I've become, the stronger it has gotten. The thing is, while scary, it's perfectly normal. The only advise I can offer is just to ignore it. So what if it is true and you "don't belong" or you're a bad programmer: so what? It's still something that you enjoy and can make a career, a rare luxury for most in this world.
If you're worried about that the programming world implies less balance, consider this: the big advantage of programming is that you can get a job that coincides with your passion. That means, meetings and other bs aside, a significant chunk of your work is what you'd consider leisure time devoted to one of your hobbies. It means you actually have more time to pursue non programming hobbies.
That said, you should consider programming a bit outside of work and class. It's very easy to lose focus of what is the general industry trend when you're focused on your specific job. It can be as short as an hour a few evenings a week and a few hours on the weekends. It doesn't need to be anything "cool", it should be something you get a kick out of building that you don't get a chance to do at work: it's perfectly fine to re-invent the wheel, learn a language that isn't used in industry, write a software to facilitate a non programming hobby e.g., I love classics of literature, so I once built a "beautifier" for Project Gutenberg works that would convert them to LaTeX and type set them.
The fact that you love programming should be enough of a reason to continue doing it. Especially if you're skilled in areas outside of programming, you won't have any issue staying employed. Since you have less ego and arrogance, you'll be able to learn more from others, opening fields that are often close to people who are convinced they can't be taught anything about programming in a university setting.
P.S.
If you really are an impostor, that's likely a much more rare and valuable skill than being a programmer!
So what would you recommend someone self-taught who just bombed his past couple of interviews do?
Nothing like failing on elementary math questions to make you feel like a class A idiot, especially if your title is 'Senior Software Engineer', and here I go, bombing on freaking word problems in a numeracy test.
I feel like a total fraud, like I'm in the wrong field, I could have done those easily straight out of high school.
The other part about "no ego" is being willing to learn from rejection rather than either blindly going through or avoiding all situations where you may be rejected.
I suggest working your way through the lower division mathematics requirement that a college CS major might experience. Course material is one way (just make sure to actually do the homework), taking courses at a local university (or even a good community college e.g., in Silicon Valley De Anza and Foothill Colleges) is another (make sure to find an excellent instructor for Calculus and to take a discrete mathematics course).
The other part to keep in mind is that there's different types of software engineering roles and different kinds of mathematics. Some (e.g., machine learning and data mining) are very mathematically intensive (to understand some papers, you'll need to do integration by parts), others (e.g., graph theory) are more about discrete rather than continuous mathematics, yet others (systems programming, application development) are least mathematics heavy (and where they are, again, the math is mostly discrete rather than continuous).
Well, it was a bit of a kick in the pants to fail so spectacularly, believe me, I'm not trying to protect whatever fragile ego I do have left, after that intro the technical parts of the interview were brutal, the interviewer decided to hammer it into me that I wasn't good enough, and basically threw the book at me :)
What I learned was that I am woefully unprepared to interview at such a place, but not that I'm not going to try again (I am, I refuse to give up).
Question for you though, how did you develop a math intuition and the ability to enjoy math? I used to enjoy math in school, but I'm 31 now, and I find it tough to slog through the very basics again, so I find it hard not to skim over things I think I know. I think a part of the reason I enjoyed it at school was that it was basic, plugging numbers into memorized formulas, using pattern matching to detect the type of problem, simple stuff if you've been programming, so it was easy to pull off the straight As.
Time to really learn now though.
From what I have read on HN in other post, it seems there was a "light going on" time for a lot of you? When did it happen? What did you do to get to that stage where you started revelling in mathematics?
I think I have the substrate for math, it doesn't take too long for me to grasp concepts, but solidifying them is what I have a problem with. Without doing that, it's like anything in programming that I haven't written a program for. I lose it and forget it quickly.
What is the equivalent of writing programs, but for math, for you?
Do you have access to iTunes U? There are loads of courses available from basic math all the way to advanced computer science. I majored in Math, not CS, and used a few algorithms classes to come up to speed with stuff I should have known already.
For brain teaser type problems, I like Martin Gardner books.
Grab a couple of basic textbooks and read through them. I have mostly learned through general reading and narrow practice; which means I have occasional holes in my knowledge. When I see a need to fill the gaps, I get a basic textbook and start reading, since I already know a lot of the material, I only slow down to study when I need to.
If the author of this blog post reads this then if I may, I have a few comments, and everyone else should take note as-well ;)
"When they talk about how they live to program and never leave the lab"
THEY ARE BORING.
I LOVE programming, however I also LOVE playing with my 2-year old, playing poker with the fella's, practicing origami, watching movies, working on my (admittedly horrible) art skills.
I know exactly where you are coming from when you say that you are worried about your programming skills not being 'up to snuff' but trust me, it is a small price to pay for having a life that is fun and enjoyable. It's these people skills and life skills that will make you more-rounded, and I'll be frank when I say that the more-rounded you are, the more likely you are to have fun, and the more you have fun the more it will show. And the more it shows you enjoy life, the more people/bosses/hiring managers will want to hire you to work around them.
It isn't always the technical skills, most of the time it's the soft skills that make a difference. So practice your knitting, and definitely practice the Japanese. And next time you are asked about what you have as a hobby, be honest. It will impress.
In defense of the obssessed, let me say that "fun" is relative.
Lets' take CS out of the equation and consider the case of many basketball players. In their college and highschools, they found themselves mixed in with people who were good at sports but had no great innate talents, and also didn't obsesses about practice. These people punched their clock---coming in for after school practice---then went home to enjoy other hobbies.
Now the outliers---the ones who would eventually make it to the NBA--were a different breed. Not only were they innately talented, but they obsessed about the game from the point of view of a 'normal' player. They practiced their free throws till they were perfect, they re-watched their games till strategy was second nature, they pushed their natural abilities to the limits and as a result had far less time to do anything else.
The same applies to prima-balerinas who often started training at age 6, to young chess grandmasters who simply played and studied chess more than anyone else their age, to anyone who's field was competitive enough that mere talent wouldn't take you to the top.
Is Usian Bolt boring? Was Pierina Legnani boring?
And for that matter--do they consider their training to be boring?
Coming back to CS, computer science encoompases a wide enough range that one can have a "hobby" that is in CS that isn't similar to their job or studies. For example one can specialize in logic programming as their job, but come home and play around by (a) making a procedurally generated game with their kid, (b) a poker-bot for those online games they play, (c) a flash card program so they can better learn Japanese, (d) a better Netflix recommendation engine, or (e) art with RaphaelJS. All of these involve some level of programming, and some level of Computer Science. Are they all boring just because they still involve CS?
In programming most of the variance in ability is explained by intelligence and not effort. You can take, for example, some non-CS student, teach them programming by saying "look, here's how you do it", and if they're the right student, they'll instantly be better than 90% of CS students. (And if they're not, they won't be. Oh well.) A lot of nerdlingtons who "know" programming and argue about Java going into their freshman year end up doing poorly.
So I would recommend taking it easy. It makes sense to do what you're interested in, and much of that is not night programming, then so be it.
Doesn't this go against the 10,000 hours thing? Sure, taking someone who is smarter and has more experience than other students and putting them in front of a computer will yield these results. However, someone who is solely smarter and does not normally program will not likely produce good code. Expertise is much more about practice than raw ability. Most of the really good programmers out there are really good because they're both smart and well versed, not just smart.
Have you ever worked with someone who is more than one standard deviation smarter than you are? I highly recommend the experience. I have watched people go from novice to better than I am in just a few years, and I have rather a lot more than 10,000 hours in my field. Hell, I have at least that much in my sub-specialization.
Mentoring people, especially if you can mentor people who end up learning faster than you did, who end up becoming better than you are is extremely rewarding, I think, and humbling.
I mean, experience is important, but intelligence can act as a multiplier on experience. It's like anything else; Everyone, if they start lifting weights, will get stronger. But, some people will get stronger faster, even if they lift the same weight the same number of times.
I absolutely agree with you. This wasn't my point though. My point was that Person A's 10,000 hours is worth more than Person B's intelligence advantage, not that Person B will not overcome Person A.
You only learn from encountering situations in which learning is necessary. I think the smarter person encounters these learning experiences more quickly, but people don't instantly become great at something.
The "10,000 hours thing" isn't a law, or a rule. It's an anecdote. Interpreting it as a fatwa against a personal life, or interests outside of a lab, would be a bad move.
I doubt they'll "instantly" be better than 90% of CS students, but if they're interested, they'll ultimately put in more time by themselves to learn how to program.
I remember that I was learning to program just as I was entering high school. I fell in love with programming instantly, but it does not mean I didn't spend hours upon hours debugging my first few programs to see what went wrong. But I didn't have anyone to guide me, so all my programs were imperative styled, not OOP. After taking my first computer science course in high school, my classmates thought of me as a programming genius (which I am not) since I was able to write programs faster than anybody else in my class. It's a lot easier to understand OOP when you've been programming for 1-2 years rather than 2-3 months.
That's why I'd say that a lot of programming ability is effort, not intelligence. Except for non-C family programmers, I've never met anyone who didn't have the "4-hour-debugging-session-only-to-find-it-was-a-missing-semicolin" experience when they were beginning programming.
"After taking my first computer science course in high school, my classmates thought of me as a programming genius (which I am not) since I was able to write programs faster than anybody else in my class. It's a lot easier to understand OOP when you've been programming for 1-2 years rather than 2-3 months."
---
I think this happens with most classes. I had to take an introductory MS Office class as part of my degree. I aced every test without effort, and was the go-to guy for help when even the teacher was stumped.
It wasn't that I was some kind of genius, it was that I had been working with various interfaces and software from the moment I could reach a keyboard.
Nitpicking here, but I'm quite sure OOP and imperative programming are orthogonal concepts. Clojure is a mostly functional OO language, while Java is a mostly imperative OO language.
Yes. On the other hand, 'procedural' can be seen as opposed to OO: the notion that the organization of programs is as a collection of procedures (and (incidentally?) data structures), as in C, as opposed to a collection of object types.
I don't understand why you are portraying concentrated education vs liberal arts education as a women's issue. I'm a male who also earned a CS degree at a liberal arts school, and I had similar struggles in trying to balance my technical workload alongside literature and politics.
The rub for women in computer science is that the dominant computer science culture does not venerate balance or multiple interests. Instead, the singular and obsessive interest in computing that is common among men is assumed to be the road to success in computing.
I no way see this as men or cs specific. It is to me very specific to any extreme performance. Let me rephrase it:
The rub for new entrants in X is that the dominant X culture does not venerate balance or multiple interests. Instead, the singular and obsessive interest in X that is common among X practitioners is assumed to be the road to success in computing.
Extreme tennis players, think kids drilled from a young age to be champions, read Andre Agasi's bio, have exactly the same attitude.
As do piano prodigy's. Any group performing at an extreme has this, because it is TRUE! To be in the top 0.1% you have to devote your life to it, you won't have balance!
Do medical students, those headed towards surgery have balance in their lives? Incidentally, surgery is another one of those male dominated professions.
So please, stop making this about either men or cs, it is not.
At the beginning of this article I was reminded of Paul Graham's "Hackers and Painters."
If women tend to have broader interests, leaning towards the arts, than I would say that those that also lean towards coding would have the largest potential as innovative hackers. Although that's not the same issue as fitting in with a cs crowd... just my thoughts.
Computer science requires programming. Computer science without programming is like biology or chemistry without lab skills, or studying a language without being able to write.
Computer science is about programming the same way thermodynamics is about engines: It's possible to do it with no reference to the outside world, and no concern for what 'practical' means beyond, maybe, P and NP, but nobody cares about the people who do it like that.
I think the author is making a series of hasty generalizations. In my experience a really good developer is more likely to have interesting or eclectic interests outside of, and far removed from, programming. Development is a mentally demanding task, and those who aren't able to find a way to unplug and recharge - usually with something worthwhile and enjoyable out in the real world - don't last for very long.
I think I might add some different perspective to that. I was (and to a degree still am) one of those guys who went home from the lab to spend some more time on programming for fun.
Besides the obvious non-IT-related downsides (made me obviously less social), it also has some IT-related downsides. Even on the purely technical career path (programmer->senior programmer->tech leader->architect->???) the more you advance the more you need the skills and knowledge outside the IT field, even if it's only to keep a lunch conversation with those weird non-technical people who decide about IT spending :)
My point is that even if you consider this only in the context of your career in IT, spending your time outside programming might be quite a good investment.
I often wonder about this; which is cause and which is effect. Most of the people I have seen that are really "obsessed" with some subject were less social before they started focussing. The focus grew out of their greater available time and less peer pressure, rather than the other way around.
In college I never once doubted myself. My father was one of the first people to graduate with a computer science degree. I grew up around computers and I knew from a very young age that that was the path I was going to follow. It wasn't until very recently, a few years after graduation, that I started doubting myself. Is this really the profession for me? I coasted through all my computer science courses but I had some important interviews go wrong and I felt inadequate. I wondered if this is what I wanted after all because I couldn't answer interview questions from Amazon and others. It's not a woman issue, it's just an issue and there is a solution... someone tell me what it is.
I know I belong and sometimes I wonder don't seem to belong together here. We all have busy chores to do and things that we know that we NEED to do, but what you're studying, working on and 'doing' with your life should be something that you absolutely LOVE. I love coming up with ideas that solve hard problems, I love coding and I love staring into the dark abyss known as the global market economy and asking, "What do you want?".
If you have difficulty staring at yourself in the mirror and saying "I love what I do every day", then you should seriously reconsider what you're doing.
It seems to me that most people on HN are programers with rather broad interest.. So I don't think the programer who only lives to code is the majority, although it might seem this way during graduate school
This is just opposite of what I am thinking. I am doing too much of EE. I think about some application or the other in my spare time, draw mechanisms for robotics while I am doodling and while in class I follow my own curriculum as the one taught at my university it too slow. I am actually looking for a hobby which would take me away from the abstractions of EE and put me to a much concrete ground. Just cannot find any. Suggestions?
The size difference is basically the number of people who dropped out. A few may have dropped college altogether but many have migrated to another major, because they too doubted they were in the right major until they felt they had to take action. (Or in some cases had it forced on them by failing grades.) This is not a unique experience.
Presumably this is posted here because of the gender issue raised in the post, but given how non-unique this experience is I don't see that the gender angle adds anything. Scratch a few sentences out and any number of juniors could post this. This is not "woman doubt", it's just doubt, and the doubt does not admit of "woman solutions", it's just the same "finish the degree" solution everyone else has. I take the time to say this because I actually think adding the gender idea into this is a little cognitively dangerous; incorrect identification of the problem leads to incorrect identification of the solutions. (As every engineer comes to learn instinctively after a few years under their belt.) Those who are certain they are in the right major are the unusual ones, regardless of gender and from what I saw in college, pretty much regardless of major.