Friday, February 20, 2015

Policy Changes to Encourage Software Product Development in India



Skilled human capital remains the most crucial factor for software innovation

As software becomes the heart and lifeblood of the modern economy, Software is becoming the driver, an enabler, and a diffuser of innovation across all sectors and industries. For example, look at Uber or Flipkart or BigBasket - which is transforming retail in India and Taxi services.  Software  delivered via mobile devices can transform all aspects of economy - and this is an ABSOLUTE TRUTH!  

India has established as a leader in software services. With millions of engineers, India can emerge as a world leader in software technology.

Unfortunately, India has been a nonexistent player in developing any new software technologies. In areas of core technology development, India has fallen short in a BIG way!

Other countries such as Israel, Taiwan, Korea & China have emerged as product leaders, while India - despite its enormous manpower talent pool has failed to develop world class products and has been playing a secondary role of software services.

Unlike most countries, India does not suffer from scarcity of skilled human capital. India produces lots (quantity) of engineers with adequate skills (quality). Indian engineers have immigrated abroad and have created several product companies. So the problem is not with talent or skills.

The main problem is with the government policy towards product development.

Over the years, Indian government policy has tilted heavily towards software services by offering liberal tax rebates, exception from rigid labor laws, while product developers are penalized with higher taxes, bureaucratic red tape and crippling labor laws.

As a result Indian software companies have largely stayed away from product development. Even
industry majors that set ambitious targets for product revenues have given up their targets over time.

For example, Infosys Technologies, had about 4% revenues from software products in 2001-02, though at one time they hoped to achieve a target of 40% revenues from products by 2000.

Major hindrances in developing products from policy perspective are:

1. Lack of involvement of Indian Private sector in developing key technologies. 

Government run organizations such as DRDO, BARC, CDAC, ISRO work in total isolation during development and only after development, government agencies plan to license new technologies to private sector.

In the USA & Israel, defense development and private sector involvement go hand-in-hand. For example Google got its initial funding from DARPA for a web indexing project.

2. Weak protection of Intellectual Property Rights and rampant piracy. 

When a fledging startup develops a new product and wants to sell to potential customers - mostly large organizations, they are under the risk of piracy. Startups cannot afford to sue bigger companies for piracy as they lack financial resources to fight a long winding legal battle. Laws regarding protecting IPR in India is really strong - but the legal process and bureaucracy causes the hindrance.

3. High cost of Internet & Electricity

Internet speeds in India is very slow and is expensive. The government licensing policy towards allowing private sector to create Internet connectivity from India to abroad has led to acute paucity of bandwidth for International connectivity. In addition, laying cable inside the country is regulated by various state & City government laws - which has made Internet connectivity very expensive.

High cost of 3G & 4G spectrum has also not helped - which has resulted in one of the highest Internet costs among BRIC countries.

In addition, chronic power shortage has forced companies to setup data centers outside India - thus making everyone choke on the slow-speed Internet. For example, it is a lot cheaper to set up data centers in Washington state or in Iceland or Carolina - than in Karnataka or Maharashtra.

For example, If I were to send an email to my wife - both of us residing in the same location, the email is routed via US!

Lack of Internet speed, has put software product developers at a BIG disadvantage. It has prevented Indian entrepreneurs to set up data centers or cloud/Web based or gaming products in India.

4. Lack of Tax incentives for Software Product Companies

Indian Software Services sector has/had several incentives. For a long time, software services were exempt from several taxes! Companies paid no income tax, no import duty, no exercise duty etc. However, product companies have to pay their taxes on day one!

This skew in tax regime has led to Indian entrepreneurs opting to invest in software services, which minimizes risks and maximizes profits. With services, entrepreneurs can expect to break even or even make profits in the first year of operations.

Providing Tax incentives to software product companies will help make India become a product powerhouse.

5. Lack of incubation centers and investment in early state startups

