Friday, January 28, 2011

"Anyone Can Do It"

I was lucky enough to come of age in a software world in which web development was just starting to become really accessible. My first computer dialed up to the Internet using Juno, and then we got AOL. By the time I was in college, we had people putting up websites and discovering the joys of the tag. Then came php, then ASP and then Java, VB, and more and more.

All of a sudden, web development was accessible. "Anyone could do it."

We're still in that world. Frameworks abound, tutorials are just a Google search away, and many computers come bundled with at least basic tools for simple web development. Now, no one's pretending that these kinds of tutorials and frameworks are going to launch the next space ship, but still, we've created a world where "anyone can be a developer".

This was the conversation I had with some friends - all of us software engineers - last week. And the second the phrase "anyone can do it" came out of our mouths, every single one of us cringed.

No why on earth would we do that?! After all, most of us have used these frameworks and languages. Heck, we still do! It's really convenient to stand up a quick Ruby on Rails application to accomplish some purpose. And it's not like some of these tools don't scale; just because the Java pet store tutorial exists doesn't mean Java can't (and doesn't) run some very large and complex applications.

But still, we all cringed.

In the end, I think the issue is with a coder versus a developer (or engineer; I use those two words interchangeably). There are a whole lot of people who can write code that I simply wouldn't hire to develop an application. Knowing how to code is important for anyone who works around computers all day, but there are a lot of other problems to solve when building something larger than a personal website (or a basic test script!).

After all, the coding part of software engineering doesn't have to be hard. Frameworks, libraries, tools and tutorials all make life a bit easier. It's understanding software that turns a coder into a developer. Knowing how a thread pool works lets a developer size it appropriately rather than just setting "10" because that's the default or that's what the tutorial says. Understanding the architecture of a system lets an engineer work on one part of it safely without having to sit down and digest thousands or millions of lines of code.

There's no major lesson here, other than yes, let's embrace the "anyone can do it" ethos. It will develop pique the interest of the next generation of great engineers. Just be aware that it gives you a coder; being an engineer is the next step you have to take, and you have to choose to take it on your own.

1 comment:

  1. I understand why it's popular, and I understand why people like the word, but I've never been happy with the term "engineer" applied to software development.

    Mechanical engineering, civil engineering, electrical engineering, at heart all of the true engineering disciplines are about manipulating physical objects.

    With software, it is abstractions all the way down. Software people manipulate algorithms and concepts, not physical objects. I think that is a fundamental difference between software and traditional engineering, and it is a difference I think should be exploited much more than it traditionally has been.

    PS nice tags. :-)