Setting Up a Healthy Engineering Culture: A Blueprint for Success

engineering culture

As organizations strive to build innovative products and deliver exceptional value to their customers, fostering a healthy engineering culture becomes paramount. A strong engineering culture not only attracts top talent but also drives productivity, collaboration, and long-term success. In this blog post, we’ll explore the key elements of a healthy engineering culture and provide actionable steps to set it up within your organization.

What Is Engineering Culture?

An engineering culture encompasses the shared values, norms, and practices that define how engineers work together to achieve common goals. It’s the DNA of your technical team, influencing everything from code quality to communication patterns. Here are some essential features of a robust engineering culture:

  1. Collaboration and Communication:
    • Encourage open communication and cross-functional collaboration. Foster an environment where engineers can freely exchange ideas, seek feedback, and learn from one another.
    • Use tools like Slack, Microsoft Teams, or other communication platforms to facilitate real-time discussions and knowledge sharing.
  2. Continuous Learning and Professional Development:
    • Invest in learning opportunities for your engineers. Provide access to conferences, workshops, online courses, and mentorship programs.
    • Encourage engineers to stay updated with industry trends, best practices, and emerging technologies.
  3. Agile Development Practices:
    • Adopt agile methodologies (e.g., Scrum, Kanban) to promote iterative development, shorter release cycles, and adaptive planning.
    • Regularly review and adapt your processes based on feedback and performance metrics.
  4. Code Reviews:
    • Make code reviews a standard practice. They improve code quality, knowledge sharing, and alignment with coding standards.
    • Encourage constructive feedback and ensure that reviews are respectful and focused on improvement.
  5. Engineering Excellence:
    • Set high standards for technical excellence. Encourage engineers to write clean, maintainable code and follow best practices.
    • Invest in tools and practices that enhance code quality, such as static analysis, automated testing, and continuous integration.
  6. Innovation and Experimentation:
    • Create space for innovation. Allow engineers to explore new ideas, experiment with technologies, and propose improvements.
    • Celebrate successful experiments and learn from failures.
  7. Diversity and Inclusion:
    • Build a diverse engineering team that brings different perspectives and experiences. Embrace diversity in gender, ethnicity, background, and thought.
    • Foster an inclusive environment where everyone feels valued and respected.

How to Build an Engineering Culture

  1. Lead by Example:
    • Leadership plays a crucial role in shaping culture. Demonstrate the desired behaviors, communicate the vision, and actively participate in cultural initiatives.
    • Encourage transparency, accountability, and empathy.
  2. Define Core Values:
    • Collaborate with your team to define core values that align with your organization’s mission. These values should guide decision-making and behavior.
    • Examples of core values: integrity, customer focus, continuous improvement, and teamwork.
  3. Promote Psychological Safety:
    • Create an environment where engineers feel safe to express their opinions, ask questions, and take calculated risks.
    • Avoid blame culture and encourage learning from mistakes.
  4. Recognize and Reward Success:
    • Celebrate achievements, both big and small. Recognize engineers who go above and beyond.
    • Consider peer recognition, spot bonuses, or team outings as ways to appreciate contributions.
  5. Invest in Team Building:
    • Organize team-building activities, offsites, and hackathons. Strengthen relationships and build trust among team members.
    • Encourage social interactions beyond work-related discussions.
  6. Measure and Improve:
    • Regularly assess your engineering culture. Use surveys, feedback sessions, and metrics to gauge satisfaction and identify areas for improvement.
    • Iterate and adapt based on the feedback received.

Conclusion

A healthy engineering culture is not built overnight; it requires consistent effort, alignment, and commitment. By fostering collaboration, learning, and excellence, you can create an environment where engineers thrive, innovate, and contribute to the success of your organization. Remember that culture is not just what you say—it’s what you do every day.

Customizing WordPress to work like Confluence

The image shows a smooth transition from the blue and white confluence logo, which consists of two overlapping circles and a letter C, to the blue and white wordpress logo, which consists of a stylized W inside a circle. The image conveys the idea of changing from one platform to another, or integrating them together.

At Homeville, when we started active product development, JIRA and Confluence were our go to tools. As the technology team grew from a 4 member team to a 65+ member team, one of the things that became a slow burn for me was to see the monthly user-wise licensing model for both of these tools.

JIRA was free for the first 10 users, then for the next 40 odd users that we added, we were paying roughly 400 USD per month! Similarily, Confluence was free for the first 10 users, but at a team of 40 or so, our bills from Atlassian was matching our bills from AWS!

Shifting from Atlassian

One of the quickest shifts we did was to find an open source self hosted version of JIRA. OpenProject was the perfect solution. The benefit of self hosting these systems was that access to all the proprietary analysis and research in the form of features and requirements was now within our AWS account and thus in a much more secure environment. The added benefit of localization within the country also meant any form of regulatory compliance was also much better aligned.

It took some scripting, but using a python script to connect to JIRA and OpenProject (OP) both, we were able to import the projects, tickets and sprint informations from JIRA to OP.

Wiki or independent system

One of the key decision that we had to undertake was to see if the documentation was to be done within the OP, or was it to be hosted separately? One option was to continue with Confluence albeit under a smaller user base.

We finally decided to try things with a self-hosted WordPress. However, we did tweak quite a lot of things, listing all of these.

Customizing WordPress

Going into this project, I knew that this would be a continuous evaluation and test work. Sort of a rinse and repeat exercise. Hence, choosing WordPress was the obvious choice.

Custom Taxonomies

We setup PODs because of its ability to quickly add custom post types, custom taxonomies and easy relationships between the two. Using this we could easily keep a separate taxonomy for our credit platforms and systems.

Authorization and Access

Since we were on Microsoft o365, we setup an active directory plugin to enable tech team users to login using their o365 credentials. This also seamlessly created their user ids on WordPress and enabled access without the trouble of invites and importing users.

We also wanted a login gate to enable authorized access to our content. Thus a simple membership plugin to restrict content access was setup.

Similarly, we also setup a plugin that disabled the REST API so that the content wasnt available over unauthorized REST API calls.

We also setup a NACL rule on our AWS to prevent access to the system outside the office premises.

Integration with OpenProject

We also setup easy shortcodes that would pull data from OpenProject agile sprints and display those within a post, allowing for product teams to create east release notes followed by the sprint backlog with links to the OpenProject stories.

This was done using a custom plugin integration that we wrote. Obviously this could not have been possible without OP not having a REST API.

Document Templates FTW

This entire process would not have been successful without the new WordPress editor and its ability to create document template types within the post.

We took our most commonly used Confluence templates and set them up exactly in the same manner in WordPress. This enabled our product teams to seamless shift from Confluence to WordPress.

The fact that most discussions can also be captured as minutes with the exact time of publishing as the time when the meeting occurred also meant that we could also have a temporal view of our product development.

Thus with these simple and easy tweaks we shifted from Confluence to a self hosted WordPress.