Early stage startup in India have to overcome several challenges: Lack of office space and investments for product development. In recent times, Venture Capital firms have been active in India, but they do not provide funds for an early stage startups. There is a need to create an 'Angel Funds' - which must be provided by a Government agency. In the US, Government releases funds to early stage startup via DARPA, DoD and  other organizations.

Conclusion


Prime Minister Modi's "Make-in-India" pep-talk must be backed by policy changes to help Indian companies and entrepreneurs develop software technology products in India - for the world.

Changing the existing Tax regime and Internet policies will help in a BIG way to develop software products in India!

Thursday, February 19, 2015

Facebook's 6-Pack Punch

















When a billion+ users log on to an Internet service, the underlying fundamental principles of a datacenter has to change. The traditional datacenter was designed to serve thousands of users that can scale upto a million users - but not in Billions!!

Facebook engineers have learnt what it takes to run datacenters that serve billions of users and are Open Compute Foundation.
kind enough to share that knowledge with rest of the world - via


As part of Open Compute Foundation, Facebook recently revealed "6-pack": The first open hardware modular switch. Its a scalable solution - with modular design.

6-Pack is a top-of-the-rack switch, commonly used in "Leaf-Spine" networks for large datacenters. In Leaf-spine network, a rack full of servers are connected to every other rack via a Leaf-Spine network.

6-Pack is also an "open design" Facebook will allow other companies to manufacture and sell these devices. The switch is built from off-the-shelf component & not custom built AISCs - thus bringing down the cost (in a big way) of networking.

6-Pack can scale from 32 ports of 40Gig Ethernet to 128 ports of 40Gig Ethernet - providing a total bandwidth of 1.28T!  It supports two fabric cards, and eight linecards (called as Wedge). Each line card has 16 40GigE ports.

It packs enough punch to change the bedrock of the Internet - the datacenter switches.

For full technical details see: Introducing "6-pack"


Innovation

From a pure switching technology perspective, the 6-pack is not that innovative. The modular & scalable design, the 40GigE ports and fabric cards have been around for years. Cisco Nexus series, Juniper EX series & Arista are established leaders in this space.

In terms of performance, reading from the specs of the device, (I have not seen any real performance numbers) Facebook's 6-pack is on par with the top-of-the-line offerings from Cisco or Arista or Juniper.

The main innovation comes in the internal design. Each line card has a micro-server and a server inside. A Linux derivative Operating System (code-named "FBOSS") drives each of the module.

Each element runs its own FBOSS on the local server and is completely independent.

Herein lies the major Technical innovation. The server inside the linecard and fabric - runs all the network control functions and the switch can be managed as a server - i.,e provisioned & configured using existing server management tools.

Note: No separate/special network management tools needed. 6-Pack/FBOSS does not use SDN technology - like virtual network overlay, but its a hybrid SDN - where all the network switching intelligence is built into the sever.

Running each module independently, allows network engineers to modify any part of the system with no system-level impact, software or hardware. It has a unique dual backplane solution that enabled us to create a non-blocking topology.

Business Disrupter


The other major Innovation with 6-pack is its "Open-design", thus allowing any 'grey-box' manufacturer to build and sell these high performance switches. The open design, Open OS, and off-the-shelf components all comes together to reduce the costs drastically.

6-Pack is a great value proposition for Cloud service providers. Who, like Facebook, run massive datacenters that server millions and millions of users. Unlike Enterprise class switches from Cisco or Arista - which costs $600/port (approx),  Facebook's 6-pack will cost a small fraction - $90 or even less (my estimate) and will reduce further with time.

Since the networking intelligence is built into the software running on a server, the expensive proprietorial protocols and custom built switches can be replaced by 6-pack!

Limitations


Note that Facebook built 6-Pack to meet its needs and not enterprise needs. This means that 6-pack is designed to work with web based service workloads and not the traditional enterprise workloads. Even for the large enterprises, the savings from lower cost/port will be offset by higher cost of integration with existing tools/frameworks, and lack support of support for Open Compute.

