hashedin.com...components are architected of basic building blocks. this layered abstraction helps...
TRANSCRIPT
Index
Foreword 5
Trends of Internet 2017 6
Digital Business needs Cloud Native Architectures 11
Is your software Enterprise Ready? 16
Technology : Why you should consider Python? 19
Can fixed cost and agility go together? 21
Launch an enterprise ready digital product on cloud in a day 23
Businesses are moving towards specialized sourcing 26
4
Foreword
Marc Andreessen penned his famous “Why Software Is Eating the World” essay
in The Wall Street Journal five years ago. Today, the idea that “every company needs to
become a software company” is considered almost a cliché. No matter which industry
you belong to, you’re expected to re-imagine your business.
Hashedin is the next generation product development services company. We are agile
and nimble, and take pride in guaranteeing business outcomes for our customers. As a
business leader, your innovative ideas need to come to life. Hashedin is your partner in
this digital journey.
This ebook is a collection of essays, and will help you understand the digital landscape. I
hope you will find it useful.
Wish you a year filled with success!
Himanshu Varshney
CEO, HashedIn Technologies
5
Trends of Internet 2017
From voice search to design, learn about the internet trends that are changing the digital world
20% of Mobile Queries Made via Voice
Mobile innovation has had a great impact in the last few years. Innovations such as
Speech to Text and Text to Speech have become primary input/ output features in
mobile devices.
It started with numerical keypads, to qwerty keypads and then the world changed to
touch screen. Meanwhile, voice inputs are gaining traction in the last couple of years and
according to trends, 20% of mobile queries are made over voice inputs.
Real-Time online customer conversations rising rapidly
Internet and Software evolution has brought consumers and businesses as close as
possible. There were times when consumers were finding it hard to reach out to the
support personnels or take help over phone calls.
Now, with the real time online chat systems that help you chat, share screens, images,
documents etc, Consumer-Producer communication has become hassle free and
efficient. This in turn is drawing more attention towards building better communication
channels over internet and innovate cool chat bots.
6
Pictures will replace keyword search in the future
Today, the world of search engine is built upon keywords and hence choosing the right
keywords for your web content is crucial for a better search result.
Ben Silbermann, Pinterest Founder
A lot of the future search is going to be about pictures instead of keywords We believe that in the near future, pictures will dominate the search engine world,
Thanks to great image detection algorithms.
Concerns with Cloud
As we all know, cloud has been there for quite some time now and is evolving, there
have been numerous products that are deployed on cloud, giving us a view on how it has
fared over a period of time.
There have been concerns on cloud and its usage. A few have been handled during the
evolution, while a few are in the process. Following are some of the concerns that a few
product owners are still facing; the list is in the order of increasing concern.
● Data Security
● Cost Uncertainty
● Loss of control/ backups
● Compliance and governance
● Reliability
● Data Portability
7
● Software Compatibility
● Vendor Lock-in
Software Transformation - 2000 to 2017
Perception of users over on-premise apps to cloud based SaaS apps and
now moving to mobile first apps.
Technology has evolved, software products are now playing a vital role in everyone’s day
to day life. Perception of a software product has changed from time to time and some
aspects are given importance at any point of time.
Here is a small comparison on how the perspective of people has changed during this
period.
Product Aspect 2000 2017
Delivery Method On-Prem Cloud-based
Pricing Perpetual Licence Subscription
UX Generic Personalized
Intelligence Constrained Unlimited(AI / ML)
Growth Engine Sales Product
Purchase Decision Top-Down Bottom-Up
Measure of Engagement &
Customer Satisfaction
N/A DAUs / MAUs / NPS
8
Change in Designer : Developer Ratio
As technology grows, development standards and processes also improve and this has
induced debates on the ratio between a designer and developer count for a product
team. Meanwhile, trends show that due to the growth in technology over the decade,
there has been a drastic change in the ratio. Here is a high level comparison on selected
enterprises.
Organisations 2010 - 2012 2017
1 designer : 25 developers
1 designer : 9 developers
N/A
1 designer : 6 developers
1 designer : 72 developers
1 designer : 8 developers
N/A
1 designer : 5 developers
1 designer : 11 developers
1 designer : 8 developers
9
Cloud enabled apps - Rising rapidly, Cheaper to build, Easier to adopt,
Harder to secure
With the growth of technology and product innovations, building a software product has
become cheaper and easier to adopt. However, there have been major concerns on
security and hence raising concerns on vulnerabilities.
As per Netskope on Kleiner Perkins trends of internet 2017,
“94% of all cloud apps used are not ‘enterprise-ready”
More details are available about this in the article “Is your software
Enterprise Ready” inside this eBook.
10
Digital Business needs Cloud Native
Architectures
Every business needs to be a digital business today
Today we are living in what @bethcomstock rightly calls the Emergent era. In her blog
she explains it succinctly as, “... a time defined by the rapid waning of our legacy
institutions, even though their replacements haven’t scaled up yet. We’re in that messy,
sometimes anxious, and ambiguous space between the old and the new.”
In this emergent world, businesses are dealing with significant uncertainty and dynamism
in customer behaviour and competition. In addition, there is significant disruption hitting
all industries due to remarkable progress in technology, collectively being called the 4th
Industrial Revolution. In today’s world, businesses need to adopt digital technologies to
adapt and survive in the markets.
Elements of digital solutions
At the core of a Digital Business lies software that is disruptive and helps business grow
and thrive in these uncertain time. While enterprise business software has been around
for some time, we’re seeing a revolutionary shift in the way Digital solutions are getting
conceptualized and created. Some of the unique attributes that differentiate them from
traditional enterprise apps are:
● UX - Delivers delightful omni-channel customer experience that engages users to
make them strong personal advocates for the business
11
● IoT - Leverage the connectedness of “things” - devices and people; to power
disruptive solutions that enhance overall capabilities of the product as well as user
experience
● AI - Imbibes “intelligence” derived from stored or streamed data gleaned from
different aspects of ongoing business operations to help make real-time decisions
more effective
● Bots - Executes “tasks, workflows and actions” through automation that help
streamline work and also improves business efficiency and agility, while
enhancing governance and compliance
● Digital Ecosystems - Reimagine the supply chain and the industry networks
supporting the customers and markets using technology and shifts the value
levers using emerging technologies
Digital solutions need adaptive and agile platforms
The expectations from digital solutions to help businesses transform are significant and
the most critical aspect of being able to build such solutions is having the right skilled
cross-functional teams that have full end to end accountability for the product/ solution
lifecycle. This team, also known as Agile-Squads, focuses on product management, user
experience design, software development and DevOps. Given such dynamic and
adaptive requirements, it’s important that the software product development teams have
the right platform for developing and running the digital solutions. Some of the key
enablers required from the digital platforms to be adaptive and agile are:
● On-demand platforms: Fast paced agile development needs digital platform to
support development, testing and production workloads that are available on
demand, pay per use with low hurdles to provision without long term
commitments.
12
● Everything as a Service: One of the key requirements for digital solutions is the
ability to choose the right technology components amongst the many choices
available today and be able to integrate them into a solution with ease, as and
when they are required. This necessitates that the technology is provided by the
platform as a service without the development team needing to worry about its
maintenance and upkeep through the lifecycle.
● Reliable: The digital platform needs to be extremely robust and provide reliability
and predictability in operations.
● Resilient: While the platforms need to be reliable, but in real world everything fails
sometime and what’s needed are platforms that are resilient and can self heal and
recover when such events happen.
● Scalable: Digital solutions are targeted at consumers and/or connected things and
need to be designed ground up to be able to scale to multiple orders of
consumption. This demands the underlying platforms that support the solutions to
be highly scalable.
● Secure: Digital solutions today are delivered through internet technologies. While
this helps with distribution, it also opens up avenues for security threats, and
needs a highly secure platform to keep it safe from malicious attacks.
Cloud native architectures bring digital platforms to life
As described in the previous section, digital solutions require on-demand platforms that
offer everything as a service, are reliable, resilient, scalable and secure. Over the past
decade the evolution of cloud native architectures has made it possible to deliver to
13
these expectations. Cloud native architectures are able to deliver the outcomes required
by Digital platforms by delivering these important characteristics:
● API based/ as-code - It is extremely important to deliver agility in provisioning
infrastructure and services by making it api based/ configurable as-code. Today
cloud native platforms provide these features out of the box and allow multiple
services to be provisioned with ease through multiple options like environment
provisioning scripts, container based provisioning or PaaS auto provision solutions
● Layered abstraction - One of the default requirements for as-a-service models is
the concept of layered abstraction. If the software needs to run compute or
storage services, it will directly interact with the IaaS layer on Cloud, but then it
needs to consume a data service, it will leverage PaaS components like Database
as a Service or Search as a service etc. In such cases it is immaterial how the PaaS
components are architected of basic building blocks. This layered abstraction
helps manage complexity and scale
● Elastic services - Cloud architectures have native capability to be elastic and
provide horizontal or vertical scalability. This enables dynamic load and
performance management to meet variable growth patterns
● Loosely coupled - To ensure overall solution reliability, it is important to design
loosely coupled architectures of independent service components like
containerized applications, functions as a service (aka serverless) and the right
data services like cache, queue, search, streams, nosql or rdbms
● Fault tolerant - In cloud native architectures, which are based on highly
commoditized distributed systems, it is important to design for failure. The native
14
cloud services provide capabilities like multi DC failover and high availability
managed services to enable fault tolerance by design
● Recoverable - While design for failure enables increased MTBF and capabilities
for graceful failures, however components do fail sometimes and Cloud native
architectures provide monitoring and automation capabilities for self healing to
make recovery easy
● Software release automation - One of the most important metric for agile
development success is releasing as early and as often, updated code to
production, without breaking the code pipeline and production deployment. This
is one of the key deliverables for the DevOps teams and Cloud native architecture
provide very strong development tooling and integration to automate the code
pipelines, a process more commonly referred to as Continuous Integration and
Continuous Delivery
● DevSecOps - DevSecOps is a new integrated practice gaining traction that is
attempting to make security an inline process along with development rather than
a traditional audit gate post development by making it integral to the DevOps
cycle. This is possible because of the same cloud native attributes of fine grained
and api-enabled security controls available in digital platforms that can be
leveraged for programmatic security policy definition and compliance
15
Is your software Enterprise Ready?
Are you building software for enterprise users? Here are 8 must-haves
before you can start selling to an enterprise customer.
Modern User Interface
Enterprise software has this notorious distinction of being difficult to use and is still stuck
in the nineties. Employees are increasingly exposed to consumer grade software, and
are demanding similar ease of use from software at work.
Over the years, designer to developer ratio has constantly improved. LinkedIn reports a
ratio of 1 designer for every 8 developers; whereas dropbox has 1 designer for every 6
developers.
Single Sign On
Nobody likes remembering yet another username and password. There are several
single-signon solutions, and which one you choose depends on the type of enterprise
you target.
Most enterprises have active directory to manage users, so the least you can do is
integrate with LDAP / Active Directory. More savvy organizations have SAML. Java based
enterprises use JASIG CAS. Finally, more modern organizations use OAuth based
solutions.
16
Audit Logs
Enterprise grade applications require strong audit controls. At a minimum, your software
should be able to answer “Who did what and when”. Wherever possible, try to capture
the intent behind the action - i.e. why did the user make this change.
A nice to have feature is an excel or csv dump of all audit events.
Role Based Access Control
Enterprises have complex team structures, and require fine grained access control. Your
software must allow them to create roles and control permissions at an individual feature
level.
Multiple Deployment Options
Enterprises are slow to adopt the cloud, and like to be in control of their data. Your
software should work well in an on-premise environment, behind the corporate firewall.
This means that you cannot depend on third-party REST APIs. If you are using AWS S3,
you would need an on-premise equivalent service, otherwise it would be difficult to sell
to an enterprise customer.
Docker based solutions are increasingly gaining in adoption within the enterprise, and
are a good solution to supporting both on premise and cloud models.
Integrations
Enterprises have dozens of existing applications, and your software application needs to
play well with these applications. The key to this is a well defined API. It should be
17
possible to totally bypass your user interface and work with the application directly via
your provided APIs.
Reporting and Analytics
Your application needs to make it simple to create reports and dashboards. There are
several off the shelf tools available for business intelligence, so building a user interface
isn’t a differentiator. Instead, concentrate on building a data warehouse, so that
enterprise customers can plug in any business intelligence tool.
Feature Gates
Feature gates allow you to turn on or off features without redeploying. This gives you the
ability to roll out features to only certain customers. Enterprise customers don’t want to
test out incomplete or buggy features, and feature gates lets you turn off the features
without resorting to complex branching strategies.
18
Technology : Why you should consider Python?
Many people think that Python is a new programming language. It may be a surprising
fact to many that Python is older than Java. Python was first released in 1991, whereas
Java was first released in 1995.
Python is a very powerful language. It is extensively used due to its large package
support for almost any type of problem. Following are some features that make python
favourable:
● It’s easy to learn compared to other languages
● Very clear readable syntax and keywords, with proper indentation being part of
syntax checking
● Significantly less number of lines of code for similar problems programmed in
other languages
● Has a very large third party package support that will get the job done for a large
range and various type of problems. Eg. Machine learning, image processing,
complex network analysis, plotting graphs, GUI etc
● It has interfaces for other languages like C and R
● Easy to manipulate large data, linear algebra and matrix operations with pandas,
numpy, scipy, sklearn etc
● Provides a balance between high-level and low-level programming
● Great in gluing other languages together due to its universality
● Provides built-in test framework that encourages good test coverage
On the flip side, as an interpreted language, it’s slower than C or C++.
19
Overall it can be a useful language to learn. It is capable of handling most type of
problems with only a few imports. It is well suited for incremental and quick development.
Python has been used by many companies to build large scalable and performant
applications. Some of companies using Python are Google (Youtube), Facebook
(Tornado), Dropbox, Yahoo, NASA, IBM, Mozilla, Quora, Instagram and Reddit.
20
Can fixed cost and agility go together?
Many in the IT industry are of the opinion that Agility and Fixed Costs are two extremes
and cannot go together. In an ideal scenario they cannot go together if we go by their
true meaning. Fixed Cost safeguards businesses, whereas Agility helps the development
team in safeguarding the unknowns and risks. Typically, fixed costs are associated with
waterfall approach, and agility means that the team has to work in T&M mode to manage
the uncertainties and change in direction.
Estimating and adding a fixed price at the beginning of a reasonably large project is a big
challenge. The following are some of the major reasons:-
● Buyers and suppliers do not know each other, i.e. lack of an existing trust
relationship
● Project is under a major time pressure, so there is no time for in-depth upfront
planning
● Requirements evolve with time
● Project requires the use of unknown technologies
● Fixed-price offers from multiple vendors are too different, so they cannot really be
compared
Fixed price with fixed scope does not help in ‘win-win’ during Product Development
phase in many cases since defining every detail of the scope is not feasible at the start of
the contract and few things are bound to change. Every suggestion for improvement
from customers and the development team often ends in a scoping and costing debate,
which takes up a lot of time and focus.
So how can we have agility in Fixed Cost? There are a few techniques to do that. One of
them is by using the concept “Fixed Price, but Variable Scope”, which means to come up
21
with a plan that says, "We have $X to spend and we need 3 monthly releases, (July,
August and September). Stakeholders and team will collaborate to prioritise and include
the must have features to go live within the defined timelines of 3 months -- which also
means that we might not complete the whole product backlog"
By the time team has spent 3 months on developing something tangible, stakeholders
must identify the next chunk of scope to be implemented in the next time frame for $Y.
This way the risk of “Fixed Cost” is broken down in an agile manner.
Next level is to start with a couple of sprints to understand the depth of the landscape,
system, requirements, unknown parameters, and then modify the project plan and the
cost accordingly.
Lastly, instead of one number, come up with a range of costs, along with clear
assumptions and risks. The lower number states that team cannot make it any faster.
Upper Bound means that the project can cost up to this amount, the team will try to keep
the costs lower but it may go to upper limit if the assumptions / risks are not mitigated.
22
Launch an enterprise ready digital product on cloud in less than a day
Cloud has become a buzzword and to those who aren’t exposed to it, it remains a
buzzword. Software has been into business over decades now growing like a banyan
tree, and at any point of time there is always another new branch to it spreading out
shade in the form of opportunities and growth.
Today deployment over cloud is a day to day task. Thanks to all the leading cloud
providers and the experts on cloud who help softwares gain potential at quick pace.
Having developed and deployed numerous applications on the cloud, here is a short
guide on how you can get your product on the cloud in less than a day.
Choosing the right cloud provider
The cloud market today has various service providers offering great service at competent
prices. You may have to spend a few hours identifying the right ones based on your
needs. The choice of the cloud provider should depend on your tech stack, deployment
strategy and application usability.
Points to consider while choosing a cloud provider for your product
● The first and the foremost aspect is to choose between IaaS, SaaS, PaaS. Your
Product’s tech lead should be able to guide you with this
● Next is to find if the cloud provider can offer the required database support
● Cost is a crucial aspect and that is one of the main reasons why cloud technology
even exists. Based on the requirement of the product, you need to choose the
one that can provide reliable services at efficient cost.
23
Hashedin being an advanced AWS partner has been using and providing professional
support on AWS and its products for most of its customers. Heroku is also considered for
quick and small scale applications that need to go live immediately.
Launching a machine on the cloud server
After taking the right decision in choosing the cloud provider, the next task is to launch a
machine in your cloud account. This task shouldn’t ideally take more than a couple of
hours as cloud are powered with great UI for launching and handling a server on the
cloud. Your machine should be immediately up and running once launched.
While launching a machine consider the size, memory, operating system, cost and
scalability. A lot of your products’ performance would majorly depend on your machine’s
configuration.
Installing necessary softwares on the server
As a one time task your tech lead might want to install a few necessary softwares such as
the web and/or application servers, frameworks, softwares etc.
This task should be straightforward like working on a development machine as cloud
providers offer you great command line interfaces (CLI) to login to your machines and
perform operations.
Build your product on the server
Once the setup as mentioned in the previous steps are complete, it’s time to
build/deploy your application.
You should be able to transfer a version of your product from your revision control to the
cloud machine and build it at the right path. Or, If you have a CI or a built distributable of
the product you may move them to your web / app server’s location.
24
Launch your application
Now your product must be ready for launch, and just before you actually launch it, verify
your database connections and external integrations if any. Once all of them are ready,
it’s time to launch and serve it over cloud for your users.
Your application should be served over a public ip on a specific port, in addition to this
your cloud server should allow you to map your custom domain from your cPanel
account, enabling custom domain redirection.
All the above tasks should ideally consume less than a day in empowering quick launch
of software products without any hassle.
Also note, these steps help you quickly launch a product on server assuming you have a
standard level of product setup and integrations. In case your product demands
additional integrations, it might consume more time depending on the integration and the
cloud server.
25
Businesses are moving towards specialized sourcing
The paradigm of strategic sourcing is undergoing a fundamental
transformation as Technology is becoming fast evolving, complex and
becoming a clear differentiator.
Digital business creates new – but necessary risks, including business risks in terms of
investments. The organizations are now forced to develop their technology assets core
to the business, and the businesses need to make technology a core part of the business
strategy to answer:
● Are we investing ahead of the curve? Would we be caught in the first mover
disadvantage?
● Would we lose the battle if we move after the competition?
● What portion of these investments are a differentiator for the organization?
● Should the technology processes map the current organizational processes or the
new age processes for the organization?
In Digital businesses, models that focus on costs need to be replaced with managing
risks with rewards. This transformation and the role of technology is impacting the key
outsourcing decisions.
Outsourcing decision has been moved from a cost based decision to a competitive edge
decision, from a generalist base to a specialist base. Hence, the decision making
between large companies and boutique is based on:
26
Large Technology Partners Boutique Technology Partners
Integrated
Technology
Solutions
Hybrid organizational design
internally makes it difficult to
break the silos.
Multiple facets of the digital wave
including customer engagement
mechanism, organizational process
mapping and organizational decision
making process are all getting merged
with the technology products &
solutions and are best brought by new
age product services organizations.
Executive
Sponsorship &
Thought Support
Thought support from the
Consulting team with limited top
management support
Ensures alignment of business
strategy, technology architecture and
software solution
Depth of Knowledge
at execution
Traditional focus of large
companies has been to “train the
talent” rather than “hire the right
talent” for execution.
Boutique companies are able to bring
high quality talent and groom them on
technology solutions leveraging new
age solutions including artificial
intelligence, machine learning, iOT,
virtual reality much better.
Software Quality
Mechanism
Standardized software processes
ensure greater standardization of
the outputs across the clients.
Boutique players are higher on the
innovation and the strength of the
processes could be limited.
Agility While the development
mechanism has moved from
“Waterfall mechanism” to agile
technologies, the expected speed
to deliver products is shrinking far
more.
For boutique product development
companies, the expertise yields them
for a specific faster go to market than
traditional software providers.
These imperatives have led organizations take a conscious call to seek support from
specialized boutique organizations for their solution and product development with deep
technology depth to provide agility and guarantee outcomes.
27
Prasanna Ganesan
HashedIn team turned around a 15 year old framework to a modern technology stack in 10 weeks which also improving our developers efficiency by 10x!
“ VP Operations, Winzip
Harish Abbott
HashedIn MVP service is a winner. It saved us time & focus and we were able to quickly launch ideas in three week iterations to gather feedback and improve end-to-end
“CEO, Symphony Commerce
Brian Rauch
HashedIn team has played a crucial role in making many multi-million dollar projects for a Big 3 Automotive customer successful.
“Director, Versata
HashedIn has delivered 90+ Digital Products at 40% Faster Speed with Guaranteed Outcomes
28