The Tao of the Engineer: Responsibilities

Today I would like to share the first chapter of our Tao.

The Tao is the first document an Engineer face when he first joins the company and is the base of reference to how ideally one should act.

This is part of a bigger plan to increase engineering happiness, quality and efficiency through the promotion of purpose, ownership and accountability.

Communication

Submit daily stand-ups.
To inform the status on ongoing tasks to your peers.

Attend meetings.
To discuss and take technical decisions on implementations and architecture.

Proactively inform your product manager of status of your projects and deadlines.
To make sure the roadmap is up-to-date and what he can expect from you.

Be aware of deadlines and priorities.
To deliver quality and solve what matters most.

Check asynchronous communication tools daily.
To keep in context and reduce synchronous interruptions.

Have a broad context of every problem you’re squad is working on.
To provide support and review code for your peers.

Ensure Quality

Review pull-requests that are assigned to you, making sure to start reviews within 24 hours of request.
To unblock and be unblocked.

Read the issue, understand the problem and test the code you’re reviewing.
To make sure nothing is missing and everything works properly.

Feel free to contribute with the pull-request adding commits that fix quick wins and add missing tests, remember to comment those changes after pushing your commits.
To speed up the review process, foment discussions and improve quality.

After merging a pull-request, make sure the deployment was successful and staging is up an running.
To make sure you didn’t broke anything (or no one is going to call you late at night).

Solve Problems

Question the problem and find the purpose.
To make sure that the problem is worth solving.

Be proactive when dealing with specced problems, make sure you fully understand the problem before writing an implementation.
To make sure you’re solving the problem the best way possible.

Design tech specs and implementation in sync with PM and client.
To make sure you’re solving the problem.

Break up implementation into small issues and keep your system in sync.
To ensure you understand all the pieces in the puzzle.

Calculate responsible deadlines, and communicate with your PM.
To ensure time for quality and set the right expectations.

Prioritise quality, write tests and keep documentation up-to-date.
To lower the price of getting into context.

Report bugs directly as issues.
To not only get everyone in sync but to also give the resource for fixing the bug.

Track tech debts as issues.
To not forget what was left behind.
To solve our problems at the right time.
To avoid future bugs.
To provide an easy path for someone else to improve your code.

Ship implementations to staging if available, deploy to production when tested.
To don’t fuck things up.

Set-up and maintain CI systems.
To make everyone’s life easier and to be loved by your team.

Improve Yourself and the System

Invest 10% of your time per week on developing new skills, reading, coding proof of concepts and playing with different tech.
To make yourself better.

If you develop any systems for yourself that work well, you should share it with the team.
To make the team better.

If you see any tweaks or even have a proposal for new systems that the entire team should be using, you should raise them. Implement them in your squad first, then raise with the rest of the EGT during our weekly EGT meetings.
To make the company better.