What’s My Name? Those three words we’re uttered by the world’s greatest boxer and showman during his fight with Ernie Terrell. When Terrell refused to refer to him as Muhammad Ali before the fight, Ali promised him that he would make him. Many viewed this as part of Ali’s showboating antics which he was famous for in and out of the ring. I would like to disagree. I think it comes from a totally different place. A place that only people who hold themselves to a higher standard care about.
How does someone become the world’s greatest at anything? As with Ali, it all starts with talent. This is the foundation you build on to achieve what you want to achieve. Without talent it would be very difficult to achieve anything significant in the field you are working on. If you want to be the greatest at what you do but do not have the talent for it, you might want to put some effort in finding what you are good at and refocusing your time there. I love basketball but unfortunately basketball does not love me (let’s be honest, I am just not good at it).
What should you do if you have a team of software developers that are not good at building software? Find the ones that are very talented for your needs and get rid (fine, repurpose) the rest of them. Nothing slows down a software development team more than defects. The more bad developers you have, the greater the odds of producing defects.
Ali was undoubtedly very talented but he was also very disciplined with his work. He surrounded himself with the right people and trained in the right places to improve his skills and make them world class. He set up a training camp in Deer Lake, Pennsylvania to get away from the kind of training most prized fighters had. He once said that training in a place where you get to live in a hotel that has room service makes you soft. I don’t think he meant soft on the outside. I believe he was more concerned about being soft on the inside. He did not want to be comfortable and slide back to mediocrity which he had done many times in his career. Training in a camp where he had to cut down trees in the forest for his own firewood meant he got a great workout while keeping his mind focused on the task at hand.
How do you get a software development team focused on the task at hand? Many might say you just need the right project manager and diligent project tracking for this to happen. Absolutely not. A software development team is a group of engineers who need to be committed to delivering the best quality software they all agreed to build. Give a talented team of software developers a clear picture of the problem that needs to be solved and they will figure out the best way to engineer a solution for it. Keep them focused by moving them away from activities that make them soft. Spending hours in meetings to provide the project manager status updates of each task will not make them better at writing software. It will make them better at providing status updates (or avoiding status update meetings). The thing every single person should value is their time. If someone thinks their time is more important than yours then they are not worth your time.
Spending hours in meetings to provide the project manager status updates of each task will not make them better at writing software. It will make them better at providing status updates.
Mad Computer Scientist
Software developers need to be put in an environment that makes them better. If you have an automated build that highlights failing tests, it takes them out of their comfort zone and makes them better. If you have automated code quality checks that provides regular scores and lists out code smells to fix, that makes them aware of their weak spots and makes them better. If you have an automated deployment process that let’s them reliably release software in a repeatable way, that makes them fearless. You want a team of talented software developers that are fearless. Not afraid to tell anyone that something is a waste of time no matter who they are. Not afraid to tell another developer that they checked in bad code because the code quality checks say so. Not afraid to refactor code because they know there are unit tests to help them along the way. Not afraid to release software because they have a well known repeatable process they can trust.
You want a team of talented software developers that are fearless.
Mad Computer Scientist
At the height of his boxing career, Ali refused to be drafted for the Vietnam war and was facing a potential prison sentence. His world boxing title was also stripped away from him and his boxing license was revoked. But those we’re nothing compared to the loss he received from Joe Frazier. This was Ali’s first ever loss in his professional career. But if there was something you cannot take away from Ali, it was his pride. It was not the kind of pride in winning three world titles. Nor was it the kind of pride he had for his natural boxing talent. It was the pride he had for whatever it was he was doing right now. Admittedly most of what he did was about boxing. The thing he loved more than anything else in the whole world. The exact same thing that gave him Parkinson’s disease and severely hindered his quality of life at a very young age. It is true that the candle that burns twice as bright, lasts half as long. But those who live to the fullest have no regrets in the end. This is exactly how Ali lived his life. To be the greatest, you have to be great at what you do ALL THE TIME. This is why Ali kept on fighting in the ring even after everyone, including himself, knew that his time was up. But that relentless no quit attitude is what embodies his spirit. The desire to do better everyday especially after getting horribly beaten in a fight is what kept him going his entire life.
No amount of unit tests or code quality checking will make your software development team great… forever. Software entropy is the equivalent of father time for boxers in software engineering. A culture of we can do better needs to be ingrained in every single one of your software developers. This culture can only be grown by maintaining the discipline to update tests, improve code quality scores and make automated release processes more efficient. EVERYDAY. Every member of the team needs to have a desire to make their software better. Every software developer needs to have pride in the code that they write. Even if it was just during the time you wrote it. I have written horrible code that I was extremely proud of when I wrote it. I did not know any better back when I wrote it but my pride made sure I would revisit it and make it better the next time I wrote something similar.
Software entropy is the equivalent of father time for boxers in software engineering.
Mad Computer Scientist
So, why was Muhammad Ali so upset at Ernie Terrell during that fight that he found it necessary to punish him so much? Because he was The Greatest.