This implies that enterprises who do not run 100,000's of identical servers and will not require the scale and flexibility of 6-Pack. Such customers are better off with switches from Cisco or Juniper or Arista or others. But for service providers: AWS, AT&T, BT, Colt, VMWare AirCloud, CSC, etc., Facebook's 6-Pack is a game changer.

Wednesday, February 18, 2015

Data is Data - Unified Data Lake is the game changer

For many companies today, Big Data analytics is a top priority. Leaders at these companies hope to derive new insights from all available data to improve decision making that impacts: enhances customer experience, improves productivity, lowers operational costs, and create new business opportunities.

In short companies want the moon!

Unfortunately, companies too often start their Big Data efforts in silos. Marketing has its own initiate, production has its own projects, finance works in another silo and so on. The discrete silo based approach will fail in the world of big data.

Many companies rush the implementation of big data projects and confuse Big Data technologies with tools like Hadoop, Pig, Python, and others without looking at the bigger picture. Many of these new projects fail to include existing data discovery and analytics tools.

The siloed approach leads to quick initial success but it opens up a series of much bigger challenges which eventually leads to re-architecting all the Big Data Projects while costs goes out of control. The main challenge is data growth. Success of Big Data analytics relies on massive volumes of data. The rapid data growth will quickly overwhelm the existing IT infrastructure in respective silos, forcing departments to replicate Big Data infrastructure.

Data used by businesses for decision making is exploding. Typically, data volumes double every 12 to 18 months. Use of unstructured data from: emails, logs, call logs, documents, files, images/videos and social media streams (twitter/Facebook etc)  are become mainstream in data analysis.  Moreover regulatory rules insist that data must be retained for a long period of time. This results in the huge volume of data that must be stored, protected and managed - which gets more expensive.

Many Big Data projects involve the use of vastly different data types: Unstructured, files, meta data, blob data, log files etc. For example, One project may use searching a database for pattern matching, another project uses word searches in different types of files, while another may use real time data from social media and match it with historical trending data sets etc. Each of these projects has a different requirement on data capture, extraction, and storage. Having a dedicated or separate data storage/management system is unviable.

Business analytics projects tend to focus on spotting trends by looking at the historical data and matching it with the current events. How well did this product sell in that store? How many customers who got this email clicked on an embedded link and completed a purchase or transaction? Which supplier's products contributed to the highest failure rates in a product line? These types of analytics is best answered by analyzing data that had been orderly collected and stored in a structured database or data warehouse and then enhanced with real time data.

In a dynamic business enviroment, Big Data analytics can help answer new questions rapidly. For example: Can information from social media tell me how customer sentiments are changing in response to the new advertisements? Can real-time customer interactions in the store help in inventory management? Can real-time transactional data help in fraud detection?

The answer to such questions can be quickly found out if the analytics tools have access to the required data, which has to come from both traditional sources and new sources.


A traditional silo based approach to Big Data analytics projects tend to get more expensive and management does not get the full value of the new insights they desired.

The best way to approach Big Data analytics is to take an approach that accommodates both rapid growth of data and uses existing analytics and tools, while leveraging existing infrastructure and then adding newer tools and analytics to the mix. Existing business analytics should continue to work along with new Big Data analytics. Existing corporate and business managers do not have the time or expertise to learn how to use all of the needed techniques and tools and will rely on existing work flows and will use new analytics as needed. In short, implementing Big Data analytics must not be disruptive.

Unified Data Lake is the game Changer


Creating a unified Data Lake which had ingest and hold both traditional data in existing data warehouses and newer data types should be the first step while embarking on a big data journey.

A unified Data Lake gives companies a choice of data extraction and analytics tools and does not lock workers into using old existing solutions, Older workflows can be easily integrated with newer Big Data analytics workflow.

A unified Data Lake allows new Big Data analytics solution can use  new technologies like Hadoop, Hive, Rails etc  to capture, store, and refine data, while providing enterprise class data security, protection and access control in a centralized, integrated way that data is accessible and easily managed.

