Every engineering group is different. Every engineering manager values different aspects of their team. This list was put together by the engineering team at Forward Financing.

Engineer’s Flow

There is an engineering management theory called “Flow” – it’s any state for an engineer that is void of interruption and disruption. This is when engineers do their best work, can tackle the hardest problems, and why you’ll often find our room either full of energy and boisterous or very very quiet to the point you can hear a pin drop. We do many things to help get engineers into Flow. Some rules we follow:
1) Do not disturb if headset is on 2) Turn off Slack notifications when working on larger/harder problems 3) Flexible work-from-home policy to reduce visual noise and disruption from outside parties

Here are some articles that speak specifically about Flow or topics close in nature to Flow.

Scrum

Scrum is an Agile methodology that help teams get things done in as productive a manner as possible. It allows the business to track project progress transparently and get an idea of throughput based on estimation. Scrum allows the product team (Product Managers and Engineer) to be able to set expectations that stakeholders understand and abide by.

While none of us believes in burn down charts, for those people who are far removed from the process, it can act as a flag that a is sprint going well or falling behind.

The most important piece of Scrum is the Retrospective. This is an open forum to discuss what went well during the sprint, what failed, and what we can do as a team to address the issues that led to the failures. Thus far, we have evolved our process with our current team to address the issues that have arisen so far, and it has all been for the better. Most importantly, we archive our Retrospective notes in Confluence so we can track progress in fixing things that are broken with our process.

Here are some articles that speak specifically about Scrum and its importance in organizations.

Blameless Culture

Having a blameless culture is paramount for building a sustainable, long-lived engineering culture. No matter the project, bugs are going to exist. Whether it is due to miscommunication, misinterpretation, speed, lack of tests, etc., bugs will always be introduced into new and old systems alike. It is of utmost importance to have a culture of learning from mistakes as opposed to vilifying the one individual who made the mistake.

Here is a link that better describe the nuance of a blameless culture and it’s benefits to a team and it’s culture.

Technical Debt

Every company has technical debt, and it can take many forms. Some are legacy projects that engineering teams inherit with its primary architects long gone. Sometimes shortcuts are taken in order to meet deadlines. In either scenario, technical debt has a negative effect on health of systems, engineering productivity, and more. This topic, which has been discussed in length in every possible forum, is of the utmost importance due to its impact.

Here are some links about what technical debt is, and its place in organizations.

Code Review

Code review is very important in every organization. It acts as a way to educate other engineers about a project, a form of quality control to prevent bugs from being introduced into systems and mentorship as the feedback given helps engineers form better practices and habits. While code reviews can be expensive, it is the most important vehicle we have to help identify and prevent new technical debt from being introduced into the system.

Continuous Delivery

There are a lot of pros and cons around having a Continuous Delivery setup. We have most of our applications (all but our application that handles money) on continuous delivery. This methodology removes the ceremony around deployment. Removing the deployment ceremony reduces engineer frustration, increases engineer productivity, and so much more. From a business standpoint, features get released faster and quicker.

Here are some articles about what continuous delivery is and its benefits to an organization.

Pair Programming

It’s difficult to concisely speak about the importance of pair programming. Beyond the immediate impact it provides engineers, it also has long lasting effects that can’t be replaced with other frameworks. It helps form bonds of mentorship and coaching toward improving the engineer who requested the pair. It further strengthens trust and bonds between individuals as they build a rapport and help each other through challenges.

While there are plenty of pro and con articles around the internet about pairing, here are some about the positive benefits of it and why we use it at Forward Financing:

Testing

Testing is another important vehicle that helps reduce technical debt from being introduced into new systems and ensures that requirements are met. Tests are a way an engineer can programatically understand if its functionality is in fact doing what is intended.

Here are some articles about why testing is important and why companies decide to invest in testing.

Continuous Learning

Continuous learning is nothing new to businesses, but has made a recent resurgence in business culture. This framework allows companies to invest in employees by giving them new skills, reinforcing old skills with new twists, and more. This has so many positive effects on an organization that it is difficult to enumerate them all. I tend to focus on two: 1) Employee retention 2) Employee growth

Here are some links that describe what continuous learning is and why it is important.

Management

Managing a team of engineers is often likened to herding cats. It is a tall task that most people fumble through. Being the liaison between senior management and engineers also has its own set of challenges. The two most important pieces that any manager can do for engineers: 1) Guard rigorously against context switching 2) Facilitate growing trust throughout the team

Beyond those two, there is so much that happens to keep engineers happy, motivated, and engaged. Here are some articles written by people whom I respect in the industry who have gone on to build some amazing engineering cultures:

Product Development

The process around how products are developed is important, but not the end-all be-all. It is important to have structures and processes in place to foster accountability. These structures help prevent friction between other groups as they work together through a common goal. With that said, the product will always beat the process. Until something hits the hands of a customer, nothing matters until the product is in the hands of the customer.

Here are some links:

Transparency

The positive effects of transparency are no secret. Being transparent allows for more straightforward communication. It allows for levels of trust to be built that might not be achievable otherwise. It reduces worry, stress, and even friction between individuals because there are no secrets. It helps build relationships between individuals that further strengthen loyalty, empowerment, and trust.

Here are some other links from talented individuals about the importance of transparency: