Every engineer and engineering team wants to be successful. Success can be defined in many different ways whether it is meeting a deadline, making a customer happy, or completing work within the budget. Whatever the definition of success is, there are three keys to successful engineering, and they aren’t necessarily technical.
Success Key #1 – Maintaining Discipline
The first key to success is that even under the toughest conditions, discipline needs to be maintained. This isn’t a military thing, it’s common sense. I see a lot of teams that when things start to get tough, corners recklessly start getting cut. The loss of discipline creates additional problems that further get in the way of delivering and quickly become a self-feeding doom loop that wastes time and kills budget.
Maintaining discipline for success must be done at more than one level at the company. First, individual developers need to agree that no matter what pressure is put on them, they will follow their processes, perform their due diligence, and not allow themselves to decay into wild west programming. Individual developers form the foundation and if they crack, the whole project is going with them. Second, the collective team needs to agree that they will maintain their discipline no matter what. Everyone working together will help ensure that they are successful. Finally, the company management team needs to be on-board and understand that while there may be a fire today or a critical delivery date, the team has to maintain the discipline to make the delivery successful. All three levels of the business need to be on board.
Image Source: Beningo Embedded Group
In many cases, if each level agrees, compromises can be made whether it’s through feature reductions, changed delivery dates, or whatever. At the end of the day, this helps improve the chances of success.
Success Key #2 – Managing Expectations
A wise mentor of mine often says “It’s all about expectation management” and he is 100% percent right! The second key to success is simply managing the expectations of management and clients and making sure that everyone is on the same page. This means that we have to fight the “people pleaser” attitude and the desire to be eternally optimistic. If everyone on our team hits home runs every time they bat all year long, then yes, we can meet that deadline. It isn’t going to happen.
A great example of an engineer who knew how to manage expectations is Star Treks Scotty. Captain Kirk was always asking for the impossible on impossible deadlines. I don’t recall an optimistic Scotty ever saying that shouldn’t be a problem. He often pushed back and told the Captain it was impossible, but he’d see what he could do. He simply managed the expectation for what was asked for and then sifted through the want and the need and delivered what was needed. Sometimes that was the impossible, other times it was just enough to scrape through the situation.
Managing expectations is not a one-time thing. Through-out any project, expectations have to be constantly checked, reaffirmed, and confirmed. It’s easy to accidentally talk past one another. The engineer explaining and management or the client nodding in agreement, but in their heads hearing or just imagining something different.
Recently, I was working on a project where the bill of material cost was critical and very low. The client, who had little experience in engineering, had in their head what this very low-cost device should sound like. As engineers, we had in our heads what a device at that price point would sound like. Rather than delivering at the price point blindly, we set up a series of tests that allowed the client to hear that quality difference at various price points so that when the final design was done, they knew what to expect rather than delivering and missing expectations because we were on completely different pages. (It also allowed them to make an informed decision as to whether their expectations for the bill of material was misplaced and required adjustments).
Success Key #3 – Having Fun
The last key to success for us to consider today is that the project has to be fun. Yes, that’s right. Whatever the end product is, engineers should have fun developing it. The team should enjoy working together to deliver the product. The management team should have fun interacting with the team and reaching the end goals.
There are several reasons why this is key. First, if you are having fun, then it is not really work! This is important because if it is fun, then when extra time is required to deliver, it’s not a big deal. Next, when teams are having fun, they are often team building, growing closer together, which can decrease team turnover. No one likes to work with people that aren’t fun or tolerable to work with. The best teams I’ve been a part of have always enjoyed working together and come together to accomplish amazing feats. Finally, when fun is being had, teams are more efficient. More gets done. Issues get resolved faster.
There have been several times in my career when I’ve worked on projects where they probably could and should have been considered hell. Nearly endless 60-hour plus weeks, impossible schedules, and budgets. Too much travel and not enough sleep. My first trip to England was during such a project. We took a red-eye out to London, got off the plane, changed into suits, and went straight to the client's office. After a 12-hour day on-site, a short dinner, and then a near all-nighter to make adjustments, the second day was a repeat. After that, we got back on the plane to head home. It sounds horrible and yet, the team was so much fun to work with that I’d gladly do it all over again. It’s been over a decade since then and I am still in contact with my teammates. We had so much fun that it really wasn’t like work. We accomplished far more than we should have and nearly made the impossible happen.
In my experience, engineering success comes down to much more than technical prowess. It comes down to having and maintain discipline. It requires carefully managing expectations to deliver what is needed when it is needed not by overpromising and under-delivering. Perhaps most importantly, to have long-term success, it requires having fun doing whatever it is that you do and with the people you are doing it with.
Jacob Beningo is an embedded software consultant who currently works with clients in more than a dozen countries to dramatically transform their businesses by improving product quality, cost, and time to market. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees which include a Master of Engineering from the University of Michigan. Feel free to contact him at [email protected], at his website www.beningo.com, and sign-up for his monthly Embedded Bytes Newsletter.