Material for (New) Developers
A collection of books, links and videos that can be helpful for (new) developers. Experienced programmers might already be knowledgeable about these subjects.
Fundamental Concepts
The field of software development is very broad, and it keeps improving and changing constantly. Understanding the fundamental concepts has always been important, and it will still be important in the future.
The current trend is that there are limited options for purely technical roles. It has always been good to understand that technology is just a tool to solve problems and it is not the only important aspect of software development. Understanding the business and the people you work with has also always been important. Now those aspects are even more important.
Technical and Non-Technical Tips and Guides
These can help you become a better engineer, improve your knowledge of the software industry and your ability to understand people.
- The Pragmatic Programmer
- This book is filled with practical and technical advice, best approaches and major pitfalls
- Read 20th Anniversary Edition / 2nd edition
- The Software Engineer’s Guidebook
- Lots of practical information from all areas of software engineer’s work and career
- The Software Developer’s Career Handbook
- Easy-to-read material containing a lot of relevant information about what it’s like to work in the software industry
- The Goal: A Business Graphic Novel
- A novel about the theory and practices of achieving ongoing process improvement
- The comic version is quick to read and for most readers, it is likely enough
- Full novel: The Goal: A Process of Ongoing Improvement
- The Phoenix Project
- A novel about transforming IT processes to better align with business goals and enhance overall organizational performance
- This book is a homage to The Goal, and it is recommended to read it (comic) first
- The Unicorn Project
- A novel about working in software development in a non-tech centered enterprise company
How to Write Good Code
Hard to find a single good book to recommend. It is good to keep in mind that books always contain the author’s personal opinions, and you do not need to agree with all of them. Overall, the following practices will help you write better code.
Start with one of these: JavaScript | TypeScript | Python
and read more from books
- The Art of Readable Code
- More approachable and lightweight than Clean Code or Refactoring
- Clean Code
- Refactoring
- 2nd edition has code examples in JavaScript
- Philosophy of Software Design
- How to design software while avoiding complexity
After that, write more code. And repeat, repeat and repeat. You can also dive into functional programming (Grokking Functional Programming), which is a different paradigm that can help you to write better code in general.
Head First books (e.g. Design Patterns) are good, easily approachable books to read before you dive into more complex materials.
Architectures
Understand the decisions behind architecture choices.
- Architecture Patterns with Python
- Official free online version of the book: Cosmic Python
- Software Architecture & Design - YouTube playlist
- Good under 1h introduction to distributed systems architectures
It is also good to understand more about distributed systems, but it is a very broad topic. Understanding Distributed Systems is a good book to start with. It has lots of theory and also practical examples starting at part III.
System Design Interview books and courses give a good overview of how common systems are designed. They may not give you a deep understanding of those systems, but they do cover the common patterns and practices. E.g. the System Design Interview course has good brief theory and practical examples of common systems.
Keep Up with the Latest Trends
History of Software Field
- Masters of Doom - book
- Hackers: Heroes of the Computer Revolution - book
- Command Line Heroes - podcast
- Halt and Catch Fire - TV-series
About Engineering and Product Development
- Why coding isn’t enough
- “The job of a software engineer is not to code, at least not 100% of it is; it’s to solve a technical problem. So have pride in solving that problem.”
- Things they didn’t teach you about Software Engineering
- Some important aspects of software engineering that are often overlooked in traditional education, e.g. self-leadership, collaboration, and continuously learning and improving technical skills.
- How “Engineering-driven” leads to “engineering-supremacy”
- Focusing on engineering as the key driver of a company’s success can lead to negative outcomes as it can lead to neglecting the importance of other roles, such as product, sales, and customer support.
- What Silicon Valley “Gets” about Software Engineers that Traditional Companies Do Not
- In some companies engineering is not a feature factory. Engineers are expected to be creative problem solvers who also understand the business.
- On Being A Senior Engineer
- A good summary of what is expected from a senior engineer. Spoiler: technical excellence alone isn’t enough for seniority.
Books for aspiring seniors
- Extreme Programming Explained
- Practices of extreme programming, which is a software development methodology that emphasizes customer satisfaction, teamwork, and continuous improvement. Lots of modern practices are based on these principles.
Books for aspiring managers
- The Manager’s Path
- The path of becoming a manager in the software industry. Covers topics such as managing teams, leading projects, and navigating organizational politics.
- Engineering Management for the Rest of Us
- A good introduction to engineering management and what is expected from a manager. It covers a lot of the social and people-management aspects that are often new to engineers promoted into management positions.
- Turn the Ship Around!
- Explains the “leader-leader” management style, which emphasizes empowering employees to take ownership of their work and make their own decisions. Has an interesting perspective, as the story comes from the military rather than from the software industry.
