$ cd episodes/011-software-education~/podcast/episodes/011-software-education $ ls -1a ~/podcast/episodes $ cat episode-summary.txt
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!
[00:00:00] Host introductions. Multiple routes to software education: CS degrees, boot camps, self-taught, on-the-job, etc. The fading stigma of lacking a degree.
[00:05:43] No matter your path, there are some things you should learn. We wish we had learned things earlier, but if exposed to them before the pain and experience, would it have stuck?
[00:11:14] Solving the same problem over and over at code retreats but trying new ways. Learning from constraints.
[00:13:54] Some academic concepts are important to learn, such as Big O or data structures. Others go unused. Building a breadth and depth of knowledge.
[00:18:00] Testing and proofs by induction. TDD should be taught early on. Even if you'll always use a framework, it's helpful to understand the foundational concepts.
[00:24:35] No substitute for experience. Completing assignments for school is different from iterating on a product and shipping what a customer wants.
[00:26:58] Sometimes formal education teaches you something that is wrong. There are no right answers. You won't have all the requirements in front of you.
[00:30:13] Learning when to apply patterns, not just how. Every pattern includes a context of applicability.
[00:33:35] People should be part of your context for applying patterns. Examples: IoC and event-driven microservices. Dragging a developer through the sagebrush in the Old West. "Have you considered the ways in which you're asking people to change how they work?"
[00:40:15] Are apprenticeship and mentorship better ways to get a software education? Everyone on the team knows something you don't. More new developers than good mentors. People promoted to "senior" positions when they aren't "globally senior." Mentoring is a skill.
[00:47:18] Education is a lifetime pursuit. You can't just buy your way into software development. Continual improvement is required.
[00:51:32] OutroBooks mentioned during this episode:
- The Imposter's Handbook by Rob Conery
- Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
- This is Lean by Niklas Modig and Pär Åhlström
Copyright © 2022 - Crafting Code Podcast