Principles of Software Development at Axelerant #

Principles are ways of successfully dealing with reality to get what you want out of life.

Ray Dalio

As software engineers, we have to make a lot of decisions throughout the day. Defining and following certain principles makes it easier for us to make many of the decisions for challenges that have been solved previously. These are not set in stone, but they have stood the test of time, and we would rarely, if ever, ignore a principle, and only if there’s a very good reason.

Values #

Before we discuss our principles in engineering, make sure you have understood our values of Enthusiasm, Openness, and Kindness. The page “Being Axelerant” in our Open Handbook is a good read to cover these values and more.

Further to our three core values, we value excellence in our engineering.

Excellence is the gradual result of always striving to do better.

John C. Maxwell, The Leader's Greatest Return

We have also talked about excellence in a blog post and many other places in our internal communications. In the knowledge industry, change is paramount, and striving to keep up with change is critical. Our pursuit of excellence allows us to do better in everything that we do.

Our Principles #

Focus on Engineering

At Axelerant, an engineering-focused company, we begin with strong fundamentals and aim to build a robust and useful solution for our customers. While we are focused on engineering, we are still solving problems for people.

Build for People

We don't write code in a vacuum. We write code to solve problems for our customers using systems that their customers use, all of which will be maintained by our teammates.

Remember the Fundamentals

We balance the value of getting started quickly with a robust understanding of the fundamentals.

Proudly Invented Elsewhere

Software development is not new. That means somebody might have already faced a similar problem and solved it. Use libraries whenever you can. Even though a library meets 70–80% of our requirement, we consider using it.

Know your tradeoffs

Engineering is the science of picking tradeoffs. Be mindful of what tradeoffs you are making in your decisions.

Begin with high-risk items

To minimize risk and identify architectural obstacles early on, high-risk tickets are prioritized while building sites.

Iterate

When we build websites, we do so with the expectation that they will need to be updated and changed over time. This is because the needs of businesses and organizations are constantly evolving, and their websites need to reflect that.

Automate everything

Life's too short to repeat things (I know I am repeating this but life's too short to find new maxims). Figure out a way to automate things you are doing repeatedly and frequently.

Test, test, and test again

Being quick with decisions doesn't mean we are quick with that deployment. We test to make sure that our work, _works_. Then we verify our tests and get another opinion to make sure we tested the right thing and tested it well.

Be a Part of the Open-source Community

There's a very good chance you are not living in a remote jungle or a lonely mountaintop. That's because you have come to rely on the support (and comfort) provided by clusters of people in cities and towns. Why should our programming world be any different?