A Unified Data Lake offers several benefits including:


  • Agility: Eliminating much of the strain on IT that was common with traditional silo approaches.
  • Simplicity: Allow consumption of data in any format, thus saving time & reducing errors
  • Flexibility: Allow for the use of different analytics techniques, mix of both old and new, which helps organizations see the data differently to ask new questions and derive new insights
  • Accessibility: Provide users with easy and secure access all their data. 


Also see: 

Tuesday, February 17, 2015

Software Innovation Ecosystem


Innovation may be broadly defined as the successful commercial introduction of a new product, service or process. In general terms, Innovation refers to the implementation of New products (or processes) that as significant technological improvements to the outputs of the products (or processes).

Often times, software innovation involves technological innovation and process innovation.   Technological innovation involves a series of scientific and technological improvements. While process innovation involves a series of  organizational, financial and commercial activities.

It is important in this context to note that software R&D must look at both aspects of innovation.

In software, incremental innovation is most common. Incremental innovation is often seen as development of a new feature or new functional aspects or new application of an existing software product or improvement to the previous generation of the software product.

Innovation Ecosystems

Today, software innovation relies on several players:

1. Companies that develop commercial software.
2. Organization that develop free/open-source software.
3. Companies that develop Compute & Communication hardware.
4. Companies that develop Information communication technologies & hardware.
5. Companies that develop hardware-software integration.
6. Companies that develop IT services.
7. Companies that provide services based on Information Technologies.
8. Companies that finance purchases of software or hardware of compute & communication technologies.
9. Companies that own & license patents.
10. Government & regulatory agencies.

Today innovation in software sector is often characterized by participation of a wide range of companies listed above. The complexity of the interactions between different players add to challenge of innovation.  Many companies in the ecosystem operate beyond the norms of software development and often complement software products. Understanding the ecosystem forms the foundation to software process innovation.

The technological convergence between hardware, software and telecommunication technologies lead to product innovation - where technology synergy and interdependence across different technologies drives product innovation.

In short, software innovation today needs a greater level of collaboration across multiple players in different segments of the ecosystem.

As a result of this ecosystem, software innovation is getting concentrated in areas/cities that has a conducive environment for collaboration. 

Monday, April 14, 2014

Product Management: Manage Requirements for Project Success



India has been a major power in computer software, but lot of companies struggle to develop software products. I have seen a lot of start-ups struggle with new product development and after several months or years of efforts product development projects are canceled.

The major problem with Indian IT companies is that they lack proper product management skills and fail to properly manage the product requirements.  In this blog, I have listed the basic steps in managing requirements to ensure new product development success - particularly for start-ups.

All product development starts with identifying product requirements. The job of product manager is to define the product requirements and work with engineering and project management office to implement it.

Successful new product development is not an easy project and there is always chances of mistakes or missteps. From experience, I have noted down few mistakes that must be avoided in all projects.

The most common problem is that of project overruns. Often the project costs more than the initial estimate and/or takes more time to complete. To avoid getting the blame for the overrun, some teams try to release a half baked product. Which results in a much bigger problem of fixing the issues after the product release.

In this blog, I have listed the basic steps in managing requirements to ensure project success.

1. Document the minimum set of requirements that has to be met to ship the product.
2. Avoid misinterpretations of product requirements.
3. Do not 'Overbuild'
4. Define 'quality parameters' as part of product requirements
5. Define compliance as part of product requirements
6. Keep a close eye on project team coordination
7. Build an agile product development process
8. Avoid excessive changes to product requirements
9. Ensure Executive involvement
10. Ensure a Beta test program with a real customer.

Document the minimum set of requirements that has to be met to ship the product.  

Before starting the development project, the first step is to document the requirements in ways that can be clearly understood by the team. If needed, use visuals or animation or mock-ups to make people understand the requirements.

These requirements must also be prioritized into "must have", "Good to have",  "Bonus" etc. The final product cannot be released if it does not meet the "Must Have" requirements. Once the "Must Have" requirements are identified, then work on estimating the time & resources needed to complete the project.

