The Clean Coder

In The Clean Coder: A Code of Conduct for Professional Programmers, Bob Martin (Uncle Bob) tells you what it means to be a professional programmer. Much of what distinguishes a professional from a non-professional can be reduced to responsibility: a professional is responsible for their project, their team, and their own career.

Protect your projects

Your first responsibility, according to Uncle Bob, is to your employer, which means doing the job that you have been hired to do.

  • Make reasonable estimates. Your project does not exist in isolation from other parts of the company. An estimate is a probability distribution of likely outcomes, not a single point in time. Many stakeholders rely on your estimates for coordinating marketing, sales, and other downstream tasks.

  • Meet your commitments. Estimates are different from commitments. If you have committed to delivering a feature or a product by a target date, meet that date.

If it can’t be done, you can still commit to actions that will bring you closer to the target. Finding out if it can be done can be one of the actions to commit to!

  • Protect your time. An easy way to ensure the success of your project is to devote the time and energy you have already promised in your estimates. Meetings can be disruptive to your workflow, and you should decline any meeting that does not move your project forward. If you can’t decline, ask for an agenda and clear goals before you accept.

Sometimes the meeting will be about something that interests you, but is not immediately necessary. You will have to choose whether you can afford the time. Be careful — there may be more than enough of these meetings to consume your days.

Protect your team

A team-player communicates frequently, keeps an eye out for his or her teammates, and executes his or her own responsibilities as well as possible.

  • Stand by your original estimates, and don’t confuse them with commitments. Your estimates should protect your team from long hours, undue management pressure, and unpleasant surprises. Don’t promise what your team can’t deliver.

Business likes to view estimates as commitments. Developers like to view estimates as guesses. The difference is profound.

  • Mentor less experienced engineers. Contributing to the growth of everyone will make your team stronger. Don’t wear your headphones to cut yourself off from interruptions. Making yourself available as a resource will get someone else on the team unstuck, which moves your project forward (Uncle Bob recommends using TDD instead of the Zone to pick up the stack if you have to drop it). “It is unprofessional to be a loner or a recluse on a team.”

Protect your career

Your employer is not responsible for keeping your skills up to date. They are not required to ensure that you are aware of cutting edge technologies and languages.

Your career is your responsibility. It is not your employer’s responsibility to make sure you are marketable. It is not your employer’s responsibility to train you, or to send you to conferences, or to buy you books. These things are your responsibility. Woe to the software developer who entrusts his career to his employer.

  • Practice coding. Uncle Bob is a big proponent of practicing code. Performing code kata before starting work will put you in the right frame of mind.

Professionals practice. True professionals work hard to keep their skills sharp and ready. It is not enough to simply do your daily job and call that practice. Doing your job is daily performance, not practice. Practice is when you specifically exercise your skills outside of the performance of your job for the sole purpose of refining and enhancing those skills.

  • Learn about the industry. Falling behind in new technologies will make you obsolete. You will not stay marketable to new employers (or even your current employer), if you do not stay current.

Reading The Clean Coder was like sitting down with a mentor and asking how I can grow my career. I would recommend it for anyone entering the profession today!