Tiny ideas to encourage girls to explore mathematics and physics - 8: Computer programming: not for geeks only!
I know many (very many) women winning their bread as computer programmers. Yet, computer programming is still considered male turf, and so many girls decide not to follow this career because it's "unfeminine".
Is this to be held true?
As usual, it depends on many aspects. But, I maintain computer programming may be a very attracting activity, once you place it in perspective.
I'd first like to mention some things computer programming seems to be, but is really not.
What computer programming is "not"
First, it is "not" a fight-against-the-machine. Not any more, at least. In the first times, when Lady Ada Augusta Byron, Countess of Lovelace (1815-1852, mathematician and first known computer programmer) conceived the first program, sure a lot of fight and bravery was needed (computers were mechanical - "hardware" in the fullest sense!)
But now things have extensively changed. Thanks to powerful languages, now it is possible to write programs in simple and effective ways. You have to apply, but it isn't that dramatically difficult (more later on, in a section on "learning to program"). To the point some dinosaurs (me included) self-learned it.
The attitude of "fighting against the machine" is still diffused however, although the figure of the macho geek is in steady decline in these days. But don't let this condition you perception too much: soon this way will be extinct.
Programming is also not "writing programs for a computer to execute them". Writing programs always means building tools someone will use. A wonderful opportunity to connect with humans, if you accept this point of view.
There are countless examples of programs no one loves to use because they have been written "for the machine". As I noticed (very often as "user" of computer programs) technical brilliance and a high IQ may be just a starter for a successful computer programmer, but her/his golden key is really in emotional intelligence.
Actually, writing a program someone will execute on a computer requires an extensive amount of empathy. You may imagine your user, in very concrete terms, including a plausible life history and current concerns (like "I have no time, my kids will exit school in an hour!"). And then, try imagining her/his reaction to the program you are building as it is. How would you feel, would you be that other fictive person? What, with a different person? (You can emulate various people as "users" - maybe on a quite wide spectrum: young or elderly, men and women, with or without children, ... The combinations tend to grow fast, but nonetheless it's amusing to sample some of them, imagine their reactions to the program, and evolve this so that they feel reassured and confident of what's going on.)
Finally, programming a computer means not "marrying a programming language". I admit having never joined a computer programmer forum, because the kind-of wars of religion about which language or practice is better scare me (the type of interaction is decidedly not as in Pulsewire - you find many passionate and caring people, but also jerks flaming and insulting on each others). But also, I know this is a big loss of time: my question is never on which language is the most powerful, but rather which (of the few I know) better suits some specific needs.
There are many other things computer programming is not, but I'd like to leave them to your discovery. The lists are very personal and, thank goodness, "subjective".
What computer programming "should be" (and no one prevents to)
That writing good program is (or should be) highly empathetic I've already written.
But that's not all the picture. There is more.
For example, writing a program is very seldom a linear path from data to solution, but rather a sort of "growth". You start with something extremely small (maybe, which does nothing). Then you add a feature and look what happens. You test. You try the program emulating your test persons. Then you add another feature (or refactor the old code because you discovered it can get better).
That is: the program may grow as an embryo would into a womb. You basically care of it and its users, with (OK, a lot of technical skill, but first and foremost) a loving attitude. Staying meanwhile "detached" from it: I see some programmers identify themselves with these mental creatures, and with the job of programming computers (you easily spot them, because they will try to convince you their program is perfect even if it is blatantly wrong).
The attitude of writing better and better programs, learning and "letting them grow", is quite diffused. I have a myth book in this way: "Code Complete", by Steve McConnell. Sure is an attitude not matching the all-in-one perfect geek, but lets you evolve gradually.
Besides, I convinced myself that web-thinkers tend to have significant advantage over the typical linear-thinkers you imagine finding in this field. Writing programs demands a lot of contextual thinking and care of details, and I understand it's very well suited to the average "female mind", maybe better than the single-minded and machine-oriented average "male mind", the prototype of the "engineer".
What's quite sure, some of the male programmers I know brag a lot, identify themselves as "programmers", take many stands in favor of some programming language (the one they know) against all others, and invariably do not meet time schedules. Female programmers on average may appear more quiet, but produce more code, very often sturdy-robust-simple-easytomaintain-easytouse. And meet deadlines.
When you happen to read a program written with love, you notice. You see the comments, informative and well conceived to "explain", not to just rephrase code at random. You see the variable names, well invented and explaining. The clearly laid-out logics, written so that anyone may follow and, if necessary, change.
But you can also immediately spot the typical geeks' code: thrashy, with no evident logics, no comments (the few present would be better ignored - and often written in a simplified syntax like "Me-Tarzan-Du-Cheeta"). With (distinctive mark) prompts like "The system has encountered condition 0xDAF5 on line 0xFFA601A5" (I've seen one!) A true maintenance and use nightmare. The kind of programs no one would use, if not threatened to death.
Programming may be very "feminine"
Of course, it depends on who writes the program. But yes, programming a computer may be a very "feminine" activity.
With (I said) a lot of empathy. (A flood, if you want and have time: the more you use, the best the result for users and maintainers).
It's all about assisting something to "grow" and develop (not just conceiving once and then just "deploying"). With results which are almost always greater than expected.
It's multifaceted, ideally suited to a web-thinker.
It's a human activity, in which you may express as you would with a piece of artwork.
And, so much more!
Stated this way, doesn't it seem the contrary of a geek activity?