Product managers & all stakeholders must review the product to check if all the must-have features/requirements are met before proceeding with the product release.

Avoid misinterpretations of product requirements

Understanding product requirements is always a challenge. Often times, the requirements are documented in plain text. Which can be misinterpreted, leading to chaos/confusion at the time of product release.

There are several levels of requirements that must be documented. Starting at the high-level of the product concept, Architectural details, and down to user interface design requirement.

The best solution is to document the requirements using visuals - either in terms of visuals or animations or mockups. In addition, one can create user personas to illustrate the end user requirements.

During the development process, ensure that the entire product development team has a common understanding of the requirements.

Do not 'Overbuild'

A common problem with building new products is to add loads of bells and whistles into the product or build capacity/capability which is far in excess of user's real requirements.

Another manifestation of this problem is to add too many features. In most cases, there is just one customer who needs that particular feature!  This leads to adding too many features which confuses customers.

Overbuilding a product costs money, time and resources - all that for features that customers do not want!

So care must be taken to ensure that the final product actually has what is needed.

Define 'quality parameters' as part of product requirements

Quality of the product must be defined in the product requirements. The quality is as perceived by the customer. For example, Mean Time Between Failure (MTBF) of the finished product must be defined in the product requirements. In case of software, the system stability, or memory growth must be defined in the requirements. The quality parameters such as "response time" or "resource utilization" etc. must be defined as part of the product quality.

Define compliance as part of product requirements

Just like quality parameters, the product compliance requirements too must be documented in the product requirements. Often times, I have seen that the requirement document makes only a passing reference to compliance adherence - and does not dwell deeper into the actual technical details of the requirements. Such high level description is a perfect recipe for disaster - as it opens up the field for misinterpretation of requirements.

Keep a close eye on project team coordination

Today, distributed project teams have become a norm. Even startups out source some segments of projects. In such cases, the team coordination becomes a major hurdle, leading to miscommunications and project over runs. Any signs of poor coordination is a red alert on things going wrong in the project.

As part of Product management oversight on the project, it is important to keep a close eye on the team coordination and take proactive steps to improve team coordination. Product management must work with project management and engineering teams to constantly monitor team coordination and take corrective actions as necessary.

Build an agile product development process

In today's rapidly changing world, it is important to be agile - not just in project management, but also in Product management. Agile product management helps in modifying the end product to meet the market needs - even when the project is under execution.

Agile product development allows product managers to fine tune product requirements and meet customer's changing requirements.

Avoid excessive changes to product requirements

While agile product development helps, excessive changes are detrimental to the product development. Especially, when changes are made to sections of the project that is already built/coded. So any change in product requirements must be validated and vetted by all stake holders. As a thumb rule, a project should not have more than two changes to requirements - to sections that is already completed, and any change must be approved by the change request management committee - a.k.a. stake holders.

After the second change request, any subsequent change requests must have an executive level approval.

Ensure Executive involvement

New products are part of the overall business strategy. So the top executives must get involved in new product development and provide strategic inputs when required. Top executives must also oversee the project and provide active project governance. In case of startups, when the founders themselves are deeply involved in the project - the board of directors must provide the higher level governance.

Ensure a Beta test program with a real customer.

Beta testing the new product with the customer solves a lot of problems in the product development stage and also improves customer satisfaction and user acceptance. Getting customers to test the product before release will help uncover functional bugs, design gaps and other user environmental issues which could not be found in the internal testing cycle. Often times, developers use simulators for testing - which does not reflect the actual customer environment. So the Beta test helps identify those bugs or even design flaws - which can be fixed quickly.

Remember: the cost of fixing a bug in beta testing is lot cheaper than fixing it after the product release.

Closing Thoughts

Project success is also dependent on managing requirements. Product Managers must keep a tight control on product requirements. Many Indian software startups try to build a perfect product and try to please as many customers as possible or try to add too many features/requirements. This leads to an unwieldy projects - which eventually fails.  In this article I have described 10 main points product managers must follow to ensure new product development project a success.