You know several programming languages and frameworks, you’re the fastest coder on your team, and best of all, your code works! So, you think: I’m a good software engineer.
You’re right. You are good, maybe even great (although there are some machines learning to code even faster than you) but those things aren’t what make you a Professional Software Engineer.
Have you ever heard about Robert C. Martin and his famous books? If not, I encourage you to read them. I’ll share some useful tips that could help you in your professional career based on the “The Clean Coder: A Code of Conduct for Professional Programmers”. The book isn’t about code function and design, this is more of day to day conduct that differentiates a good software developer from a Professional Software Developer.
Professionalism is all about taking responsibility.
- Do no harm to the code: don’t create bugs, make sure your code is tested.
- It is unprofessional in the extreme to send code that you know to be faulty to QA.
- Your career is your responsibility – it’s not your employer’s responsibility to train you, or to send you to conferences, or to buy you books.
- Know your field – if you want to be a professional, learn design patterns and principles, methods and disciplines.
- Practice, practice, and more practice – true professionals work hard to keep their skills sharp and ready.
Saying No and Saying Yes
Professionals have the courage to say No to their managers and they work hard to find creative ways to make Yes possible.
- Your manager is counting on you to defend your objectives as aggressively as they defend theirs. Both you and your manager need to get to the best possible outcome through negotiation.
- Professionals pursue and defend their objectives as aggressively as they can.
- Recognize lack of commitment words and phrases like “hope” and “Let’s see if we can get this done…”. A sincere commitment sounds like “I will do something… by this certain date…”
- Bring up blockers or red flags as soon as they come up — actively communicate.
Coding is an intellectually challenging and exhausting activity.
- If you are tired, worried, or distracted, do not code. Your code will have bugs or a bad structure.
- Spend personal time before work trying to resolve or mitigate personal issues or demands so you can focus your mental energy on being a productive problem solver at work.
- Be prepared to be interrupted and help someone — it’s the professional thing to do.
- Ask for help and ask to give help – be a mentor.
Writing your tests first:
- Good tests function like good documentation.
- TDD is a discipline that enhances certainty, courage, defect reduction, documentation, and design.
Practice, Practice, Practice
When performance matters, professionals practice.
- All professionals practice their art by engaging in skill-sharpening exercises.
- Doing anything quickly requires practice. It’s not always wise to go fast, but sometimes it is better to do it as fast as possible and is highly productive.
- Practice coding outside of work by doing kata.
- Open source: Take on some pro-bono work by contributing to an open-source project.
Every professional development team needs a good testing strategy, and we can start by following the “Test Pyramid”:
What strategies can you use to ensure that you don’t waste time?
- Meetings are both necessary and huge time wasters. You do not have to attend every meeting — be careful about which ones you decline and those you choose to attend.
- Use tools like the Pomodoro Technique.
- Evaluate the priority of each task, disregarding personal fears and desires, and execute those tasks in priority order.
Estimation is one of the simplest, yet most frightening activities that software professionals face.
- Know the difference between estimates and commitments.
- A commitment is something you must achieve. An estimate is a guess.
- Learn methods to get better estimates like PERT, Fingers in the Air and Planning Poker
- Always include error bars with your estimates so that the business understands the uncertainty.
- Don’t make commitments unless you know you can achieve them.
Stay Cool Under Pressure
The professional developer is calm and decisive under pressure.
- Under pressure? Be sure to manage your commitments, follow disciplines, keep code clean, communicate, and ask for help.
- Don’t succumb to the temptation to create a mess in order to move quickly.
Programming is all about working with people. It’s unprofessional to be a loner or a recluse on a team.
- Often programmers have difficulty working closely with other programmers. That’s no excuse. Being a developer means working with people.
- Meet the needs – collaborate with your managers, business analysts, testers, and other team members in order to deeply understand the business goals.
- Pairing is a great way to share knowledge and the best way to review code.
Get Aligned with Your Teams
Strive to have a “gelled” team.
- A gelled team is one that forms relationships, collaborates, and learns each other’s quirks and strengths.
- Teams are harder to build than projects. It’s better to form persistent teams that move together from one project to the next and can take on more than one project at a time.
Mentoring, Apprenticeship, and Craftsmanship
The software development industry has gotten the idea that programmers are programmers, and that once you graduate you can code.
- Software apprenticeship is a three-step journey: starting from apprentice and moving to journeyman before becoming a master.
- Be a craftsman – someone who works quickly, but without rushing, provides reasonable estimates and meets commitments. Know when to say No but try hard to say Yes.
- If craftsmanship is your way of life, keep in mind that you cannot force other programmers to become craftsmen.
It might be unrealistic to achieve all that Robert C. Martin suggests because in the real world some situations can be beyond your control. Our goal as Professional Software Developers should be to try to follow as much as we can as often as we can and keep striving to do better.
I read this book a couple of years ago and I can honestly say that I’ve improved my skills faster than I thought I could, I’m more confident in my job and my team trusts me by giving me higher responsibilities and challenges. I’m still learning and applying the advice as much as I can and when is possible.
Start with small changes. Remember that becoming a Professional Software Engineer takes years, so enjoy your career and enjoy the journey to becoming a craftsman.