Notes on Engineering Operations for Building ‘World Class’ Products

To build ‘world class’ products, getting world class engineers is not sufficient.
One must strive to use use world class infrastructure and tools, along with providing liberty and autonomy.

I have seen a lot of businesses operating inefficiently due to lack of high quality tools and infrastructure, lack of care towards engineers’ productivity, just for the sake of mythical cost cutting or the ubiquitous management conservatism in general.

For example :

  • Devices

    MacBook Pro line offers the best devices for most of the development work, with MacOS having enriched ecosystem with most top-of-the-line development tools. Using ANYthing else is just a waste of time for everyone involved!
    BYOD would be an alternative effective solution.
    Yes, it does cost more. But if you quantify and compare lost productivity (and peace of mind) while using frisky Windows or unstable Ubuntu machines, is it really costly?

  • Infrastructure

    In 2016, running (mostly anything) on premise, on self-managed, ill configured data center (with humongous ‘support’ team(!)) is waste of time (and energy and peace of mind) for everyone involved!
    Just move to any public cloud with SSDs!
    Make conscious decisions about using PaaS solutions – you do NOT have to re-invent the wheel every single time.
    Except for a very few cases, it works!
    And yes, your data is likely to be more secure on AWS than the on-premise mess you call a ‘data center’.

  • Automation

    Automate everything! If any activity requires more than 2 steps for developers, one must strive to automate it!
    We live in a fantastic era where almost every development activity can be fully automated!
    Every little friction saved, or every single time a document is not referred for a step, boosts the productivity a lot.
    And not doing it is a clear indication that you prefer incompetence over productivity and efficiency.

  • Tooling

    Use likes of Github or Gitlab, get rid of those pesky VPNs at least for the source code management. Use best-in-class IDEs like those from Jetbrains. Use likes of slack for communication, integrate every other tool with it.
    More importantly, give developers autonomy to use the tools and technologies they want.

  • Autonomy

    Furthermore, it is an amazing idea to let developers talk and mingle with end users, and giving them autonomy to come up with engineering solutions than dictating them what to do. (Minimalistic requirements documented from the business is a good start.)

Remember, companies like Whatsapp, Instagram have been able to great value with a very, very few number of really smart people working with them, following some of the practices mentioned above!

May the force be with you!