A podcast about crafting software where we discuss the importance of doing the right thing, at the right time, with the right tools.
…
continue reading
Is the mythical 10x developer real? We think so... at least inasmuch as some people regularly improve the systems they work in until they (and often their team) are far more productive. We've definitely experienced 10x systems. So join Allan and Dave in the search for this cryptid through the economic principles and interconnected practices it call…
…
continue reading
Constraints make great engineering. They aren't always a bad thing, and understanding them can help you make better coding decisions. In this episode, Dave and Allan discuss many different common constraints. Some are more obvious like technology, time, and budget. Others are easily missed but still useful: people, org charts, and culture.…
…
continue reading
Bits do not rot when left alone, but the world around the code changes. Over time, although the code itself has not changed, the value provided by it will effectively rot away. In this episode, your hosts talk explore this topic; from video games and antiquated coding paradigms to the Red Queen hypothesis and software gardening.…
…
continue reading
Are we unintentionally doing things which reward bad behavior? Sometimes company policies incentivize people to do the wrong thing, like coming to work sick because they've run out of sick days. Although we rarely have control over company policies, we can look for ways that our teams reward bad behaviors. In this episode, Dave and Allan share some…
…
continue reading
Technical debt is a metaphor which is thrown around a lot, but what is is really? In this episode, Dave and Allan discuss the metaphor and how well it holds up when compared to financial debt. Regardless of the name, we have to spend time and money addressing this unavoidable, perennial problem. So what can we do about it?…
…
continue reading
Software frameworks are so useful we can hardly imagine working without them. Yet they have an insidious tendency to invade, corrupt, and wrest control away from us. In this episode, your hosts discuss the good and bad of frameworks and offer some suggestions for keeping them at arm's length.
…
continue reading
In this episode, your hosts (finally!) share some actual code examples to illustrate some of our thoughts about crafting code. Follow along with the code at https://github.com/crafting-code-podcast/crafting-katas as we discuss how we implemented Conway's Game of Life in multiple languages. Testing strategies, optimizations, and feedback loops all d…
…
continue reading
The works of Edsger W. Dijkstra have made a huge impact on the software industry. In this episode, your hosts dive into his paper, The Humble Programmer ( https://dl.acm.org/doi/pdf/10.1145/355604.361591?download=true ), to discuss how well it holds up to today's programming world. We cover hardware, cleverness, abstraction, proofs, and more. Even …
…
continue reading
There are many benefits to having communities of practice, so long as the community continues to exist. In this episode, special guests Jon Turner and Neil Sorensen discuss what they've learned over their many years attending and facilitating the Utah Software Craftsmanship group ( http://utahsc.org/ ).…
…
continue reading
Will using simple tools help you keep your codebase simple? In this episode, your hosts try to draw a distinction between simplicity and ease, then examine how they apply to the tools we use to write code. Unfortunately, simplicity and complexity depend on what level of abstraction you're working at. Sometimes we choose to trade simplicity for easi…
…
continue reading
Programming languages are the tools we use to craft code. They have philosophies, environments, ecosystems, and idioms to consider. Picking which languages to use is an important choice for individuals and businesses. Although we all have likes and dislikes, perhaps sometimes we have to leave behind our code baggage to learn something new. But reme…
…
continue reading
Software architectures are generally described in broad strokes that make them generally applicable and easier to understand. But this is a lossy process. Whether or not an architecture is good or bad depends on context. So in this episode, Matt, Dave, and Allan share some examples of systems we've worked in to help illustrate architectural decisio…
…
continue reading
Starting a new job can be a nerve-wracking experience. There's a lot to learn if you are going to be effective in your new position. Sometimes change is forced upon you, but there are reasons to voluntarily start over. It can be an important part of our personal or career journey.
…
continue reading
Despite the near-universal agreement of the importance of software architecture, it is very difficult to define. In this episode, your hosts share what we've learned from holding the architect role (and title) at various companies. For us, the crux of it comes down to figuring out how to deliver technical value for changing business needs over time…
…
continue reading
What does it mean to be a full-stack developer as opposed to front- or back-end? Is anyone really full-stack? Is it a reflection of who you are, or is it more about how your company chooses to operate? Whether or not you have a preference for the part of the stack you work in, there is value to expanding your understanding and collaboration.…
…
continue reading
Mistakes are inevitable. In this episode, your hosts share some of the lessons we've learned the hard way through the mistakes we've made. Our hope is that some of you may be able to avoid making these same mistakes. But if not, at least know you're not alone and we can all improve.
…
continue reading
What do you need to know to be a successful software developer? No matter your path into writing software, there are some things you ought to learn. Unfortunately, formal education doesn't teach us all we need to know, and even worse: sometimes even teaches us the wrong things!
…
continue reading
Humans communicate through stories. That includes the ones writing code. The folklore of your team teaches you about your history (the hows and whys that got you here) and your ambitions for the future. In this episode, Dave and Allan (sans Matt) discuss the storytelling element of teams.
…
continue reading
Coupling and cohesion are fundamental concepts in software systems. From types of coupling to Conway's Law, Matt and Allan (sans Dave) discuss how these two ideas can affect your day to day work beyond just the formal definitions.
…
continue reading
TDD is one of the most powerful, professional practices we are aware of for designing code. It provides a consistent way to make sure you solve the problem at hand while naturally improving your code quality. This episode takes a deep dive into your hosts' thoughts on the practice.
…
continue reading
Communities of professionals don't just spring into being on their own. In this episode we welcome a special guest, Mike Clement, to talk with us about his experiences in starting and building communities. Meeting with a group of kindred spirits can make a huge difference in your career.
…
continue reading
A professional doesn't just write code, they also know when to delete it. In this episode, we discuss the problems that code can cause and share some ideas on how to go about making your codebase smaller.
…
continue reading
Practice is key to learning and developing skills. It provides us fast feedback and allows us to fail in safe efforts which can be reversed or thrown away. Playing in code can motivate us and our teams to improve, creating outcomes that employers desire.
…
continue reading
What does it mean for a software team to be effective? What sorts of things can you do to increase your effectiveness as a team? In this episode, we discuss the principles and practices which we have seen in common among effective teams.
…
continue reading
Coding is a specialized skill where we learn to communicate with a machine. Unfortunately, this can often blind us to the fact that crafting code involves a lot of communication with humans. Writing clean, expressive code communicates with other coders. Communicating well with non-coders helps us understand business needs so we can write the right …
…
continue reading
Failing projects are the bane of a software developer. In this episode, we discuss how principles of crafting software can rescue a failing project. Whether the problem is rooted in the code, the team, or the system, we can improve our feedback loops, make small but significant improvements, and focus on finishing instead of starting. Slowly but su…
…
continue reading
What does it mean to craft software? In this first episode, your hosts David Adsit, Matt Baker, and Allan Stewart discuss what we think software craftsmanship is all about. We cover how crafting code helps you find better ways of doing things, steadily add value, and build a community of professionals. We also talk about how this craft is not about…
…
continue reading