The Tools and The Professional

On the most recent episode of the –force podcast, software developer Ash Furrow discusses professions and how tools do or don't make you a professional in a field.

Anyone can program a computer, you can program a computer with flow-charts if you wanted to. The software exists that will let you make programs with flow-charts. It's stupid.

You don't get to call yourself a software developer, though, if you can't think about not how to do something, but why you're doing it that way.

I disagree because I don't see the implication following. The tool I'm using does not necessarily mean I can't be a software developer in any true sense of the term (or more generally, my tool does not necessarily stop me from being a professional). If a tool abstracts more of the complicated bits away from me, it's perfectly possible for me to be just as good as a software developer, and in fact, I think in some ways it could make me an even better developer.

I'll use an example which hits more close to home for software developers to illustrate: memory management.

The original way for a developer to manage memory is to do so manually. This means the developer must have an intimate working knowledge of the computer environment, and must understand how to control the memory of the system.

A newer way to manage memory is to have the system manage it for the developer. This relieves the developer of having to worry about doing it, and thus makes it easier for the developer. Providing the automatic memory management system is implemented properly, this means the developer doesn't need to understand the system in the same way as traditional memory management.

It does not mean the developer can be completely careless about computer memory, it only means they don't have to care about, and thus justify, the terms relieved by the system.

So if the details of computer program writing are abstracted away from me while using a flow-chart based development tool, this does not necessarily mean I'm not a real developer. I don't know about all those details because I don't have to. The same could be said for using a high-level programming language like C over using straight Assembler instructions. As a C programmer, I don't have to know about registers, all I have to know is how to store values in variables. It doesn't preclude me from being a software developer any more than using a flow-chart development environment over C would.

Speed of Light