Friday, February 13, 2015

Software Culture

Hi all,
Lately I have been thinking a lot about it. A lot of poeple in my company are talking about how should we define company culture and why we need to define a culture essentially. Altough I paid attention to what was being said but a thought triggered in my mind that if company culture is so important and software team is a big of part of the company, shouldn't we also talk about software culture. What I have observed so far is mostly people follow what's being followed in the system for long. Now, if no one sets it right in the beginning, then very soon you have so many employees following the same trend and it will be disaster.

A very simple example, let's say if people don't have the habit of testing the whole code with all the test cases before pushing it to production, then it might not be big deal now. It works until it doesn't and then one day it destroys what you have been building so far. A real example, Knight capital lost 440 million dollars because a bad code was pushed to production. The company was near bankruptcy.

Learning from other's mistakes, we can take a few things in our accounts. Writing cleaner codes, writing test cases of each feature no matter how small it is, continous backup are a few things that often people miss and it comes from practice. Automating small repetitive tasks is another thing that reduces operation time and free up the engineer to work more on actual product. Using git flow is another good practice.

Making a flow diagram before starting to write code has significant effects on code quality and code iterations.

If a feature is requested from business side, tell the developer why that decision was made. It helps them understand it from business side and there is possibility that they can give some input which will be useful for both business and software.

At last, Respect your engineers. If they want a little more time, give them.