What makes a professional programmer?
I recently got an email question put to me by someone wanting to know what makes a professional programmer:
Since I have started my career, I have been working for managers who really don’t know how to program. I have been improving myself through tutorials and books. However, I still don’t know whether i’m a good programmer or just better than the guys i’m working with.
Can you tell me what makes a good programmer? Better yet, please tell me what level should a PHP programmer be at after three years of development?
The short answer:
A good programmer is able to put out clean code that works and is easy to update. Simplicity is a sign of professionalism in any profession or discipline.
In the same email, he continues to ask:
Can you give me a list of books or subjects I should know by now (three years of development). Any advice you give would be much appreciated.
Beyond PHP basics (and the core functionality), I would suggest that PHP programmers should work to learn the following:
- Object Oriented PHP
- Learn about design patterns. Important ones include: MVC, decorators and factories.
- Learn an MVC framework like the Zend Framework or PHPCake etc …
- Get deeper into PHP; understand how it works under the hood. This will help you later on when trying to decided how to most effectively build applications.
Like any other language, PHP sometimes gives you a few ways to do the same thing. It makes sense to learn the advantages and disadvantages of each for the sake of optimized code. For example, PHP provides a few different ways to interface with MySQL … you have the classic libs but you also have new object oriented methods.
When it comes to learning design patterns, it might be easier to learn a PHP framework at the same time. Why? Many of these frameworks often times provide great examples of popular design patterns.
Though the above is ideal, I’ve have seen many PHP programmers who don’t have half the skills I mention above, but were still effective programmers who got the job done.