Sunday, March 11, 2018

Software and Culture

I have been building software since the last 11 years and like everyone software for me was coding. Being a software developer the focus is always on technology, knowing the latest trends, automating, building cool stuff that helps reduce manual efforts. And what does it take to build that - a bunch of smart people, a computer and some infrastructure. Is that enough - YES would be the answer from majority of us. However, I had a major mindset change in the last 2.5 years thanks to some great mentors and colleagues. Software is not just coding, software is not just technology - software is a Culture in itself.

You can't get a bunch of smart people, a computer and infrastructure to build software. Well, yes you can, but if you'd like to build a high quality product that is long running and sustainable, run technology with culture. So what's this big thing about culture and what value does it add? Maybe some leadership lessons and some psychology lessons here and there that sound great on pen and paper? Definitely no, my experience says that the right culture helps in creating a highly motivated, high performing teams who are passionate about building and delivering meaningful stuff.

Culture in technology means giving the developers working at the ground level the autonomy. Trusting my fresher as much as I trust a senior developer. Giving the ownership to the team. We can't have a program manager who has no clue about what an 'if' condition means, committing to a deliverable date. This is something that needs to come from the developers coding at the ground level who really understand the challenges and what goes in building a software. So if my developer says it takes 3 months to build what a program manager thinks can happen in 2 months, do I agree - Yes!

Culture is letting people be innovative, giving them the tools they need. Technology cannot be built in a constrained environment where there is reluctance in trying out new things, where failure is converted into a blame, where the ball is thrown at each other. If you want to build a great software, innovation is the key. Along with innovation comes failure - the idea is to fail fast and learn fast.
Culture is not telling people what to do but hearing from people what they want to do. Getting away from a task based system to a product based system is the need. A culture of openness, a culture of healthy debates, a culture of no baggage, a culture of no deadlines or practical deadlines which I'd call guidelines - this would make a product successful, this is what makes developers passionate about delivering, this is what would mean no attrition. Giving the team the freedom to think and innovate would automatically reflect in deliveries and productivity. The so called deadlines will automatically be taken care of. You don't hire smart people to tell them what to do, you hire them so they tell you what to do and how to do. Haggling behind designations and competing for visibility will take us nowhere. Strive for excellence and everything else will automatically follow.

All this does not come easy. It's a big investment in a big mindset change at all levels. It means getting rid of some age old roles, it means learning new skills, it means giving up control, it means giving the decision making to a 1 year experienced software developer, as a leader it means talking less and making people talk more, it means stop giving directions, it means TRUSTING your people to the core. It means unlearn and learn. It definitely means a short term disruption. However, the results in the long run are worth seeing.

You can create jobs with technology. To create careers, build Technology with CULTURE.