Find below my personal and subjective (!) tips for engineers - regardless of their level of “seniority”💡 (unordered)
🎙️ Expectation management is key to success. It’s totally fine to deliver late. But make sure to inform stakeholders on a regular basis and not the day of delivery. Come up with workarounds (reduced feature set etc) and be solution oriented.
💭 Think before you build. Create diagrams, notes or tests before diving into implementation. This helps you to understand the full magnitude of a feature and identify potential edge cases early.
❤️ Do what you love, love what you do. Solving puzzles can be tough sometimes (as any other job); if you like doing it, it makes your life a lot easier. Also make sure that you have a healthy out-of-work life and spend time with family, friends and your side projects.
🧹 Leave the world (code) a better place. No need to refactor all at once. Fix code smells, add missing tests or documentation and refactor that tiny part that you are working on. The next engineer will be happy to continue from there.
😎 Be pragmatic, not dogmatic. Most of the times you’ll get to 90% of the result with 20% of the efforts. Consider if the last 10% of automation, features, etc are worth the efforts.
👑 Prioritization is king (queen). A task is never equally important to another one. Make sure to prioritize accordingly. If you are lacking information to do this, involve your manager and make your problem their problem. You only can do so much on a day so make sure you’re doing the important things first.
👥 Reviews are not just a formality. Review each others code and thoughts regularly and provide meaningful feedback. Nitpicky and code style comments are OK but don’t lose the big picture over it. Having a passing test doesn’t mean the solution is correct. Fact-check the test to ensure it’s validating the right thing.
💬 Communicate. Whether it is with clients or colleagues, communication is key. Talk with your team, share your intentions, ask questions, offer up solutions when asked for help, say when you don’t know the answer and say “thank you “.
(Guest-tip from Heidi Puk Hermann Schwartz)
👻 Be visible. I know, some are more introvert or extrovert than others. Try to take part in discussions (can be written as well) to make your opinion count. A nice little hack is also to do a written summary of what you did today (post-day daily) in slack. This will give you visibility within your team and company, create some structure for yourself and serve you as a summary for the next mornings’ standup.
🤖 Automate as much as possible to get rid of repetitive tasks (also: be pragmatic about it). If something requires your action multiple times a week try to automate it. Build tools to enable others, non-engineers, to configure your solutions (eg Admin Panel or similar). This allows you to focus on your work while product managers or others can react to configuration changes.
📚 Keep learning. Follow blogs, read books or discuss different approaches and extend your knowledge with new techniques. You don’t need to „use“ it right away, but knowing various approaches will help you to put anything you build into perspective. But watch out that you don’t fall for hype-driven development scheme. There’s no silver bullet out there.
👩🏫 Onboarding is super important. Try to join your company for an onboarding week in their headquarter. It’s not only about getting onboarded to tech stack and engineering practices. The magic happens when you get in touch with all people from various departments and a motivational and visionary onboarding from the founders. This gives you insights into their daily work and struggles as well as the big picture for the company and it’s mission. That’s why we do this a full week every month at Monta.
☎️ If there is a significant imbalance between people joining a meeting on-site vs remote, make sure to treat remote people as first-class citizens. If you are sitting in a meeting room use best-in-class microphone and camera to make the experience seamless. My favorite “hack” to make everyone feel included is to join meetings individually - instead of sitting in a meeting room, just dial in separately so everyone is participating “remote”.
🏋️ Find perk equivalents in other countries you’re operating in. Headquarter has a nice gym in their building that can be used by employees? Give your remote people access to Urban Sports Club or similar. Also bring people together as often as possible (and reasonable). For important kick offs, off-site days, company trips and engineering workshops. Being able to putting a person behind a slack avatar can make a hell of a difference for productivity and communication.
✅ Write reasonable tests and make them part of your routine. This will not only give you some extra assurance but also force you to craft code that can be abstracted and tested. You’ll learn how to deal with mocks, interfaces and repositories and your code will get more maintainable and extendable. Don’t aim for 100% coverage unless it is a super business critical service, but do the tests that make sense. Isn’t it satisfactory to see the green check marks after running them?
📝 Structure your pull requests using pull request templates. Add some hygiene check marks as a reminder for any created PR, eg:
- Did you add tests?
- Did you update relevant documentation and api specs?
- What kind of change is this? (breaking change, bug fix, new feature, …)
- Reference to ticket system etc.
GitHub’s pull request template is easy to set up and you’ll get confronted with these questions / reminders for every PR you create. They also serve as a todo list for the reviewer.
📊 Add monitoring and alerts to your services. It’s super easy to write prometheus metrics which can be visualized by grafana or similar. Super useful to get insights into server and service metrics and KPIs or to visualize potential errors. Example: in our data forecast service we track how much data ahead we have (eg 33 hours) and send alerts when we reach the minimum threshold (eg 12 hours). This allows us to act before missing data becomes a problem for consuming services.
💚 Be a role model for our society. Odds are that you earn more in engineering than the average person out there. Use that luxury of not needing to think what to buy from the supermarket to do the right things. Donations are nice, but there are other things too that have a huge impact:
- Volunteer to help at school of your kids
- Study reasons and benefits of the vegan movement and eventually apply this to your life style to safe animals, the planet or just eat and life healthier
- Support people that haven’t had the luck or prerequisites that you had; help serving food to people in need or check out what you can do within your community / neighborhood
- Mentor people from underrepresented groups
You’ll be excited and surprised how much you can contribute and how fulfilling it is. 🤩
💼 Think twice before pursuing this new fancy “head of”, “engineering manager” or “tech lead” position. There are so many different tracks in engineering (individual contributor, tech advocate, people management) - finding the one that suits you best should be your priority over hunting a career path or title that might not make your happy. Also salary wise you can stay out of people management or lead positions and get a great result. At Monta we created a career and salary framework that treats individual contributors on par with manager tracks.
👩🔬 Add some extra juice when programming commands, jobs or migrations. Especially if they are irreversible or have huge impact (eg sending out emails) make sure to add flags to simulate the output. This takes away the fear from running these and makes your live easier when you’ve to apply updates at some point in time. I also encourage you to add logs and relevant statistics to them, eg number of changed entities, number of skipped entities or failed entities.
🏗️ Your Dev Ops and infrastructure team is always under heavy demand. To mitigate, you can do a couple of things, just as Jonas Hermann Schwartz did at Monta:
- Educate the team on infrastructure and tooling
- Make use of IaC (Infrastructure as Code) and give developers access to it via GitHub / Pull requests
- Have a dedicated support channel to avoid ad-hoc requests in DMs or all over the place
- Build tools that allow developers to change simple things (like environment variables) or run commands
🗣️ Provide feedback - and this goes both ways: make sure to give immediate feedback to your managers and team members. No need wait for the next feedback meeting, bring it up with context when it happens. Of course this requires a good feedback culture, but you are part of this :). Take feedback in, don’t be defensive but constructive and use it to improve yourself, processes or the company.
🤗 Soft skills are important! Continue improving them continuously and never stop. This includes communication skills - how you talk with other people, colleagues or customers or how you convey information within the team - but also many other skills such as time management, problem-solving skills, reliability and so on.
Top comments (0)