As a self-taught programmer, one of the most important things I have had to learn is what professionalism means in the software world.

The problem is that learning how to code is different from learning the art and science of software engineering.

It is very easy to become proficient at hacking together brittle solutions that “work” under ideal conditions but that don’t work when under fire.

Unfortunately, because of its ease in getting started, the PHP community has a reputation for fostering these kinds of developers.

I used to dread every time I pushed code to production because while I knew the basics of programming, I had no battle-tested methodology to guide my development. I just relied on my own intuition and supposed cleverness.

The results were less than ideal.

It’s only when I began to read more widely on the theory of software engineering and common methodologies that I realized the need for professionalism.

While it is possible to reduce professionalism to a list of what to do such as write SOLID code, do TDD, etc; the heart of it is more akin to something Robert Martin once said.

He said that professionalism is exercising the duty to say no to management and insist on the proper engineering principles.

I totally agree with that statement. On your own personal projects you can do whatever you want, but when you do a job for someone else, you owe it to them and also to the people who will be affected by your code, to do the best job possible.

One only has to look at the ever-steady number of data breaches to understand this reality.

I am so grateful that the programming industry is open to people like myself who don’t have a degree.

Yet it is incumbent upon us all, but especially to us self-taught programmers, to continually strive for professionalism in everything we do.

The world is only becoming more and more connected not less. And it’s up to us to do the best job that we can to move civilization forward one deploy at a time.