7 old school books each Software engineer must read to reach solid Engineer 2 level

7 old school books each Software engineer must read to reach solid Engineer 2 level

Overview

In this article I want to talk with you on what Software Engineer 2 / Middle / Regular Engineer can do to enhance his coding skills, by mastering well-established techniques, methodologies and patterns focused on the “Single Component” development area.

Further on, let’s try to breakdown this topic by using Golden Circle Model (Why, How, What)

Why?

Let’s first observe the modern Software engineer career ladder and find out - who is the Engineer 2, and what are their responsibilities?

US / EU software engineers primary titles classification:

  1. Engineer I or Junior Engineer
  2. Engineer II or Mid-Level Engineer
  3. Senior Engineer I
  4. Tech Lead or Senior Engineer II

Then there are 2 distinct possibilities to grow your career further, either go by technical (Staff Engineer, Senior Staff Engineer, Principal or Architect) or managerial path (4 more titles, which are out of scope of this article).

Typical Engineer II responsibilities and expectations are pretty straightforward, but let’s underline most important of them, in terms of day-to-day coding activities:

  • Can execute pre-designed implementation tasks solely, in expected time, quality and budget
  • Expect minimum babysitting guidance but still requires a code review by more senior staff, before merging their changes into the main branch.
  • Execute tasks in predictable manner, using best-practices and well known patterns and techniques
  • Do not overspend planned time / money budget onto tasks implementation, because of multiple rework rounds for the same MR / PR, because of low level of code maturity
  • Is able to present their work results (do a demo) to the Product Owner.
  • Can and must fit into team technological culture, is aware of engineering standards, guidelines and coding conventions.

As you might see I’ve intentionally emphasized multiple activities here, which requires Engineer II to be a good team-player, otherwise team productivity might degrade dramatically and have a sequential effect on the company revenue, which will impact the engineering team at the end of day.

The other motivators and drives, besides enhancing coding skills and being a better team player, are obviously striving to grow to the Senior and Tech Lead position, which may include salary increase and bonuses.

We’ll limit the scope of this article to the software engineers, who are working with Java, Python, Javascript, PHP, C#, C++, Swift etc stack, developing web-based, desktop or mobile applications. We’ll overview only well established coding practices, proven by time, which will help you build better software products increasing their maintainability, supportability, and extensibility.

How?

There are several ways to grow your engineering skills and be a “better coder”. The obvious question engineers are facing here is “how to identify what should I learn, what sources should I trust, and what should I focus on first?”. Well, in this case you should ask your more senior fellows a question like “What should be my individual career growth plan?” and expect them to help you compile an education plan for the next 6-12 months. The alternative way is to identify best engineering practices on your own, doing an old good research (just google the list). Or you can follow along this article to find out the battle-proved list below.

I personally find books, articles and text-graphical guides most productive, evaluating by time/value proposition, for Engineers I and II. Of course you might find multiple online-trainings and free Youtube videos, which will explain the same stuff you can get from books, in a more “entertaining” way, but, as you might guess - the old school prefers books, produced by the original authors and receiving the information from the origins. I’m not against video content, but it might not be as efficient as text/graphical representation.

The methodology behind compiling this list is simple - first of all I’ve gone through learning, applying and teaching each of those methodologies previously in my career, by going through a full technical career ladder, starting at junior position ending with Principal Eng. and CTO position, in different companies during the past 17 years. Second - I’ve battle-tested all of them with multiple engineering teams I’ve supported and happily observed how dozens of engineers grew their skills dramatically, to become better craftsmans.

Where to find time for an education? Well, first ask your manager what education framework you have in the company, but generally that should be your non-working hours solely or combined with a limited, pre-defined, amount of time dedicated for skills improvement.

How to measure that you’ve really improved your skills and not just wasted time? There are several common methodologies I use for different types of company, management, and external factors:

  1. Write a note - while you consume new information - capture the most important and revealing parts of the book, reviewing those notes after each chapter.
  2. Implement an app - spin up a free Git repo, setup an application and try what you’ve learned in practice. Don’t be afraid to get your hands dirty.
  3. Search for good code examples - analyze them, reverse engineer the open-source code, trying to understand why it was written that way.

What?

How to read the list below

Below you’ll find a well-known list of patterns, practices and methodologies, grouped by their name. The same template would be used for each topic.

  • Original source - the first, modern, compiled book release, which gained popularity throughout the time.
  • Key concepts - the core, essence, terms described in the publication, which it is built around
  • Supplemental materials - list of derivative books, interactive web-sites, blogs and videos, that revolves around the same key concepts which were expressed in the original publication. Usually, supplemental materials are a more “user-friendly” form of the similar information from the Original source.

Design Patterns (GoF)

Original source

Design Patterns: Elements of Reusable Object-Oriented Software 1st Edition

Amazon book rating: 4.7 based on 2400+ reviews

Google book rating: 96% 

Published in: 1994

Precaution: This book is 30 years old, so the environment which was actually used at the time it was written is sort of irrelevant as of today. But, the key design patterns are still relevant, like 30 years ago. So my personal recommendation - is to either use interactive design patterns catalog from list below or find a programming language specific book of your choice. Throughout your career you might use some of the patterns more often than others.

