Sharing ideas with the world

Thursday, May 24, 2012

Things Corporate IT Can Learn From Technology Startups

9:02 PM Posted by Deepak Nayal , , No comments
It is a pity that even today, in the age of cloud computing, Post-PC era, and mobile revolution, many companies still see technology as mainly a cost factor. When instead of exploring ways that technology can help them propel ahead of their competitors, organizations think of IT as one of the support functions that needs to be cut down as soon as finance markets raise their concerns on the health of the company, you know that something somewhere needs to be changed. Considering that every company is now a software company, it is surprising how leaders in many organizations miss the fact that technology now sits at the core of their business. And even if it does not [sit at the core], when software is eating the world, you certainly do not want to be left standing with the wrong end of the stick. 

The Modern And Third World Divide In Technology 
The technology world seems to be divided into two major camps: the modern world and the third world (not restricted by any geographies). In the modern world, we have startups and companies with high tech agile way of working using modern [open source] tools and processes, small teams and cloud computing resources. In the third world, we have many corporate IT departments, that are still burdened by heavy processes, costly proprietary software support and software licenses, large investments in hardware and big teams. I believe that there is a lot that this third world can learn from its modern counterpart. With the resources that these corporate IT divisions have access to, they can do much better than what they currently are. So what is holding them back? Why is it that a small technology outfit with only a handful of engineers and limited financial resources can build and manage much more complex and advanced technology solutions supporting millions of people, while large corporate IT divisions with larger resources have trouble releasing a single service or application. 

Lessons To Be Learnt 
Advancements in technology and success of small technology firms and startups supporting millions of web and mobile users have brought into light many practices that these companies follow. Following are some of the lessons that I believe cooperate IT divisions can learn from these small and nimble outfits. 

For the rest of the blog I will be using the term CIT for Corporate IT divisions. 

Think Of Yourself As An Engineering Outfit 
While there are a lot of reasons for third world tech outfits to not be able to perform as their modern counterparts, I believe the core of this problem lies in the fact that in many cases these CITs are looked upon as just support functions of a larger organization. So to begin with, there needs to be a shift in mindset. These CITs need to start thinking of themselves as a small technology engineering company (not a support function) with only one customer, i.e. the parent organization. This change in thought process is very important in changing the culture into an engineering driven one, from reactive to proactive, and from support function to a technology partner. 

Agile Development 
One of the key constraints holding back CITs is bureaucracy. Process overload kills innovation, whereas good software development demands iterative development practices and agile work environment. While agile and iterative development practices are not new and there has been a lot of work done on it already, it is surprising how only a few CITs are able to practice it. One of the core reasons in my view for this inability of CITs to practice iterative development again boils down to considering CITs as a cost function, because of which IT and business work in silo-mode breeding an us-versus-them feeling. In addition to that, sometimes many companies choose to go for large/total outsourcing IT contracts. Now, agile development and outsourcing contracts do not go hand in hand, at least not easily. For this combination to work, you need to have good processes understood and established before you outsource the IT function. 

Adopt Cloud Computing 
CITs, like their modern tech counterparts, will need to open up more towards cloud computing. While they have become more open in this area compared to the past, they still need to become more confident about this phenomenon. CITs still invest heavily in buying their own computing infrastructure. Cloud computing can help them in many ways including cutting fixed costs, scaling application resources on demand, and cutting down on infrastructure maintenance. 

Embrace Open Source 
While the modern technology world has adopted the open source full heartedly, its third world counterpart is nowhere near in terms of open source adoption. To be fair, one of the key reasons for this is that these CITs have a lot of legacy applications, whereas open source projects have only recently started to become more robust. The success of online sites, such as Facebook, Twitter and Netflix, supporting multi-million users and running on open source technologies have proven that these technologies can be trusted with for building critical applications. Though these CITs have not been able to use open source technologies in the past, they sure can do so now. However, there is another problem that these CITs face. A lot of open source tools do not come with support contracts, and one of the reason these CITs do not develop using opensource is their affinity to go for tools and technologies that are available in the market for certain period of time, backed by a robust company and proper support contract. Many a times senior IT management is just afraid of putting their neck on line for adopting open source. 

Practice Service Oriented Architecture 
Like many other points suggested here, Service Oriented Architecture (SOA) is not new but it is still surprising how less often it is practiced. SOA, along with cloud computing, can help organizations turn into PROGRAMMABLE ENTERPRISE, where software assets can be accessed as services, leading to minimal operational overhead. Unarguably, the best public example of a programmable enterprise is Amazon, where even new machine instances can be spun off through APIs. 

Increase Collaboration Between Operations & Development Teams 
The last point brings us into another interesting practice of DevOps - where development and operational team work in close collaboration with each other - and its more controversial variant NoOps - where the whole technology infra is run on the cloud and developers take care of all aspects of the application (technically I do not think you will ever be able to work with zero operations team though). Whichever version you vote for, the truth is that currently most CITs are bloated and inefficient as far as resource utilization and organizational structure is concerned, though their senior management generally would not admit it publicly. With operations teams resisting change and developer teams pushing for it, there is a constant tension between these two which generally leads to increased arguments, bureaucracy and an us-versus-them feeling, which kills innovation and rapid development. Which is why it is important to increase collaboration between operations and development teams, no matter how you do it - DevOps, NoOps or XXXOps. 

Hire Full Stack Developers 
CITs consist of specialist teams where developers do not work on databases and application servers, and even depend on QA/test teams to test their application. Similarly, application and database guys cannot/do not play around with OS level aspects. A transition towards DevOps/NoOps can solve this problem, though to make this transition more effective CITs will need to hire more full-stack developers, who know their way around multiple layers of technology and not just have a single area of expertise. This is a departure from previous ways of working in IT where you had dedicated teams to perform a specific part of the software development lifecycle, such as development or testing or deployment. However, tech startups and engineering outfits have shown us that small teams are much more efficient in executing projects. And when you work with small teams, you need to have good generalists in the team instead of specialists, so that anyone can work on any part of the project whenever required. 

While you do hear senior IT management talking about going agile and modern and adopting the points mentioned above all the time, the truth is that on the ground, these CITs are still operating as they had for years. There is a lot these CITs can learn from tech startups and engineering outfits where just a handful of smart people manage applications that serve millions of users. But this learning is not just about tools and technology, it is a lot about culture and leadership as well. You need to have a engineering driven meritocratic culture, where smart people are encouraged to try out new things. You need to have strong leadership where a CTO is not just a guy who suggests the next software package you should buy, but is actively involved in improving the practices, techniques and processes of the CIT. And above all, you need to have strong leader in the parent organization, who understands the value of technology and how it can contribute towards the growth of the organization.


Post a Comment