Expectations of a Professional
In Uncle Bob's talk at the Software Craftsmanship: North America conference titled, The Reasonable Expectations of Your CTO, Uncle Bob discusses the expected responsibilities and behaviors of a professional software developer. He starts the talk by pretending to be a CTO and lists the expectations that he would have for an employee within his company. Here are a few that I thought were interesting.
QA Will Find Nothing
Quality Assurance (QA) should find nothing! It is not QA's job to find our bugs. Professionals have the responsibility of sending the highest quality code possible, and not releasing the code to QA until it is completely ready. QA isn't our debugger - they should have trouble trying to find issues within the code. Often times, developers use QA as a way of delaying deadlines by using the scheduling algorithm where they release the code to QA fully knowing that it isn't ready to cause delay. This is unprofessional behavior and should be avoided at all times.
Fragile Code
No code should be fragile. Software is exactly as it sounds - soft. By definition, it should be malleable and flexible and we shouldn't be afraid of touching and changing parts of the code. Professionals write code that easily adapts to change because professionals know that requirements continuously change.
Honest Estimates
An honest estimate is not a single date - it is too precise. Honest estimates are provided by giving a range of dates and what the odds are that you can deliver the completed task by a given date. Professionals know that the future is uncertain, so they provide a range of dates to account for the best possible case and the worst possible case. When being pressured to deliver by a certain date and you know that you cannot possibly do it by that time, it is your responsibility as a professional to say "No."
Saying No
As a professional, you typically know more about the specifics of your task than your employers. Employers hire you to say "No" when you know that it is the right answer. You should never say "Yes" to something when you know that the answer should be "No." It is the hardest and most important thing to do as a professional. Often times, you will be pressured and be asked to try to get it done by a certain date. When asked this question, the answer is still the same. If you say that you'll try, you admit that you are holding back and that you have extra effort in reserve. You are essentially lying, and that is completely unprofessional.
Continuous Learning
As software developers, we are in an industry that is rapidly advancing and it is our responsibility as a professional to continuously learn new technology and tools. The job of a developer is to ride the waves of change and those who fall behind may not recover. In order to avoid falling behind, professionals are constantly looking ahead anticipating the next wave. Professionals learn on their own time, and it is not the responsibility of your employer to facilitate learning. Doctors and lawyers are expected to be on top of the latest medical journals and current laws, we as software developers should be expected to do the same with the newest technologies and tools.
Conclusion
Professionals are expected to behave, well, professionally. This list of expected responsibilities and behaviors shouldn't be anything surprising, and yet not every career software developer follows all of these expectations. Our lives are managed by software. We are constantly surrounded by software. So given that our industry is affects the lives of so many, it is our responsibility to behave in a professional manner.











