Posts Tagged ‘engineering’

The Feminine Side

Monday, February 28th, 2011

At the recent Interaction Eleven conference in Boulder CO, Cheryl Platz gave an excellent presentation on ways to encourage young girls to study science, technology, engineering, and math (STEM) in school. Cheryl’s talk highlighted the importance of this, as the number of young women so choosing has dropped dramatically since the early 1980s, and the field needs all of the bright contributors it can recruit, regardless of gender.

I agree wholeheartedly with Cheryl’s remarks, and I support her recommendations without reservation. There is indeed some sort of barrier that discourages young women from getting into the technical professions, and it is well worth tearing it down.

Computer Engineering Barbie

But something about the presentation bothered me. After listening awhile, I realized that I was feeling the “framing effect”, a well-known cognitive bias, wherein the way a question is worded affects the way people answer it. Cheryl’s insistence that girls could enjoy studying math and science sounds right to me, but the way her argument was framed seemed to blame the girls for the shortfall.

While I earnestly support the idea that more girls should study math and science, I believe that the problem instead belongs to employers, educators, and the institutions they lead. I believe that the STEM disciplines would have more success with young women if they developed a stronger feminine side.

Rather than simply “boys” versus “girls”, I prefer to think of personal inclinations in terms of one’s “feminine side” and “masculine side”. I believe that all men and all women possess both sides in varying degrees. I am proud of my strong feminine side, and I know many women whose strong masculine side makes them tough as nails.

What’s more, there are many men and boys who are more comfortable in the soft studies and who eschew the harder sciences. There are many young men who struggle with math, but who could make excellent contributions to the fields of software development, technical literature, interaction design, visual design, cognitive and behavioral studies, and other closely related fields (for example, that would describe me).

I believe that girls reject math and science not because they are too girly, but because the purveyors of STEM education are too manly, or more accurately, too pointless and boring from the feminine point of view.

There are very real differences between the sexes, and these appear at a young age in all children. There is a large and growing body of literature in the fields of evolutionary and cognitive psychology that prove and illustrate these different ways the sexes behave in similar situations.

Women are quite capable of high achievement in STEM subjects, but they are disinterested because their motivations are different. Platz asserted that while men are content to learn math or science for the subject’s own sake, women see those disciplines merely as a means for achieving broader human goals. Those goals are what motivate the feminine approach, and when the subjects are taught in isolation, they often lose interest.

What’s more, I don’t believe that the hard sciences discourage only girls; I believe that they also discourage those with a well-developed feminine personality.

This is admittedly a semantic quibble, but the framing effect is a very real thing, and the language we use powerfully influences our decisions. And when the feminine side is strongly influenced to stay away from science and technology, our entire society suffers. A solely masculine discipline is a weak and one-sided discipline.

One could make a strong argument that the feelings of frustration and failure people get from using technology were caused by our purely masculine approach to software design. Almost all of our digital artifacts are designed and built by men (and a few women with strong masculine sides) inside organizations led by the same, who learned their discipline from masculine teachers within masculine institutions using curricula and methods that embody strong masculine principles.

Bringing stronger feminine values and more feminine ways of thinking to science and technology will bring a larger, more human scale view to our disciplines. The feminine side approaches problems and group dynamics in a way that is very different from the masculine way. When some minor catastrophe occurs at work or play, I have seen groups of men standing around demanding “Who did this?” and “Who’s going to fix this?” When that same catastrophe occurs amid a group of women, they ask “Did I cause this?” and “What can I do to fix this?” This positive, supportive attitude of women transforms the whole sense of teamwork and accomplishment.

It’s certainly possible to go too far, as groups of only women can be as biased and problematic as groups of only men. By far, the strongest and most effective teams are the ones composed of both men and women, with strong masculine and feminine sides. The whole nature of the group changes for the better with mixed gender teams. When there are at least two members of each sex in a group, the dynamics improve dramatically. A recent study gives some empirical credence to my personal observations.

Unfortunately, almost the entire spectrum of education in computer and software subjects is taught in glacial isolation from any practical application that improves people’s lives. The masculine side says “Computers are great because they can do anything!” while the feminine side says “I’d be very interested in computers if you could just tell me one useful thing they can do!”

