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.
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.
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,
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.
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.
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.
You'd be surprised how manageable that is, especially for introverts for whom social interaction is more of a chore than a joy.
> “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).
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?
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.
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.
It's ok not to want to be a domain expert.
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.
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.
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!
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.
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).
For brain teaser type problems, I like Martin Gardner books.
"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.
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?
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.
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 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.
---
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.
Well, when everyone around you is telling you all your problems are nails, you try to fix everything with a hammer.
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.
Why does this very basic fact elude so many?
I think those that code in their own hours, and read the blogs etc. to keep themselves up to date are the minority not the majority.
I would also have to concur that I don't think this is gender related.
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.
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.