What every programmer need to practice, and not only to know, in order to consider him or herself a professional?
This is a post for describing my way to be professional. But this is also a post for everyone who are working in Software Market and want improve themselves to be considered professional.
Professionalism is something that Software Engineering is in dire of. Here, I try to describe the steps I follow to transform my behavior from technician to professional. It isn’t like a walk in the park. Be professional is hard. Be professional is, sometimes, really hard.
Professionalism means follow discipline. Do the best actions. Do the best actions in the right way.
Professionalism is all about taking responsability
One. Non professionals don’t have to take responsability for the job they do. They leave that to their employers. If a non professional make an error, the employers clean up the mess.
But when a professional make a mistake, he clean up the mess.
Two. Follow the “do no harm” rule. Avoid to create bugs. Don’t release code to QA that you know doesn’t work.
Be responsible for your imperfections.
Three. Sometimes the code is hard to test. Design your code to be easy to test. Write a test to clarify your intentions before make a change. Write a test to understand how good is your design. Remember to test as much as possible. Remember to test each line of your code. Remember that you need to do both these things automatically.
Automate your test
Four. Don’t hurm the stucture. Be flexible. Use design patterns. Use inheritance or composition. Use all the best feature provide by the programming language to make your software easy extendible and modifiable. Create code that is easy to change.
Five. Professionals spend time caring for their profession. Professionals spend time working for their careers. The tipical 40 hours for week should be spent on your Employer’s problems, not on yours problems. Spend other 20 hours for week to make yourself more valuable as a professional.
Six. Practice. Doing your daily job is performance, not practice. Practice is when you specifically exercise your skills outside of the performance of your job for the purpose of refining and enhancing these skills.
Train your brain. Train your fingers.
Seven. Know your domain. Know the domain where your code runs. Know the domain your code is made for. Identify yourself with your employer’s customer. Make sure that the features you are developing are really going to address your employer’s need.
Put yourself in your employers shoes.
Eight. Programming is an act of creation. When we write code we are creating something out of nothing. We are boldly imposing order upon chaos. And so, programming is an act of supreme arrogance. But for write better code, is important share the knowledge. Be honest. Be of help. Don’t be arrogant.
You cannot win alone. Be a teamplayer.
Nine. Professionals speak true to power. Professionals have the courage to say no to their managers. If you know an estimation, a deadline or a requirement is unrealistic, it is expected from you to speak up. Not most of the time, but all the time. They are very few people who when they say something, they mean it and then actually get it done.
Say. Means. Do. This is what you should try to do.
Ten. Professionals are often heroes. But not because they try to be. Professionals becomes heroes when they get a job done well, on time and on budget.
Done a good job. Everyday.
##Further Information The good practice I talked in this article comes from the wonderful book The Clean Coder: A Code of Conduct for Professional Programmers written by Robert C. Martins. If you care about your professionalism, this is the first book that I suggest to read.