As we enter the new year, the Codurance team has been exceptionally busy. We've welcomed many new faces, hosted several events, and graduated another class of apprentices to become full-fledged craftspeople. Congratulations team! 🎉
One of the most enjoyable events as of late was the London Open Space. During our London Open Space, we heard from one of our co-founders, Mash Badar, who gave a really insightful talk on leadership and effectiveness. Now I know what you're thinking. We've all heard these kinds of talks before however, I strongly urge you to read his reflection on the subject, it might surprise you.
As for the rest of the newsletter, we've included lots of content that will hopefully inspire you to learn, build, and create!
Until next time,
The Codurance team
I often see software teams in permanent doldrums especially when they are working in challenging environments full of top-down management, bureaucracy, legacy systems, and lack of organisational focus. It is very easy for these teams to blame these factors, often, outside their control and rightly so. However, I believe that there are certain qualities within the team that make them more susceptible to such doldrums. These are skills broadly grouped under Leadership, Teamwork, and Effectiveness. Unfortunately, these skills are very rarely nurtured and often lacking.
Leadership is important at all levels and all members of a software development team need to be good leaders. We often talk about self-organising teams but don’t recognise that a self-organising team requires clarity of focus, competence as well as control. In his book, Turn the Ship Around, David Marquet talks about a Leader-Leader approach, rather than Leader-Follower, to create a truly self-organising team. Leadership is about taking ownership at all levels/roles within the team, ensuring that you not only understand the goal but believe in the goal, that you work for the benefit of the whole team. It is about having a clear and simple plan and collectively following and evolving that plan. Leadership is the responsibility of every member of the team. In a highly effective team, everyone is a leader.
Highly effective teams have a strong culture and everyone in the team protects that culture. The team has explicit agreements, frequent feedback to evolve those agreements, and collective commitment to honor them. The team covers members of the team when needed while remaining committed to the team goal. Its team members are focused, disciplined, honest, and empathetic.
Effectiveness is also a personal endeavour. It is about aligning personal goals to the team goals so that you are in a win-win scenario. It is about prioritising and having discipline to remain focused and creating good habits that contribute to your goals and breaking bad habits that don’t.
This is a very large topic but also a very important one. I recommend that we all take an active interest in building our Leadership, Teamwork, and Effectiveness skills. They are as important, if not more, as technical skills and certainly more difficult to master. I recommend the following books to get you started:
James Birnie's presentation, “Agile is a Dirty Word” is a wonderful mixture of dry humour, real-life anecdotes, and tales of dysfunctional business that everyone can relate to. This talk is not just a lament against dysfunction, but it’s become a playbook of practical steps that can be used to effect lasting change in any organisation.
We have a world-class team comprised of talented software craftspeople. Here is a quick video that gives you an inside look at what it's like to work at Codurance.
IEEE Spectrum is the world’s largest professional organisation devoted to engineering and the applied sciences. It's a great resource for topics that span computing, robotics, gadgets, and much more. Whether you're looking for a fun or informative read, this is an excellent resource.
Having your code reviewed can be a nerve-racking process. Your work is being judged. However, the process of review can lead to collaboration and improvement. Here is a great set of tips from German Valesco at Thoughtbot.
Here are some of the changes that have happened in the past twenty years to computer programming.
In this article, Pablo Manuelli describes the concepts of interaction-driven design as they relate to building clean, organised, and maintainable iOS apps.
User stories don't adequately cover the scope of technical improvements. Sandro Mancuso describes an alternative method for discussing valuable software increments that are more suitable for modern software development.
How to visual regression test your website with BackstopJS, plus some good practices I've picked up from using it in anger, by Mattsi Jansky.
The Codurance Barcelona team is hosting a series of meetup events focusing on TDD, programming, architecture design, and more. Sign up here to reserve your spot.
The LSCC is hosting a Coding Dojo at Moonpig on February 17th. For more details and to reserve your spot, please sign up here.
As always, subscribe to Codurance Talks to catch the latest discussions from our software craftspeople.
This podcast is geared toward professional software developers. Every 10 days, a new episode is published that covers all topics of software engineering. Episodes are either tutorials on a specific topic or an interview with a well-known character from the software engineering world.
Conversations about React with your favourite developers. This podcast is hosted by Michael Chan.
Explore the dark side of the Internet with host Jack Rhysider as he takes you on a journey through the chilling world of privacy hacks, data breaches, and cybercrime. The masterful criminal hackers who dwell on the dark side show us just how vulnerable we all are.
This book will help you get started with AWS Lambda and the Serverless Application Model. Lambda is Amazon’s engine for running event-driven functions, and SAM is an open-source toolkit that greatly simplifies deploying Lambda services. Together, they make it easy to create auto-scaling APIs and cloud services designed for serverless.
In this book, you'll learn forensic psychology techniques to successfully maintain your software. You'll learn how to apply these techniques on projects both large and small. Come join the hunt for better code!
Are you working on a codebase where cost overruns, death marches, and heroic fights with legacy code monsters are the norm? Battle these adversaries with novel ways to identify and prioritize technical debt, based on behavioral data from how developers work with code. Because good code involves social design, as well as technical design, you can find surprising dependencies between people and code to resolve coordination bottlenecks among teams. Best of all, the techniques build on behavioral data that you already have: your version-control system. Join the fight for better code!
Software is our passion.
We are software craftspeople. We build well-crafted software for our clients, we help developers to get better at their craft through training, coaching and mentoring, and we help companies get better at delivering software.