Engineering Guide

NOTE: This is a WIP, a rough collection of my thoughts on being a Software Engineer, Managing Software Engineers, Managing Managers of Software Engineers, etc. I will revisit and refine this over time, but I do see value in simply the collection of resources and how I feel they are applied.

Introduction

Learning to be a great Software Engineer takes experience, which takes time. You must make mistakes, but I always prefer to make new mistakes and learn from those who have already written about theirs.

Most can expect to spend 20+ years in this field, thus, the desire to downgrade titles and grant Senior roles to individuals with less than 5 years of experience conflates the meaning of the roles. So when I refer to a Junior engineer with 5 years of experience, it’s in the course of a 20+ year career and is not indicitative of title.

Wisdom takes time and experience and mistakes.

Always strive to be the pragmatic optimist in the room. If that failes, aim for the Techno-Optimist.

Junior Engineering Resources

Junior engineers with about 5 years of experience would bennefit greatly from the following resources. If you try to learn these lessons too early you may not have enough experience to understand what is being taught. Additionally, within the first few years of entering the field, there’s so much being learned about how your first 1-2 companies function that additional continueing education is lost on most.

Mid-Level Engineering Resources

As you gain experience you will have larger and more difficult challenges to face, your responsibility increases and the impact you have on your organization and the others around you will grow. Mistakes you make will cost the company more money and it is increasingly more important that you provide technical direction to those more junior and guideance to those managing you and your project.

Senior Engineering Resources

As you approach senior+ status you will be held to a higher standard, especially when it comes to communication. This is where many engineers start to falter, up until this point you needed to gain deeper technical knowledge, but now you need to understand more about how organizations operate, how to communicate with stake-holders, product-management, leadership, and cross-team. The resources presented here are to help guide you in improving communication of technical details. Someone who isn’t technical isn’t less competent, they are competent in different areas, you must maintain your humility to work well with others at this level.

Data Analytics

I’ve done my time in the data space, and approaching this from a software engineering background has given me a whole new appreciation for the isolated world we operate in. Data Analytics has been living in the world of pre-repository up until recently. This is a very fast-paced world compared to software engineering, mostly due to the differences between Data and Software and the rapid pace in which the Data Professionals are catching up.

Management and Leadership

I have lots to say about management and leadership topics, but for now will leave you with only my two favorite books on this topic.