Veteran software engineer John Crickett shares insights on software architecture, leadership types, remote work, unpopular programming language opinions, performance optimization, and more. Topics include software architect roles, decision-making, remote work challenges, lead code practice, memory optimization, CLI usage, debunking language misconceptions, and emphasizing performance in programming languages.
Software Architects focus on organization impact and decision-making beyond just coding.
Career progression in software engineering includes leadership roles like manager, director, and CTO based on individual skills.
Real-world coding projects enhance skills and job readiness more than theoretical knowledge or algorithmic practice.
Deep dives
Understanding the Role of a Software Architect
A software architect plays a critical role in diverse organizations by not only focusing on hands-on coding but also delving into architecture, infrastructure, and cross-organizational impact. This multifaceted position involves assessing factors like GDPR, telco laws, privacy, and security to make decisions that influence the organization as a whole, beyond just the individual team.
Transitioning from Technical to People Leadership
The podcast delves into the career progression of individuals in software engineering, highlighting the evolution from technical roles like junior developer to more leadership-focused positions such as team lead or manager. It discusses the different routes within larger companies, emphasizing the choice between people leadership and technical leadership, which can lead to roles like manager, director, CTO, staff developer, or staff engineer architects based on an individual's preferences and skills.
Importance of Practical Coding Projects for Skill Development
The podcast underscores the significance of learning through real-world coding projects as opposed to relying solely on theoretical knowledge or algorithmic problem-solving like on LeetCode. By engaging in practical projects that involve building software with depth and complexity, individuals can gain a deeper understanding of programming languages, technologies, and techniques, enhancing their skills and preparing them for job search challenges in the software engineering field.
The Importance of Architecture Over Programming Languages in Scaling Systems
The podcast episode discusses the misconception that the choice of programming language determines the scalability of a system. It emphasizes that architecture plays a more significant role in scalability than the programming language itself. Using examples like Facebook's usage of PHP and YouTube's use of Python, the speaker argues that understanding the architecture and system design is crucial for scalability, suggesting that high-frequency trading systems may require compiled languages for ultra-low latency.
Performance Optimization Beyond Programming Languages
The podcast delves into the importance of performance optimization beyond programming languages. It highlights that I/O latency often contributes to slowness in systems rather than computational efficiency. The discussion emphasizes the need for measuring and benchmarking performance, considering real-world runtime optimizations, and addressing bottlenecks. The speaker shares anecdotes about improving performance through architectural changes, emphasizing the skill of writing performant code regardless of programming language.
In today’s episode, we welcome John Crickett, veteran software engineer, having worked at Staff, VP, and C-Suite positions over the years, and now focusing on helping thousands of engineers worldwide, through his coding challenges that have you building real applications, as well as helping with the soft skills through his articles and posts about software development.
Today we cover a LOT of ground where we explain exactly what a Software Architect is, discuss different leadership types, advice to get a software job, remote work, unpopular opinions on programming languages, performance and scale, and a couple other things, so stay tuned because this episode is a true fountain of knowledge.
00:12 Who is John Crickett 01:13 What is a Software Architect 03:04 People vs Technical Leadership 03:53 What kind of decisions does a software architect make? 04:43 Is there a lot of "Thought Leadership" involved? 05:23 Do you prefer Technical or People leadership? 07:47 How did John start his coding career? 11:39 Most people don't start working at "sexy" companies 13:58 Juggling off-topic 14:32 What are the Coding Challenges? 19:03 Remote work and downtime 22:56 The wrong culture might spoil the remote environment and people care less about the work 27:05 Anonymity turns people into assholes 29:58 Why did we have a phone call when this could've been an e-mail? 33:42 Doing LeetCode vs Building Projects 36:54 Most of the time you'll be using already existing solutions 40:05 Is there too much abstraction nowadays? 41:56 Using the Command Line is cool again! 43:44 When talking about scale, what matters most is the architecture, not the language or framework 51:30 Why just switching to a "faster" language isn't enough 53:48 Go vs Rust performance comparison 54:44 Learning how to write performant code is more important than the programming language itself 55:25 The importance of benchmarking 58:33 Where to find John
Remember Everything You Learn from Podcasts
Save insights instantly, chat with episodes, and build lasting knowledge - all powered by AI.