The tech-startup eco-system has driven the demand for fast-paced agile and lean software practices and an incredible amount of innovation. But, how do we make sure we’re delivering against industry’s best practices and leveraging the benefits of modern tools to stay competitive?
Silicon Valley and technology hubs around the world have become incredibly good at fast, lean product development. And it makes sense to be lean and quick, given the high volume and low success rates that are features of the tech-startup industry. In contrast, older and more established businesses have their flags firmly planted in long-term expensive technology investments and practices that were relevant in the 1980s. The result can be predictable but slow and expensive progress.
The tech-startup eco-system has driven the demand for fast-paced agile and lean software practices across the world in all areas of software engineering, and an incredible amount of innovation in software tooling and technology. The landscape is shifting constantly and so too are approaches to designing and building software systems, organizing teams, and managing deliveries. Netflix is a great example of this.
Outside of digital, we have an increasing number of languages available on the CLR and JVM for enterprise system development and growing popularity of alternative languages like Scala and Python. It’s starting to make less and less sense to categorize our skills according to the classic platforms of Java and C#.
As members of the corporate IT community, what does this mean for us moving forward? How do we make sure we’re delivering against industry’s best practices and leveraging the benefits of modern tools to stay competitive in our industry?
1. A culture of ‘continuous improvement’
We are on the steepest part of the technological innovation curve in human history. Change is more frequent, rapid and pervasive in our lives than ever before. According to a recent Deloitte university press report, the unit cost of computing-power between 1992 and 2012 came down by a factor of 3700. What cost R3000 then, costs 81c now (Deloitte, 2012). More importantly, they found that labour productivity growth flat lined while advances in core digital technologies sky-rocketed: exposing a clear innovation gap. Conclusion? We are not capitalizing on this innovation in software organisations. It’s understandable. We’d like to avoid becoming victims of the latest flavour of the month practice or technology, and we need to manage our risk responsibly. We also don’t want a tendency toward risk-aversion to limit our potential as an organisation.
Change is not something that comes easily to us in IT. We are by default attracted to certainty and predictability in most areas of our lives. Who can blame us, there is enormous complexity in what we do and as a result, a huge intellectual and emotional investment in ‘getting it right’ once, let alone again and again. The data is clear though: change in approach, change in technology and change in people are all connected to our future success because change ensures we can constantly remain relevant and can meet our customers needs. While the tech industry has been somewhat successful at adopting agile approaches to manage our software delivery, we have yet to capitalize on being ‘pro-change’ at an organisational level. Because change is expensive and change is intimidating. But when change is integrated into your business model, it can become a fluid part of your process, and consequently, much more cost-sensitive. LinkedIn is a great example of a company that believes wholeheartedly in continual learning.
Here are some headlines to think about, however each of these points is, in isolation, simultaneosly a brave and sizeable undertaking and a complete necessity.
• Foster a culture of knowledge sharing and collaboration as a means to continuous learning growth (Harvard Business Review)
• Leverage popular agile practices to guide your software development process (McKinsey)
• Break down monolithic architectures and functional team barriers in the organisation
• Adopt a DevOps approach to reduce operational bottlenecks and speed up the shipping process
• Close the gap between business and IT and promote a culture of involvement from business partners (McKinsey)
• Engineer your solutions for change by leveraging modern architectural practices like microservices and containerisation
2. Update the way you evaluate and seek talent
If you’re an organisation that values deep experience in specific technologies, then you suffer from the disadvantage of having people who are good at the past and (potentially) bad at the future. Adopt a priority of looking for ability, attitude and aptitude for change. Seek these traits out at the cost of all others, and you’ll build teams who are constantly delivering work that is fresh and current.
Accept that on-the-job training for any technology, tool and environment is part and parcel of your operational costs. Plan for it, embrace it and get really good at making it happen quickly. If we can build organisations that are resilient to high churn and operate efficiently despite it, we stand a greater chance at succeeding in the current climate. There are modern approaches designed to tackle this:
• Lean and fast recruitment processes – invest in shorter, less cumbersome and frictional interview processes.
• Smooth onboarding and orientation can help ramp up productivity and employee engagement (Harvard Business Review)
• Align with popular tools and technologies to access wider skill-pool, instead of niche products and technologies.
• Reduce setup time with pre-configured out-of-the-box development environments and tools
• Remuneration strategies that target shorter tenures – reward performance bravely and take into account market movements.
• Leverage software development partners for project-based, team-based or staff-augmentation work.
3. Start at the beginning: Adopt a low-hanging fruit approach
Delivering solutions that meet your customers needs perfectly is at the heart of being competitive. Try out a feature-team approach on your next deliverable. Well-designed systems should allow you to ring-fence components and experiment with new technology in a way that lowers the risk of impact on the rest of your eco-system but allows you to make subtle changes to a client solution that keeps you ahead of your competitors. Start with the least critical systems and get comfortable, working your way deeper as you go. Start the conversations in your team and challenge your team to think outside of the box: what should we be doing differently?
Trust your team, but contribute to the decision making process. Software engineers don’t need to be architects or have 15 years of experience to bring good ideas to the table, you may find the best ideas coming from the graduate who joined your team 3 months ago. Encourage a culture of joint-accountability and continual learning and innovation - you’ll find that change starts happening seamlessly and without prompt.
4. Structure that enable quick and collaborative decision-making
Finally, bringing your entire team along for the journey is a non-negotiable. Change requires teams to be able to move quickly. Decentralize technical decision-making and invest in making technology and practice decisions as a team. If you can’t build understanding and consensus in your teams due to structures that exist – break them down and start again. High performing teams don’t necessarily need complete autonomy, but they do need trust and cohesion which are two things the old-guard has a poor track-record at fostering.
As you build confidence in your new approaches, tools and technologies, you’ll build an organisation who are not only resilient to change but thrive in it. A philosophy of continuous improvement will help you consistently deliver against industry best practices. As a result, staying compeititve will be the very nature of your business.