Grrlz Coding!

There are lots of people who are launching initiatives to teach various disenfranchised groups – girls, the homeless, low-income youth – how to code. Their reasoning is that coding is a marketable skill that enables its proficients to *make things* in an information economy where manual labor has largely been shifted to groups so disenfranchised they’re treated as dispensable.

Writing code is basically making a machine do a thing. Certainly, developers need to know how to make machines do things. But it’s not enough to know that. Developers also have to know *what* the machine is supposed to do and the best way to make the machine do it.

There are always a number of options, and which one is best usually depends. It depends, to give a few examples, on how many users there will be, how much time there is, how proficient the users are, what the existing data structures are like, what the system is for, how much use it will get, how secure the application needs to be, how accessible, and to whom it should be available and accessible.

So developers have to listen to what’s requested, determine which approaches are available, decide which one is best, communicate with whoever’s making the request to verify that the right variables are being combined in the best way to get the best result, code, and deploy the code to a machine or repository or wherever it’s destined to go.

Coding is the smallest part of this, and if the other parts are done thoroughly most of the time it is only a matter of figuring out how to express the desired behavior in whatever the language is. The massive failure rate in technology projects shows that code that compiles and a viable piece of technology aren’t the same thing.

Knowing how to write well, however, is critical in every stage of the process. Writing out the expectations and the constraints in a project or part of a project sets up the constraints. Writing up the different possible approaches and their potential pluses and minuses is important to getting the machine to do the thing it does in a way that’s efficient in the environment it will operate in. Communicating with whoever wants this software made about the pros and cons of each approach and determining which pros are most desirable and which cons are most undesirable is important. When a developer writes code, that developer usually also writes comments in the code to explain what’s happening to other developers who might pick up the project and work on it. Deploying the code and allowing user access requires communication as well – telling users the work is done, how to access it, what to do if there are any problems, and what it should do and how it should do it is part of that stage.

If you can learn to write well, you can probably learn to code well if you want to. But learning to write isn’t a discrete or tidy process. People who write well often read a lot over a period of years. They read lots of things, many of which are well written. They frequently write things that other people read and they receive and attend to feedback. Often they gain this skill at school, where highly trained individuals spend time going over their work and ensuring it is as good as it can be.

This harder learning process is, of course, not what is being promoted for girls, the poor, the homeless – the people who made things and washed things and typed things on typewriters when we still did that kind of thing in this country.

Leave a comment