Expecting professionalism — Fernando Cardoce
We live in a software dominated world, our society depends on software. This was the first statement of Uncle Bob on the Agile warrior series in Dallas 2018, from this point forward the whole introductory speech was an inspiring push to be a professional, I can’t emphasize enough on the word inspiring. This post is my take on Robert C. Martin (Uncle Bob) opening keynote on the “Agile Warrior Series Dallas”.
Well jumping back on the subject, after the idea that the worlds depend on software, Uncle Bob carried on to make us notice how we (as programmers) have been irresponsible and haven’t taken this point seriously. Because of this, we need to develop a profession with a moral structure, it needs an oath! Why? Because at some point something catastrophic is going to happen, and then they are going to look for responsible and those are going to be the coders, and they’ll ask “How could you let this happen?”. If we can’t control ourselves, they will legalize us.
So here are the commitments Uncle Bob expects of us as professionals.
We will not ship garbage.
- All the code should be tested before we ship it!
We will always be ready.
- Ready to ship (deploy) at the end of every sprint, this means everything will be done at the end of the sprint.
Stable Productivity.
- We will not allow our project to become unstable in productivity. We know that the system has become unstable when every task becomes more complicated and takes more time.
- The phrase “This system needs to be redesign” is an admission of failure, we don’t want a new system that does exactly the same the old one”.
Inexpensive Adaptability.
- Software should be easy to change, that should be the first priority. A system that works but can’t be change becomes obsolete. A system that doesn’t work but can be easily changed, can be easily fixed.
Continuous Improvement.
- Everything should get better with time.
Fearless Competence.
- Don’t be afraid to change the code.
- Testing allows you to do fearless changes.
- A test suite should allow you to decide to deploy.
QA will find nothing!
- Manual testing becomes too expensive and takes to much time. We will make sure the code is tested before it reaches QA, to speed up this process.
We cover for each other
- We will behave like a team, we have to work together, code with each other. In case someone can’t work another can take over.
Honest Estimates
- “I don’t know” is the most honest estimate out there, but is not useful. We will never give a single number estimate, we will give 3, the three scenarios, “if everything goes perfectly”, “if everything goes ok”, and “if everything fails”. Managers should take decisions according to his risk, never with one number.
You should say “No”
- Everyone can see “yes”, you were hired because you have the tools to analyze and discern if necessary. It should be our responsibility to say no to unrealistic expectations up front.
Continues Aggressive Learning
- It’s your responsibility as a professional to get better, keep learning and improving.
Test-driven develop
- “TDD doesn’t work because of a time schedule” that’s a proven lie. Takes time to get better at this skill, but you’ll get faster once you master it and spend a couple of months practising in your “personal time”
If you ask me that list seems like a pretty straightforward set of rules or a moral structure to consider yourself a professional, this career path is not about making things work or doing the bare minimum, this career path as developers requires commitment and ethics, and our end customers and users should not pay the price for our negligence.