Somewhere there's a counter argument in favor of non-critical systems achieving planned obsolence through joint failure and the economic benefit of consumers purchasing replacements. I'm not about to make it myself, but it is available.
The linked article should be taken in context -- it was published almost a year ago, when the public attitude about lending practices was quite different (and the nytimes does tend to reflect and follow public attitudes). For a sense of the period, look at this review of Senate Hearings on lending practices published the day before: http://www.nytimes.com/2007/03/23/business/23lend.html
Interestingly, the female genius stay fairly consistent across their life spans. It does not exhibit the sharp peak in the of their male counterparts. Unfortunately, the paper does not address the impact of marriage on women's productivity, only on mens.
I've skimmed, not read, the article, but it's good enough that I'll be causing some tree-death to read it slowly on the train home tonight. I might have to rebalance my algorithms v. compilers heuristic.
It's worth noting that the professional engineer or doctor is as much an ideal as the professional computer programmer. Doctors actually don't wash their hands as often as they know they should (http://www.nytimes.com/2006/09/24/magazine/24wwln_freak.html). Engineering failures occur with sufficient frequency to merit a civil engineering dailywtf (http://www.icivilengineer.com/Failure_Watch/), though thankfully not updated daily.
This is not to say that the failure of those professions to live up to their ideal should excuse us. We equally have a responsibility to the quality of our code. The solution is nothing so easy as an unread code of ethics or a well-it's-just-money justification for sloppiness. A lot of code actually does risk lives -- fly by wire systems, automated storm dams, anything in a nuclear power plant. The risking of lives isn't sufficient to make surgeons follow well known infection prevention protocols. For them as for us there have to be cultural changes which value slow and steady repeatable processes over wunderkind acts of brilliance.
Adding in some practical pointers too. If you're not in a position to enroll in an accredited CompSci program, look at MIT's free online courses:
http://ocw.mit.edu/OcwWeb/web/courses/courses/index.htm#Elec...
* Start with 6.001
* Make sure to hit one (or all three) of 6.042J.
* I was about to claim the 6.171 (Software Engineering for Web Applications) was too out of date to bother with, being dated Fall 2003, but scanning the topic list of the course, everything listed there is still a concern in my day to day work.
* Dewar and Schonberg would have you stress compilers. I would have you stress analysis of algorithms.
They argue that a good theoretical grounding is indispensable for writing good code, and that it inoculates you against future unemployment by making it possible for you to learn any programming model, and even to apply multiple languages to a single system when appropriate. Merely writing applications isn't enough, or maybe it is, but it can take a decade of personal trial and error to discover rules that can be digested in a semester with a qualified teacher.
I take issue with some of their tone. They seem to dismiss all of the cool things people have made using rapid development tools, only valuing the contributions of military grade correctness provers. I think there's room for both in our industry.
However, if you're young, and you can go without sleep, use your energy to lay the groundwork for a lifetime of code writing. It's easier to learn theory now than to unlearn bad habit later.
Finally, don't get tricked into thinking you have to choose one or the other -- you will be coding regularly if you study theory.
And don't get tricked into thinking geniuses don't need to study. Those aren't geniuses pushing that theory.
Speaking as a member of the homogametic sex, I've been lurking on news.ycomb for a few months now. About the time I was considering speaking up on an algorithms topic, this appeared as a leading link: http://news.ycombinator.com/item?id=99255. The comments included such insights as "where can I get me some of that" and "those chicks aren't hot enough for the likes of me."
Now the use of "lady hackers" has raised my hackles as well. (See the American Heritage Book of English Usage for a deft explanation of why: http://www.bartleby.com/64/C005/021.html.)
I keep lurking because the community here is small enough to wash up a few pointers I wouldn't otherwise find. But, gentlemen, I take my insights where they're welcome.
Somewhere there's a counter argument in favor of non-critical systems achieving planned obsolence through joint failure and the economic benefit of consumers purchasing replacements. I'm not about to make it myself, but it is available.