Key concepts

Object-oriented design techniques, Program to an interface, not an implementation, Composition over inheritance, dynamic binding, polymorphism, inheritance.

Creational patterns (Abstract factory, Builder, Factory method, Prototype, Singleton)

Structural patterns (Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Private Class Data, Proxy)

Behavioral design patterns (Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Null Object, Observer, State, Strategy, Template method, Visitor)

Supplemental materials


A few GoF Design Patterns language-flavored adaptation books, with additional OOD topics:

Agile Software Development Principles, Patterns, and Practices

Original source

Agile Software Development, Principles, Patterns, and Practices: Pearson New International Edition 1st (first) Edition by Martin, Robert C. published by Pearson 2013, which is an updated version of "Agile Software Development, Principles, Patterns, and Practices First Edition, 2002"

Amazon book rating: 4.6 based on 110+ reviews

Published in: 2002, 2013

Key concepts

SOLID - SRP: The Single-Responsibility Principle, OCP: The Open-Closed Principle, LSP: The Liskov Substitution Principle, DIP: The Dependency-Inversion Principle, ISP: The Interface-Segregation Principle, GoF patterns reviewed

Supplemental materials


Clean Code

Original source

Clean Code: A Handbook of Agile Software Craftsmanship 1st Edition

Amazon book rating: 4.7 based on 5800+ reviews

Google book rating: 95%

Published in: 2008

Key concepts

Meaningful naming in code, Functions design best practices, Code comments, Ways of source code structuring, Classes, objects and data structures best practices, Error handling, 3d party codes and packaging, Concurrency principles, Software Testing, Code smells

Supplemental materials

Specific language-oriented adaptations of Clean Code with an additional topics:

Refactoring

Original source

Refactoring: Improving the Design of Existing Code (2nd Edition) (Addison-Wesley Signature Series (Fowler))

Amazon book rating: 4.7 based on 950+ reviews

Google book rating: 90%

Published in: 1999 1st edition / 2019 2nd edition

Key concepts

Refactoring definition, When and how to do a refactoring, Code smells list, Refactorings / Refactoring methods list

Supplemental materials

Refactoring related books:


Test Driven Development (TDD)

Original source

Test Driven Development: By Example 1st Edition

Amazon book rating: 4.3 based on 500+ reviews

Google book rating: 96%

Published in: 2002

Precaution: This book might be have mentions of outdated technologies and programming languages, which are not widely used nowadays. The main idea here is to catch the concepts. It’s recommended to go through the original book as fast as possible and then catch up with resources from the Supplemental materials section. The “Learning Test-Driven Development: A Polyglot Guide to Writing Uncluttered Code“ might be a good sibling book to be used together with the original.

Key concepts

Test Driven Development definition, Red-Green-Refactoring cycle, Test pyramid, Unit tests, Integration tests, End to end tests, Acceptance tests, Test doubles, Test reports

Supplemental materials

TDD Related and inspired books:

A few TDD language-flavored adaptation books:

Pragmatic Programmer / Clean Coder

Original source(s)

The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition (2nd Edition) 2nd Edition

Published in: 1999 / 2019

Amazon book rating: 4.8 based on 2700+ reviews

Google book rating: 93%


The Clean Coder: A Code of Conduct for Professional Programmers 1st Edition

Published in:  2011

Amazon book rating: 4.6 based on 2000+ reviews

Google book rating: 92%

Key concepts

Engineer Responsibility, Software ownership, Time management, Estimation, Team communication and collaboration skills, Mentoring, Coding standards, Law of Demeter, DRY, KISS, YAGNI, Non Functional constraints, Debugging, Design by contract, Metaprogramming, Orthogonality, Coupling, Requirements Pit, Ubiquitous automation, Testing, Tools

Supplemental materials

2 books mentioned in this secion are pretty self-contained, and equally complement to each-other


Conclusion

If you’d ask me - what is my favorite set of practices and patterns, from the list above - I’ll say “all of them”. Literally, they’re all covering different aspects of being a “better”, more productive, pragmatic  industrial coder, so I can’t say that some are more important than others. If you’re looking for professional growth and want to stay in-line with de-facto industry standards, the compilation above might be a good start for the beginning.

The time allocated for this collection varies hugely depending on what your educational skills level and how quick you can consume and process information. My observation shows that it takes between 9 and 12 months for an average engineer to master all 6 topics, depending on motivation and spare time availability.

Please feel free to add your thoughts and recommendations on the article subject, in the comments below.

Pavlo Holenko

Open to new opportunities

1y

Most of design patterns in GOF are useless, dead or antipatterns nowadays. IMHO the top 7 should contain enterprise/cloud design patterns.

Serhii M.

Certified Scrum Master & Product Manager | Lean Six Sigma Black Belt | Agile Transformation Leader | 10+ Years of Experience

1y

It is a fantastic collection of books

To view or add a comment, sign in

More articles by Vladyslav Kolesov

Insights from the community

Others also viewed

Explore topics