I believe that the greatest burden of responsibility for bringing women into STEM education lies with the academic establishment. Young girls know who they are and what they want just as clearly as young boys do. As Cheryl noted in her talk, women are capable and willing of engaging with technology if it gives them command of something relevant in their lives. When educators connect their disciplines to the larger world, girls will be the first to see it, value it, and join up.

Many practitioners today seek redemption in a deeper understanding of the technical tools we use to build software. But that is such a masculine interpretation of the problem. Rather, I believe that a more worthwhile wellspring lies in understanding how human beings think and behave and what motivates their actions. That is, if the disciplines of science, technology, engineering, and math were to develop a stronger feminine side we’d not only see a lot more girls entering our fields, but our fields would be much better for it.

Software Craftsmanship

Friday, March 19th, 2010

A discussion today on Twitter (kind of an oxymoron, that) about craftsmanship, reminded me of this essay I wrote long ago. It was originally published in Visual Studio Magazine in 2003. Some of the stuff I tsk, tsk over is being successfully addressed by agile and post-agile thinking, but the nature and role of craftsmanship remains unchanged.

—-

Programmers are craftsmen and craftswomen. They are commonly thought—and frequently titled—engineers, but few working programmers “engineer” things. Most  build software. They craft it into existence.

I define craft the way the word was used hundreds of years ago, when a craftsman was a skilled expert who produced practical objects, and whose work was unique and highly valued. Only the wealthy could afford such finely made, custom objects. The Industrial Revolution elevated the engineer over the craftsman, and craft came to mean anything from sweatshop assembly to decoupage. The great engines of the Industrial Revolution were made of metal, powered by steam and electricity, and designed by engineers. The revolution’s ultimate fruit—mass production—was the antithesis of craft. Everyone could afford mass-produced items. Western society traded custom-fitting and superb quality for adequate quality and egalitarian access (an excellent trade, I believe).

The assembly-line worker was neither engineer nor craftsman. Although literate, he wasn’t well-educated, and his job required only minor training. Sadly, the term “craft” was often associated with him, because he was the proximate creator of goods, and industrialization devalued the term. The craftsman’s reputation waned, and many preindustrial crafts have disappeared.

The engineer was the educated, trained expert who designed the manufacturing processes: the “engines” of industrialization. The engineer was clearly the most highly skilled person in the industrial age hierarchy. But engineers don’t actually build things. They solve complex and demanding technical problems necessary to building things but leave the actual creation to others. Engineers don’t build bridges; ironworkers do. Engineers don’t build automobiles; assembly line workers do. Engineers don’t build software; programmers do.

The industrial age is over, and we’re in the information age now. Manufacturing still exists, but even a business sage as trusted as Peter Drucker says it’s no longer possible to differentiate your company by way of manufacturing. Even manufacturing companies don’t make money by creating things, but by using software to make sure they manufacture the right things, in the right quantities, at the right times.

The shift from steel to bits has been rapid enough to generate ample confusion about our modern roles. The most important builders today are programmers, and it’s only natural that they’d adopt a title such as “engineer” to reflect this status. Language influences our perceptions and our values so using the wrong job title can derail an entire profession. Programmers’ chief responsibility is creating product, not solving technical problems. Having chosen the wrong job description, our profession finds itself suffering from a profound misunderstanding of its role. The result is failed software products, executives who are terrified of programmers, costly tech support and training, and a fruitless quest for a cure in ever more obscure engineering processes.

Although programmers solve tough technical problems all the time, software isn’t mass-produced, and it’s definitely not “manufactured” by interchangeable, marginally trained assembly-line workers. But software’s unique nature was unforeseen by any industrial age thinkers. Software can be copied and distributed without limit, so it shares the egalitarian access of industrialization, but unlike washing machines or cloth, it can be custom-morphed and configured for each installation. This “mass-customization” is a new, purely information-age concept that was neither technically nor economically feasible in the industrial age. It resurrects the notion of craft in the preindustrial sense of requiring experts’ talent, training, and skill, focused solely on a practical outcome.

