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.

Tuesday, May 15, 2012

Standardization of Web Experience

7:13 PM Posted by Deepak Nayal No comments
Pretty much all mature industries and product-segments have standard user interfaces across different products. This is so not because the industry guys are lazy (although that might be a factor for some) but because standard interfaces make products more intuitive and users' lives easier. Automobile industry is a great example of standardization. All cars have a steering wheel, brakes, gears, accelerator, clutch, etc. If you know how to drive one car, you can pretty much drive any other passenger car in the world. Not much has changed inside (or outside for that matter) a car for decades, except may be the digital systems. However, car makers still find ways to differentiate their brands through design, quality, performance, positioning and price. Computers are another example of standard user interface. The QWERTY keyboard and standard functionality buttons enable users to get going with any PC right away. Software obviously has a big role to play in that, and we all owe a big 'Thank You' to Microsoft for its role in standardizing few key features across all software applications. 

There is a trend you can find out in pretty much any industry or successful product-segment. At first, you will see a plethora of players with their own products specifications, trying to establish themselves as industry standard. This leads to few, if not many, different products with different interfaces, leading to user dissatisfaction. And then eventually we see all products in that segment converging towards commonly agreed or understood standards. Standardization of the user interface (and thus standardization of certain aspects of user experience) takes time, but it does take place when the industry reaches a certain level of maturity. The web is at the cusp of similar user experience standardization. 

