Conversations about Software Engineering (CaSE) is an interview podcast for software developers and architects about Software Engineering and related topics. We release a new episode every three weeks.
In this episode of the CaSE Podcast, Sven Johann, Alex Heusingfeld, and Heinrich Hartmann dive into the concept of sensitivity points in software architecture, using the recent Volkswagen data leak as a striking example. They explore how seemingly minor architectural decisions and code changes can carry massive implications when balancing trade-offs like data privacy versus functionality. The trio also discusses the growing impact of AI-assisted development, reflecting on practical experiences with tools like ChatGPT, Cursor, and GitHub Copilot.
How do you ensure the reliability of your cloud-native applications in an ever-evolving landscape? In this episode of CaSE, we dive deep into the intricate world of cloud-native testing with Ole Lensmar, the mind behind SoapUI, serial entrepreneur and Founder of TestKube. Join us as we explore the challenges of testing in Kubernetes environments, the balance between automation and manual testing, and the evolving role of AI in shaping our testing strategies.
Theo Schlossnagle is a world-class software engineer, serial entrepreneur and owner of a butcher shop. In the podcast he unpacks the mindset, practices, and strategies that have shaped his approach to software development. From the power of curiosity to the challenges of debugging distributed systems, we explore what it takes to build resilient, maintainable software in an ever-evolving landscape. Along the way, we dive into automation of butchery equipment, the pitfalls of legacy systems, and the delicate balance between abstraction and simplicity. Whether you're scaling architectures, optimizing code, or integrating outdated APIs, this conversation is packed with insights to sharpen your engineering craft. Tune in to explore what makes great software—and great engineers—stand out.
The CaSE Podcast returns with new hosts and a renewed focus on software architecture, reliability engineering, and data engineering. In this episode we start with discussing the cost of observability, sparked by Coinbase's leaked $65 million Datadog bill, raising questions about how much organizations should spend on monitoring. We also discuss the most important content of observability training for software architects. We close with Alex' current thoughts on home automation while renovating his house.
Aino explains to Sven what skills are required to make meetings more successful. They talk about the different roles of meeting attendees. They continue with the thinking process to organize a meeting: do we need it at all? What is the expected outcome? Who should be invited? How long it should take? Do we need preparation for the attendees? Icebreakers? How do we craft an agenda? Then they discuss how to steer a meeting as a meeting facilitator, how to engage (quite) attendees and how to deal with negative people. Finally, they close with methods on how to improve your moderator skills.
Solid is a specification that lets people store their data securely in decentralized data stores called Pods. But why do we want to keep our data decentralized? What problems does Solid solve? In this episode, Angelo Veltens explains to Lucas Dohmen the advantages (but also potential disadvantages) of this project.
Stefan Tilkov talks to Mark Seemann about his book “Code that fits in your head”, heuristics about software engineering, and the role of craftspeople and engineers. They dive into three selected topics: Vertical slices, triangulation, and rhythm.
How do you enable a developer to quickly start the development of business logic of a new microservice without losing too much time on setting up everything else like monitoring, tracing, dependency management, security, configuration and much more. After the motivation, they move from service templates to service chassis, continue with governance as code and close with the possible need of product management skills to keep the chassis and the derived services current.
Sven Johann talks to Adam Tornhill about the link between how organizations write code and how teams work together. Adam Tornhill can make this link visible to help improve your team's code and your organization's work. The interview is based on Adam's book "Software Design X-Rays".
Sven Johann talks with Manuel Pais about the challenges of development teams being asked to be responsible for many topics like their problem domain, technology/programming languages, security, infrastructure and operations, UX, etc. Manuel explains what cognitive load is, which types of cognitive load exist and where it can be reduced and where not. They then discuss the four fundamental team topologies stream-aligned, enabling, platform and complicated subsystem: their benefit, how you should run those teams and which obstacles you need to overcome to be successful.
Michele shares her journey in the software industry and how she got involved in product development. Customer interviews are not just something for product people -- Michele shares concrete ways that developers can get value from talking to their customers. She also shares a few tips for how to get involved with the customer research process and how to convince stakeholders of the value of the process (if necessary). They also discuss what the different between empathy, sympathy, and compassion. Empathy is understanding someone else's context and perspective. Since empathy is not something that comes naturally to everyone, Michele shares some tips about how to learn to become empathetic and become a better listener.
In this conversation about software engineering, Lucas Dohmen talks with Eric Normand. Eric first explains the origins of his book, Grokking Simplicity. He explains how to think in calculations, actions, and data. Lucas asks him about real-life situations dealing with concurrency and how he would solve them thinking functionally. Then they dive deep into their conversation about immutability, type systems, and learning from other communities.
In this episode, web accessibility expert Nicolas Steenhout talks to Stefan Tilkov about ways to improve web sites to make them usable by everyone. They cover the basics of web accessibility, the role of frameworks, common pitfalls and how to overcome them, blueberry muffins, and the perils of snake oil vendor tools.
In this episode of the CaSE Podcast, Lucas Dohmen talks to Joy Heron about Responsible Web Applications. They start talking about responsive web design and how it works nowadays with features like CSS Grid and Flexbox. Then Joy explains how to make a website usable with assistive technologies. Responsive and Accessible — That’s how we can create a responsible web application.
Alex Bramley continuous his conversation with Sven Johann. They begin with how granular you should monitor your user journeys and then discuss error budget policies in depth. They continue on how to iterate on SLIs, SLOs and error budget policies. They close the conversation with SLO alerting.
Alex Bramley continuous his conversation with Sven Johann. They start with what external and internal dependencies do with your availability requirements and how you calculate availability if you have a microservices dependency tree. They look into how you can introduce SLOs to your organisation. After that, they switch to measure user happiness with your monitoring system, measurement windows and how to report those results.
Alex Bramley talks to Sven Johann about the basics of service level objectives. They begin with terminologies (SLI, SLO, SLA, Error Budget), look at costs of outages and discuss what reliability has to do with customer happiness. They continue with having 100% reliability is the wrong target and what’s possibly the right target. Alex then explains how to get started with collecting data about your system’s behaviour. They close the first part of this series by looking into latency SLIs.
Simon Brown talks to Stefan Tilkov about software architecture – the importance for developers, its role in agile software development, documentation and tooling, and the importance (or lack of importance) of UML.
Eoin Woods discusses with Sven Johann all the things developers need to know to bring systems successfully into production and how to keep them there. They discuss production environments, what goes wrong in production, architectural requirements for operations, cost of very high availability, stability and capacity, communicating operational concerns, observability, learning from incidents, chaos engineering and operational models (SRE, You build it, you run it, classic).
In this episode, Stefan talks to software developer Christin Gorman about her experience with very large software projects and the reasons why they fail, especially in the public sector. The two address issues of size, approaches that do and don’t work, share some of their favorite failure stories and try to enumerate some strategies to do something about them.
In this episode, Artur Ortega explains to Stefan Tilkov what GraphQL is, how it came to be, and how it differs from REST. Predictably, the two debate whether it’s better or not, but also spend some time going over its technical details and applicability to different usage scenarios.
In this episode, Markus Völter talks with Stefan Tilkov about language engineering and its connection to domain-driven design. Picking up from their past interactions in various different podcasts, the two agree and disagree fundamentally in equal parts, on topics such as the usefulness of DSLs, the costs and benefits of domain experts writing code, and the tradeoffs of various architectural approaches.
Birgitta Böckeler talks with Sven Johann about cultivating architecture principles. They first discuss what architecture principles are, why they are useful, how they are structured and how they help to guide decision making across multiple teams. They then talk about their lifecycle: who creates them, checks if they are aligned with business goals, prioritizes them, how they should be communicated, how you know they are useful and when to potentially retire them.
Joy Heron talks with Rachel Andrew about CSS Layout. Rachel shares her journey as a web developer and how the web has changed over that time. They discuss Rachel’s work with the CSS working group and how developers can get involved to improve the web for the future. Rachel also talks about the current status of CSS layout and what we can expect in the near future. To wrap up, Rachel shares some practical tips and they discuss the future of the web platform.
Daniel Bryant talks with Sven Johann about the business problems to modernize applications. They need to be decoupled from the compute fabric and the network fabric and Daniel explains the reasons for that, what products are available and what strategies the different cloud vendors follow. They move on with how to get started, questions to select an API gateway, technologies behind them and the challenges. They talk about service meshes features, especially on the canary testing side, how they work under the hood and how they help as infrastructure with application modernization. They close the discussion on how to select a service mesh product and what rollout strategies exist.
Does functional programming matter? Stefan and Mike continue an interesting conversation they had on Twitter: Does the style of programming matter if you look at it from a larger distance? Mike describes two distinguishing characteristics of functional programming: Immutable data and high-level models, and how they influence the architecture of your application.
Peter Elger talks with Sven Johann about AI as a service - commodity web services offered by large cloud providers, which make it very easy to use AI in your application just by using an API. They start the discussion with the typical AI use cases companies in finance, retail and so on have and which of those are already as a commodity available and which are not. They then discuss how those APIs are used, from very simple API calls like text-to-speech to slightly more complicated ones like chat bots or recommendation engines. They continue with understanding how you come up with AI requirements and how to (regression) test your AI service, which is often different than doing the same with non-AI code. They clarify how much AI you need to know to use those services, the cost models of them and how to get your AI to production. The conversation then moves to lower level AI services like AWS SageMaker or Google Tensorflow and how you combine them to create novel pieces of AI relatively quickly. They close the conversation with when to use specific packaged AI solutions and when to create your own AI to push the envelope.
In this episode of the CaSE podcast, Lucas talks to Lars Hupel of Typelevel-fame about algebraic design. Lars starts to explain how the expression problem views the difference between the functional and Object Oriented style of programming. He then explains the concept of an algebra – from coupling trains to CRDTs. This leads to a discussion on comprehensive and iterative thinking styles and how different styles of testing and proving work. Finally, they bring it all back to type systems.
In this Conversation about Software Engineering, Stefan Tilkov talks with Ryan Singer about Shape Up. Ryan works on the product strategy for Basecamp. Over time the company started growing, and they needed to step up how they managed their product development work. In his book Shape Up and this podcast, Ryan shares the methodology Basecamp uses nowadays.
In this episode, Stefan Tilkov talks with Felienne Hermans, associate Professor at Leiden University in the Netherlands heading the Programming Education Research Lab. They talk about programming education with a focus on people learning their first programming skills and how the current approach in schools and university is flawed. Felienne explains the concept of deliberate practice and code vocalization and answers simple questions like "What's the best programming language for education?"
In this episode, Sven Johann hosts Philippe Kruchten, the author of the Managing Technical Debt book. They talk about the research leading to the book and the practical implications the book and the research offer. They start the conversation with discussing terms: technical debt, interest, principal and then start with technical debt on the code level, e.g. code smells, tests and refactoring followed by static analysis and the prioritization of the findings. They then move to technical debt on the architectural level and go through the possibilities on estimating cost and value on those improvement and how to sell it to the business stakeholders. This is followed by explaining technical debt on the infrastructure level and how great code can become technical debt by time passing by (technological gap, software aging). After that the conversation moves towards solving the problem tactically and strategically.
In this episode, Sven Johann hosts Sam Newman, the author of the first Microservices book, to talk about security in the world of Microservices. They discuss why and where it is different to security in a monolithic architecture and why developers must care. They start with automatically rolling out passwords, credentials and API keys in a secure way and continue with patching containers and secure base images. They then continue with automatically update (transitive) dependencies if they have vulnerabilities. They close the conversation with discussing authorisation and authentication using gateways, proxies and service meshes.
In this episode, Stefan Tilkov talks to author and microservices expert Richard Rodger about his approach to microservices, which focuses on small services that exchange messages, are built using a “generalize first” approach, and rely on content-based routing to allow for dynamic evolution of the resulting system.
In this episode, Stefan Tilkov hosts well-known distributed systems expert Steve Vinoski to talk about lessons learned in 30+ years of software engineering. In their conversation, they cover topics such as what to learn and what to avoid, how to deal with zealous and disillusioned developers, the relation of engineering to other disciplines, ethics and patents, careers and coding, publishing and presenting and the benefits of doing maintenance. Steve Vinoski has spent most of his software development career working in the areas of middleware and distributed computing systems, using C++ and Erlang. He is also a long-time author, having written or co-authored over 100 published articles and papers covering middleware, distributed systems, and web development, as well as a couple books and dozens of columns. Steve has also given hundreds of conference and workshop presentations and tutorials on middleware, distributed systems, web development, and programming languages, and has served as chair or program committee member for many dozens of conferences and workshops.
In this conversation about software engineering, Gustaf Nilsson Kotte, web architect at IKEA, talks to host Stefan Tilkov about ways to build large web sites and applications with multiple teams. Topics covered include team organization and Conway’s law, horizontal vs. vertical splits, and options and tools for server-side and client-side integration.
Joy Clark talks with Lucas Dohmen about Web Front-End development. They first discuss the role of front-end development and frontend architecture. Lucas then explains his view on the role of JavaScript and the separation between front-end and back-end development. They continue their discussion by looking at the role of design and UX in front-end development and how styleguides can help. Then Lucas talks about performance, development for mobile devices and accessibility. They wrap up by discussing tooling and the faucet-pipeline.
Joy Clark talks with Rich Hickey about Clojure and Datomic and the reasons that Rich decided to design them the way that he did. They discuss the dependency problem and how we should change our method of developing libraries so that we do not introduce breaking changes. Rich also introduces Clojure spec and describes what it can be used for and how it differs from a static type system. To wrap up the episode, they talk about the best way to solve a problem (and know it is the right problem!) and Rich gives some advice on how to develop software and what technologies are worth looking into.
Sven Johann talks with Susan Landau about Security and Privacy. After defining those terms they proceed to find out why this important to individuals and societies. They discuss why its the job of intelligence agencies to collect data, but how we can protect us against them. Then Susan discusses the importance of Two-Factor Authentication, how wiretapping and backdoors work these days and how the FBI tries to unlock locked devices with “1984” terminology. The conversation moves from end-to-end encryption, metadata analysis and VOIP decryption to targeted attacks and political influence of security threats. They finish the conversation with what we can learn from Google and Sun Microsystems on privacy, security and the architectural requirements of anonymized test data.
Joy Clark talks with Peter Chestna about application security. The overarching topic of the podcast was what a developer can do in order to make applications more secure. This included talking about some of the most prevalent security vulnerabilities and discussing what application security is and what it entails. Peter also gave some great tips on how to integrate security into the development process.
In this second episode of a two-part interview, Stefan Tilkov talks to Bitcoin and cryptocurrency expert Andreas M. Antonopoulos about Bitcoin vs. blockchain tech, the programmable Ethereum system, alternatives to the proof of work approach, and using Bitcoin in hybrid scenarios.
In the first episode of a two-part interview, Stefan Tilkov talks to Bitcoin and cryptocurrency expert Andreas M. Antonopoulos about the Bitcoin system’s technical foundation and architecture. Andreas addresses common questions about Bitcoin’s usefulness, scalability, and energy consumption.
Joy talks with Vaughn Vernon about Domain-Driven Design. Vaughn shares his journey to DDD and the reasons behind his DDD books. They then go on to discuss strategic design, the broad brush strokes of DDD, what a model actually looks like and how to use bounded contexts to keep a system from becoming a big ball of mud. Vaughn then answers some questions about domain events and event sourcing, and makes a case for modelling uncertainty instead of fighting with concurrency.
Joy Clark talks with Gernot Starke about aim42, a method for systematically improving software. They discuss in detail the three phases of the process: Analyze, Evaluate, and Improve. Gernot shares his wisdom about how to carry out each phase using stories of his experiences in many different situations. In this way, listeners will get the big picture of how the whole process works: from visualizing all of the problems using sticky notes on the wall to specific strategies that can be used for improving the system.
Daniel Westheide, author of “The Neophyte’s guide to Scala” and Stefan Tilkov talk about some advanced Scala features and challenges, such as case classes and the problems they can create, algebraic data types, type classes and implicits, using the compiler for Prolog-like type level programming and programming with generic data structures.
Joy Clark talks with David Nolen about ClojureScript. David introduces the language and discusses the direction that the language is heading in. He talks about how the language is compiled to JavaScript and how it takes advantage of the the Google Closure Compiler. They then talk about designing user interfaces and how functional programming relates to UI design. To wrap up, David mentions different libraries and frameworks that can be used and recommends tools which can be used to get started programming with ClojureScript.
Stefan Tilkov talks to Camille Fournier about making a career as a manager in a software development organization. Camille shares her insights about when or why someone would want to become a manager and how to become good at it. Other topics include different levels of management from tech lead to CTO, the role of one-on-one meetings, and how managers influence company culture.
Joy Clark talks with Sofia Vaughn-Jones (née Cole) about Scala. Sofia introduces the language and describes its features. They then discuss what kinds of programs can be written with Scala and the tooling and frameworks that are available. They attempt to define what a monad is and how it can be used. To wrap up, Sofia mentions some great resources for getting started with Scala.
In this episode, Stefan Tilkov talks to Michele Leroux Bustamante about Microservices. Michele shares her perspective on microservices and what she sees as the difference between SOA and microservices: The way they share data. Stefan and Michele also talk about orchestration, getting started with microservices, platforms for microservices as well as a few short other topics.
Joy Clark talks with Alex Miller about Clojure. Topics include the Clojure language and how it compares to other languages as far as features and maintainability are concerned. The benefits of dynamic languages are also discussed, and clojure.spec is introduced as a way to gain the benefits of statically typed languages. Alex also talks about ways to structure Clojure code and gives a great list of tools and materials for getting started with Clojure.
Lucas Dohmen talks with Eberhard Wolff about microservices. Eberhard Wolff is a fellow at innoQ and wrote a book as well as a primer about microservices. He talks about what lead to microservices and the advantages, and disadvantages of as well as the preconditions for the architecture. He then introduces different styles of microservices and how they influence and are influenced by organizational structures. Eberhard also talks about introducing microservices, how they communicate with each other as well as testing microservices.
Eberhard Wolff talks with Ute Mayer about Rails Girls. Topics include how Rails Girls increase diversity in IT and thereby influence the live of the attendees. Rails Girls is a global movement and does workshops to introduce women to programming. Attendees can then join project groups to work on specific projects and apply for the Rails Girls Summer of Code to develop open source projects. The training material is free and open source - and includes information how to start a Rails Girls group. There are many way to support: Rails Girls is looking for coaches and sponsors.