Engineers primarily devise manufacturing solutions and solve technical problems. They’re rarely responsible for the actual construction of things. For example, a structural engineer devises solutions that allow a building to stand firm, but she lives in a world of paper and mathematical models and won’t lift a finger to weld steel or pour concrete. It behooves the engineer to try numerous solutions, exploring dusty corners of the problem to find opportunities for improvement. It behooves the craftsman to stay on well-known ground and to avoid costly experimentation. The engineer works on paper prior to construction, and the craftsman builds the end product. The engineer throws away paper; the craftsman throws away time and money. Both are prized for devising creative solutions to difficult technical problems, but craftsmen are most highly prized for constructing sound artifacts quickly, efficiently, and expertly, with a minimum of waste and a maximum of predictability.

I asked a friend who supervises building construction how he defines “craft.” He said it’s characterized by a proclivity to think things through, to understand the problem fully, to have the necessary experience in the job, to get results with top-notch quality, and to meet the customer’s expectations. This last point is important, because it differentiates art from craft.

A programmer friend, describing how he is a craftsman, asserted that he works the way a sculptor or painter does. He was incorrect, but understandably so, because it’s easy to confuse craft with artistry. He was referring to the demanding techniques of construction, and the pride and personal satisfaction he gets from his efforts. But art rarely has a practical purpose the way that craft and virtually all software does. It’s an artist’s privilege to change the context, form, and meaning of her creation, but the external requirements placed on software can’t be changed simply because the programmer wishes it so, and there’s little room for the artist’s whims or wanderings in the programmer’s cubicle. Art can include craft, but the reverse isn’t true. Comparing a programmer’s work to an artist’s is a compliment, not a literal analogy. An essential ingredient in professional craftsmanship is knowing how to work within the box—a box that’s always defined precisely by detailed drawings and plans that an architect created and engineers vetted.

My late father was an electrician who knew his trade inside and out.  He was bright, though not formally educated. He would confound his supervisors occasionally when first arriving at a new construction site, because instead of diving into the wiring, he would look, and measure, and mostly stand and think. He was calculating mentally how to accomplish the wiring with the greatest efficiency of effort and material. One of his bosses said, “When Bob Cooper was just standing there thinking, he was being the most productive.” He was clever, creative, and proud, but he always respected that a great result did not, could not, include any redefinition of the problem. He knew that good craftsmanship meant fabricating the best component for the whole solution. He was not free to redefine the problem, but his efforts had to be a coherent part of a well-planned whole, a design. Above all, my father was a craftsman.

Commercial programming is clearly a craft. Unfortunately, the failure of our profession to recognize this has allowed two profound problems to grow. First, programmers almost never work to a plan. All craftsmen exercise their skill within a context well defined by detailed, written descriptions of the desired ultimate form. These plans are typically devised and drawn by an architect, a role rare in the software world. Architectural plans are necessary to ensure that the work of multiple craftsmen dovetail together, and that it meets the buyer’s expectations. Most contemporary programmers work only from a list of features and a deadline.

Second, programmers are almost never supervised. Craft is by nature detail-focused and deeply involving. Good craftsmen regularly work in a state of flow, so they must depend on others to make sure that their efforts merge with those of other craftsmen. The supervisors aren’t there to keep craftsman from dodging work, but to ensure that the big picture is tended to. A well-crafted building, for example, is more than an assemblage of sturdy walls; the walls must connect properly. The craftsmen can do this, but they rely on someone else to coordinate their work.

Many programmers are expressing dissatisfaction in their practice and I’m heartened by their resultant quest for ways to improve it. Extreme programming reflects a quest for supervision (from a pair programming partner) and for a plan (from the customer). Visual object-modeling tools such as Unified Modeling Language (UML) similarly seek to plan and supervise programming by applying powerful engineering tools. Although these can’t be viable substitutes, they indicate a strong awareness of the problem.

Our misuse of language and titles gives programmers license to let practical construction imperatives slip by and to focus instead on in vitro problem solving. Examining software in the light of the confusion between craft and engineering brings previously obscured causes of many common problems and their solutions to light. Unlike engineers, craftsmen create commercial software, and they need design plans and supervision to yield the results expected of them. Good engineers love their work because they love to solve difficult problems. Good craftsmen love their work because they love to make things. Good programmers must do both, but they’re judged ultimately on the efficacy of what they make, not on the cleverness with which they make it.