Factors For Standardization 
It is not that the web experience does not have any standardized aspects already. Though the standardization of web experience had started long time ago with elements such as banners, menus, buttons and other widgets (along with some carry over from desktop applications' functionality), this time it is different. And there are four primary factors making it different. 
  • First, earlier the standardization was led from a technology perspective, whereas now design and user experience are taking a centre stage in application development and driving the user interface changes. This makes a world of difference as web applications are made more intuitive, beautiful and are centered around human interaction. 
  • Second, with millions of users using web applications such as Facebook, Twitter, Pinterest and Google, pretty much whatever features these applications use become a hit/standard requirement/feature for other applications as well, as the users start to expect similar behavior from other applications as well. For example, users now expect real-time updates without having to reload the whole page overtime. Pinterest is another great example of this trend. Its homepage and pin-board feature have inspired [and in some cases, literally copied by] many other applications across the web. 
  • Third, the whole web 2.0 revolution has led to two-way interaction between humans and web applications, where users actively are contributing to the content creation and curation process. This is very different from earlier (web 1.0) days where users of web applications were primarily passive consumers of content. This is a major factor, not so much from a technology perspective, but from a consumer adoption perspective.
  • And fourth, advancements in client side technologies (browsers and apps) have enabled web applications to provide rich user experience that can rival one provided by any desktop application. 

Tools For Standardization 
The software industry realizes the need for standardization of web experience and has been moving in that direction with open standards such as HTML5 and CSS3. Web software frameworks (such as Twitter Bootstrap and jQuery UI) that standardize cross-browser experience are a hit amongst developers and are now commonly used in many web applications. Twitter Bootstrap in particular is a very interesting framework in that it is not only easy to use and promotes rapid development, but also standardizes the common UI aspects of modern web applications. No wonder it is one of the most popular projects on Github

It Is Inevitable
Developers and vendors realize that while differentiation can be good strategy in many cases it is better to follow the standard conventions. Having said that I am not suggesting that we adopt complete standardization either. That will be too boring, and actually almost impossible to achieve on the web. But standardization to an extent is bound to happen. The four factors mentioned above are going to force us into making applications that are not only richer in experience but also similar in many aspects of application behavior and UI.

Wednesday, May 09, 2012

The Importance Of Networking

10:40 PM Posted by Deepak Nayal 3 comments
A few years ago if someone would have asked me about the single most important skill I wanted to possess, I would have [rather naively] said marketing or economics or finance. If asked that question again today, I will have to say it is networking. To know people, connect with them and establish rapport is way more important and useful in life than mastering Discounted Cash Flow Valuation, Maslow's hierarchy or the 4 Ps. I wish our education system had realized this too, though, it is still not too late. 

Networking with people is one of the most important and useful life skills one can have. And why is that? Because no one in this world has all the skills and the time to do everything. There will be many times in life (or in a single day for that matter) when you will need to get things done that are not in your control and for which you depend on others. This usually does not bother us, as our work environment shields us from the need to network by providing the required support structure to get our job done (unless you are in business development, though you still have the organization backing you). But step out of that support structure and you will realize the importance of building and managing a network. 

Now just to be clear, by networking I do not mean having 500+ connections on LinkedIn or having a similar number of friends on Facebook, and neither am I suggesting to go on a collect-as-many-business-cards-as-possible frenzy on social meet-ups. By networking I mean having real connections with people, to know more about them, and to connect with them occasionally if not regularly. Now if you can do that with all your 500+ connections on Facebook or LinkedIn, nothing like it!

Technology has come a long way in helping us network better. Research has proven that we do not have one big social network, but actually circles of network with the innermost ones being the strongest. That is where you have your best friends, and as you keep moving towards outer circles the ties keep weakening. In most cases we have a strong network with only 50 or so people, after which connections are more of acquaintances or less than that. Though, apparently, it is the people that we have weaker ties with that end up helping us more with professional activities. 

It is these circles of networks and their varying strength of ties that some social networking applications have been trying to leverage in order to position themselves differently. Path, for example, has been trying to leverage the strength of our inner network. Google+ literally has introduced the concept of circles in its app so that people can arrange their connections as per their choice, while others social apps usually mix all connections (strong or weak). Though, one thing common amongst all these social networking applications is that they are all about connecting with people we already know, and do not really help much reaching out to new ones. This is again where the debate of social versus interest graph comes in, and where interest graphs can be more effective. LinkedIn, Facebook and Google+ are pretty much based on social graph (though they have been trying to tap into interest graph). These applications might not be too helpful in connecting with new people, however, they can help us stay connected with our existing network. 

Even with all sorts of social networking apps around, we are still lacking applications that actually expand our inner circles by initiating online networking and then help in taking these relationships offline (into the real world). Probably a mashup of Facebook, Twitter and in future? But even with all the right technology and applications in the world, networking is a human thing. Our schools and colleges will have to realize the importance of such life skills and help students learn and leverage these. Our educational institutions should increase the emphasis on these skills and incorporate them in exercises and activities, because for most of us these life skills are going to be way more useful and important than Newton's laws on motion (no offense, Sir Issac).

Wednesday, May 02, 2012

Execution Speed As Competitive Advantage

11:11 PM Posted by Deepak Nayal , No comments
For years we have known that various factors - such as market share, (hard or soft) assets and brand - can contribute towards competitive advantage of companies. We have now also understood that execution (including some of its finer aspects) can add towards competitive advantage of companies. These execution aspects include design, quality and operations. In addition to these, speed of execution can also prove to be a very tangible source of long term competitive advantage.

Successful entrepreneurs and companies have shown us time and again how execution speed (considering product/service quality obviously) can be leveraged as a long term competitive advantage. Successful entrepreneurs are known to be impatient when it comes to delivering projects, and for good reason. Donald Trump used execution speed to his advantage for delivering quality infrastructure projects within time - ahead and better than his competitors. Jeff Bezos got the entire Amazon technology landscape transformed with service-oriented architecture, which led to birth of Amazon Web Services and revolutionized cloud computing. As per one of the articles (more of a rant) by ex-Amazon employees, this transformation just took a couple of years or so in Amazon. Similar enterprise-wide initiatives in normal companies can take at least five years to get implemented and that too get done in shoddy patches. Dhirubhai Ambani, the late Indian billionaire, founder of Reliance Industries, was known for implementing large [industrial] projects with amazing speed that his rivals could not imitate. Speed of execution was one of Dhirubhai's key operational advantages, which also helped him in his rags to riches transformation. 

We have also recently seen some companies take advantage of execution speed in the one of the hottest markets in the world - mobile. Samsung was able to leverage Google Android by quickly releasing mobile phones and tablets in the market, and gaining market and mind share to the extent that it has now surpassed Nokia as the top mobile phone seller. HTC is another vendor that was able to quickly take advantage of this upheaval in mobile market and jump to the front stage, from being phone supplier to other companies for many years. All this happened, while Nokia and RIM were still contemplating their next moves.

I am not saying that in all these examples quoted above - and for many other similar ones - speed was the only factor involved. There obviously were multiple factors present. However, most companies are not able to roll out changes and execute fast enough. They get stuck in meetings, presentations and bureaucracy, because of which many initiatives either get dropped off the radar or take much longer than they should have. In addition to that, this affects employee moral negatively as well. Companies miss out on huge opportunities by not identifying speed as a source of competitive advantage and taking the required steps to speed up decision making and project execution. 

There are a few things that organizations can do to incorporate speed in their DNA. All of these are known commonly known management mantras and revolve around soft issues. 

  • Smaller and Co-located teams - Small teams work effectively. Research has shown that teams of around five members are the most efficient ones. In addition to that, no matter how much advanced technology has become and no matter how web and mobile have changed the way we communicate, the fact of the matter is that these technologies cannot beat the effectiveness and efficiency of a team sitting around a table and working together in the same room. 
  • Direct reporting into a top manager - Bureaucracy kills innovation. If a project manager has to go through loops and bounds to get approvals and agreements for things that are important for a crucial initiative, then you can pretty much count on delay or failure of that project. So one of the most important things required for fast execution of your crucial initiatives is to ensure that the project team and its project manager directly reports into someone from top management. 
  • Agile project management - The field of software has not just given cool and useful applications to this world, but has also contributed to management studies. The complexity and uncertainty associated many software projects cannot be managed with traditional project management principles and requires agile project management. Leading management thinkers have realized the relevance of agile project management in the context of bigger organizational management and have been pushing for adopting agile management on corporate level. Agile management ensures that the project team is quickly and iteratively working on the idea and implementing it, instead of working in a silo, trying to finalize the product and then showing up the completed product after months of effort, only to get it turned down. 
  • Fail fast, fail often - With brainstorming, fast execution and multiple iterations, you are bound to have failures and problems showing up much more often than usual. But the good thing here is that because you are trying out things in small steps and in an iterative fashion, the cost of these failures and mistakes is not going to be that high. But for this to work properly, people have to get rid of that fear of failure, which is off course easier said than done, after all, we are all humans and we all want everyone to love and admire us. Failing fast and failing often, as scary as it sounds, actually does makes a lot of sense economically, as failures down the line end up costing exponentially higher than the ones at the early stages, which might lead to not just slowing down the project but eventually leading to its cancellation as well. 
  • Strong leadership - While all these factors are important to incorporate speed into an organization's ethos, the bleeding obvious fact is that none of this is possible without courageous and strong leadership. And this is probably the least common denominator amongst all companies that have been able to leverage speed as their sustainable competitive advantage. 

While speed just in itself cannot be a source of competitive advantage, when put in together with other factors, it can prove to be the deciding factor. Entrepreneurs and companies that realize this have not just been able to get ahead but also stay ahead of the competition.