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.

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

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.

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.

History of Software Field

About Engineering and Product Development

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.
Written on February 5, 2022