Engineering culture for an Internet company

 TAGS:undefinedHope you will bear with me improvising the definition of engineering culture as the ideas, attitudes, organization and behavior of the members of an engineering-driven company.

Each one of the Internet companies we work in have an engineering culture, regardless of the awareness of their members (and managers). That's because a company is an ecosystem that operates under a series of individually-disconnected and collectively-connected principles that when placed together over time they become ideas, attitudes and behaviors conforming an Engineering culture: the reality on which the company operates and organizes itself.

The Engineering culture might contain either organizational stuff or technical choices. Some companies disclose these operational habits and culture and publicly share in awesome presentations their stories of success (and failure). These companies will try to hire only people that fits well in this strategy. Others simply aren't very aware of what is their underlying culture, but at the end of the day all companies have an engineering culture, a mix of what "the company" wants and the individual beliefs.

The following lines describe an abstract engineering culture I believe in, the one that fits better with my style.

It is very difficult (and would be very long) to write a recipe in detail but see this article more as a notepad with ideas than a detailed recipe. You cannot cook only by reading this.

Also understand that this is not the definition of the engineering culture I currently work in or had, but my point of view.

By sharing this I hope you give a thought about your own engineering culture and of course to see you contribute back with comments, opinions and any disagreements (so I can keep improving!)

This document can evolve and transform over time, as we all do in our career. What today is very clear tomorrow can be object of discussion and even considered a bad practice, as it happens with refactoring.

Let's go!

Reliable co-workers

And by reliable I don't mean the quality of the work they produce in the first place, but their personality: Self-responsibility, honesty, fairness, accountability as main drivers.

You know you are in a reliable team when:

Beautiful teams

Every family needs safety

"Look ma', no hands!", is a bad pattern. No one should cross-fingers during the product iterations, you need predictability. Do not endanger your business and let things to their fate. There are several things you can do to minimize the number of things going wrong, some examples are:

Incremental development

Grouping tons of features and releasing all of them at once is a bad idea. Anything can go wild and then you need to run like a headless chicken (that's a literal translation of a set phrase in spanish, but very graphical). You'll never know what piece of all the code you put online altered the metrics and fixing anything can be hard. Instead of releasing functionalities:

Open source mindset

Even if you don't want to share any of your code with the world, the open source community has very good habits you might adopt.

Managers are not above engineers

Becoming a manager is not a step up in your career but a change in the orientation of your work. Managers facilitate process and help people, engineers solve technical problems. Apply for management if you are more motivated towards helping people. Related to that:

Grow and help others

Being focused on the day to day and the products won't make you grow and won't cultivate you without an addition.

Afterwords

I tried to cover some topics relevant in the operation of an organization, but of course there are many things I didn't write and left out the document. I will be very happy to hear your thoughts.