What makes a professional developer?

professional Developer.png

One of the things I used to get asked by students years ago was “What makes a professional developer?". I thought I’d have a go at answering the question:

It turns out that the difference between an “amateur” and a “professional” developer is that the professional developer gets paid for their work. You become a professional developer just by selling something that you’ve made. A successful professional developer is one who creates happy customers. Consider this application:

connectToWiFi(ssid, password);
connectToMQTT(host, username, password);
while(true) {
    float x = fetchReading();
    sendToMQTT(x);
    delay(10000);
}

This is code for a data logger. It connects to the Wi-Fi and an MQTT broker and then reads and sends data values every 10 seconds. It works (which is the nicest thing you can say about a program).

The problems appear when you consider questions like “What would happen if the Wi-Fi connection fails?”. In the code above the sendToMQTT function would get stuck and the device would need to be turned off and on to get it to work again.

You might be happy to live with this, but your customer might not. Your customer would be even more upset if they only found this out after they have lost thousands of data readings because their network failed for a few seconds.

A “professional” developer would have to do one of two things: make sure that the customer knows about this “product feature” beforehand, or make the device deal with network failures.

“Going pro” means that you will have to spend more time looking for things to worry about before your customer does, but it will also lead to an improvement in everything you make.