Hacker: A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users, who prefer to learn only the minimum necessary. – The Jargon File
Engineer: A person who uses scientific knowledge to solve practical problems. – Princeton WordNetI have found myself straddling two worlds for some time now: that of the Hacker and that of the Engineer. When I started writing software back in the late nineties, I was very much a hacker. My interest in writing software came out of my constant obsession with tweaking my computer and breaking the systems my dad put in place for me. I love experimenting with and poking at systems of all kinds, and computers have offered a wonderful playground for me.
Over time, I came to understand this thing called “software engineering.” It probably helps that my dad was a programmer and then a project manager at some large firms. I came to appreciate the craft of software development as something special. Any old coder can hack together a solution, but it takes an engineer to build a stable, maintainable, flexible system. By the time college applications rolled around, I made a decision: I would go to college to be an engineer.
Two years into the Computer & Systems Engineering curriculum at RPI, I’ve come full circle. After spending countless hours with engineers studying engineering topics, I’m coming to the realization that they don’t have it all figured out, either. Especially software engineers. Heck, software engineering isn’t even really taught at the undergraduate level. Most programmers get their degree in Computer Science and head out into the world thinking a long project is three weeks. I knew I wanted something different from that, but being able to build things “quick ‘n dirty” and understand an entire system just by poking at it is as important, if not more.
Thus, my new blog: Hacker|Engineer. Sometimes I act like a hacker, and at others I act like an engineer. I see software as a craft more than anything else, and craftsmanship requires many skills and approaches. Developing software as both a craft and as an engineering discipline is critical to technological growth as we increasingly depend on software systems in everything from communication systems to power plants. This blog will be an exploration of both hacking and engineering when it comes to software (and maybe a bit of hardware, too) development.