Expectations
Day by Day
Today, building software is much more challenging than it was 10-20 years ago. Companies do not want to stop and do the right thing; at scale, it is almost impossible because of competition, industry pressure, and various other reasons. So, you must learn how to improve as you go, or things will worsen no matter what. Every single company has legacy systems; in the past, it was often just one; today, there are always multiple legacy systems, all distributed monoliths full of terrible decisions, anti-patterns, and hidden bombs waiting for you during features and bugs.
Often, an engineer needs to figure out things that only exist in the code; there is no documentation and no one to talk with, so for engineers to be successful in such environments, they need to learn how to extract information effectively from the code. Read code, debug code, and write down your own understanding is the way forward to navigate such complex waters.
The other part of the puzzle is the UX, followed by UI or experience. However you call it, you probably (for the frontend/mobile) have some scratch, prototype, or flow in a tool like Miro / Figma. That can be valuable even for backend engineers because you understand what's happening to some degree.
Unspoken Expectations
Larger Planning
Even if your team does planning, there is always more considerable planning happening outside of your team's scope, whether you use SAFE or not. That planning is often part of even larger expectations, which can be per quarter or, in worse cases, multi-year. It's easy to get blind just looking at the sprint and miss the big picture.
Director Due diligence
Usually, directors monitor engineering managers. That cycle can be per sprint or month, depending on how many teams the director needs to overwatch or even how many proper engineering managers he has. It's common to have gaps and a lack of managers on teams. This is not a problem with the right talent in place, but it could be a source of issues that will not happen immediately. It will take some time. Like any managers, directors have expectations of any engineer's delivery and performance; even when they don't say it, believe me, it's always there. The higher the seniority of the engineer, the higher the expectations.
Measurements and Awareness
I believe in explicit measurements. Think about this for a moment, if you do not measure, how do you know how long it takes, and how can you improve it? In an F1 race, where the team does not measure how long a car takes to do a lap, how will the team know if:
- Is the pilot driving faster or slower?
- Are the new tiers working better or performing worse?
- Does the new car engine make the car more or less competitive?
- It's on you: Understand that no matter what happens, it's on you (delay? It's on you, missing details? It's on you, don't know how to test? It's on you, it's taking a long time? It's on you.).
- Flag it early: The best moment to flag problems is at the beginning of the work. Usually, engineers are pretty chill and figure things out as they go, but not flagging issues at the start is a big mistake. Flagging matters initially, like lack of details, missing rules, insufficient information on how to test, etc., allows people to calibrate faster. Better sooner than later.
- Measure it: IMHO, having a simple Excel file where you have the link of your ticket, plus the day you start and the day you ended, capture the expectations of being done in days by your direct line manager is a great way to build ownership and know your own times.
Reality and Chaos
Nature of Things
IF your team never does automated tests. It's very easy to keep that going forever. Because we enter on the "Auto-pilot" and the power of the habit make that happen effortless. That's why we must replace that bad habit with a good one, doing tests on all tasks, for instance. After 2 sprints, I would say it will be automatic, and you will make it effortless.
The same goes for awareness and performance; if you are always paying attention to your performance, at some point, you will do that without effort, and it happens naturally. It's all about repetition and discipline.
The first steps are always harder; people come up with all sorts of excuses:
- I don't like to read
- I don't like to read papers
- I'm doing great at work already
- It's okay to take 2 weeks to deliver a couple of files
- My team will never accept change
- We don't have time to change anything
- If I do refactoring, I will never deliver the story on time
Nature of People
People in nature want to do the right thing and want to improve. However, be very careful with what you do every day because that's what defines you, it's not what you think; it's what you do or what you do not do every day. The more you push people, more resistance you got. The less you push people, the less chance you gonna get. More meetings you do, less time your have to think and reflect. It's important to have time to think and reflect, even if you need to do it outside of work... do it.
Keep raiding the bar and challenging yourself. It is the best you can do for yourself and your team. People are social animals; when enough people deliver the same things and do the same things every day, the magic happens.
Extreme Ownership
Here is the truth, own it all. Every single task you get, do it above and beyond everybody expectations. Does not matter if they told it's your responsibility act it like you are the CEO and you own the whole company. The more ownership you take, the more you care, the more you act like an owner, deeper you will go and better you gonna work.
Ownership can be tricky when you do not agree with the decisions, or you instead do things differently. That does not mean you cannot still put your finger prints, your belives and make it your way, even following somebody else decision. No one call one the shots, even the CEO of a company. Learn how to play the game by taking ownership of even the worst problems, the worst code bases, the worst UIs, and the worst tests. Make them better.
Own it, even if you hate it.
I build systems, and delivery complex projects at scale that I disagreed with the design and architecture decisions, that did not stop me to do a good job and improve other dimensions like testing, observability, migrations and be proud of the results.
Discipline
Discipline is everything; the more you pay attention to expectations and tune into hidden variables, the more effective you gonna be. It's not obvious. But the more you pay attention into details, and be curious, easier it gets over time.
The reality is that in tech, documentation is never good enough and will never be. So there is no scape, we need to figure it out. By searching what exists in wiki pages, looking at Jira tickers, reading slack challenges, reading code, debugging it, and asking questions around. The more you exercise this muscle, the better you get, and the faster you figure out things. You need discipline and proactiveness to do it everyday, and belive me at scale you need it.
It's easy to raise your hands and say, "I'm blocked," or IDK. This exists. Go figure it out.
Better Managing Expectations
Here is a summary of how we can do better, how we can better manage the expectations we get, even when these expectations are not explicitly communicated. You can know and do this:
- There are always expectations - even if no one tells you.
- There is always a date (even if people do not tell you).
- Few files should be done in 1-2 days max, 2 weeks no PR is bad. 2 weeks 1 PR is bad.
- Measure your own performance in an Excel file, explicitly ask your direct manager about expectations in days, and do not use story points.
- Own every single thing you do, make it better, every single file you touch.
- Do things daily, read daily, code POCs daily, and ask questions daily.
- Before you start any task, make sure you have what you need, if you don't have communicate as early as possible.
- Have a hacker mindset, go ask questions, go read wikipages, go read the code, go debug the code.
- Start your day with goals in mind = what did you finish today?
If you care about your work and want to do better, want your team to do better, but struggle with day by day and expectations, check out Continuous Modernization, my third book. Learn more on how to change the word a little bit every day.
Cheers,
Diego Pacheco