ev 2 .0?
at is D o ftw are
Wh o ws
ring h n ging
lo is ch a
Exp e nt
e v e lopm
d
Embracing Web 2.0 Companies such as Facebook, Digg and Twitter learned
about real reuse. This reuse was more than reusing
What does it mean to get a company to fully embrace others’ architectural components to speed their own
the concepts behind Web 2.0? It is all too easy to adopt growth. They recognized that turning their own systems
the benefits of the latest hype yet miss the implications into reusable components would work as a fundamental
of such adoption, which are more significant than may at mechanism for spreading their value. So instead of
first be recognized. protecting their software from piracy, they are increasing
The fundamental processes of how software is built have their applications' value by encouraging people to
been challenged and changed. These changes to “mash-up”2 their applications. This desire to be a vital
processes and architectures have been labeled Dev 2.0. component in the web architecture and thus a valuable
The impact of this way of building software has had a property is a driving motif in the community of Web 2.0
reach far beyond the wealth of community-based companies.
products such as Facebook, MySpace, Digg, etc. It has Their architectures gave them other advantages; they
also reached into the B2B enterprise market with even were able to handle delivery and support in very
companies such as Oracle adopting Web 2.0 for their different ways because only one version of their systems
Siebel product range. This new kind of software has existed. This also removed their vulnerability to software
necessitated a new way of building software that goes piracy because they no longer had to distribute their
beyond simply managing a new software architecture. software – they just ran it on their own servers. Their
desire to be “reused” through their API is a legitimate
alternative business model to piracy: It is hard to pirate
something that can be used for free.
The biggest Web 2.0 vendors (Amazon, Google and
SalesForce.com) have built their own software IDEs and
Dev 2.0 technology stacks to enable them to deliver their
systems. Their technology stacks have tended to evolve
• Software development as an evolutionary struggle
significantly as their applications have grown. In
• Reuse others’ applications in yours – mash-ups addition, there is a growing base of commonly used
are king components that are open source such as Hadoop,
• Software as a Service is the model of delivery MemCacheDB and NoSQL databases (e.g. Cassandra).
The technology stacks of vendors such as IBM, Microsoft
• Agile development: Development is controlled by and Oracle have been bypassed since they were found
three- to six-week sprints to be too cumbersome or costly for the job at hand.
• Evolutionary architectures The ability to evolve the applications so fast has led to
- Scaling by necessity many new development practices. Some evolved from
agile, some from coping with the challenges of large-
- No standard architecture scale web deployments, and some are completely new.
- Use what works when it’s needed One of these has been a significant shift away from
static languages to dynamic language environments
• Shadow app to control and monitor the real app
such as Smalltalk, Python and Ruby where the speed of
- Analytics driving development through development and evolution of code is noticeably faster.
quantitative testing and product sampling
There are a range of providers that have taken what they
• API richer than the GUI have evolved and are providing the entire technology
• Real-time bug fixing stack and development tools as a package (e.g.,
GoogleApp and SalesForce.com’s Force.com). These are
• Never roll back – fix and move on often called “Platform as a Service” (PaaS) providers.
• Dynamic languages are the new tools of choice While these have been popular, many organisations are
taking a much more individualistic approach to their
• Perl, PHP, Python, Ruby and Smalltalk development stacks, building what suits their needs
• Integrated participatory frameworks: wikis, logs, from a range of technologies.
RSS, Twitter, Facebook, etc.
An application with many faces The only thing that matters is NOW
“The web as the platform” is a fundamental precept of All Web 2.0 apps evolve on a daily or weekly basis.
Web 2.0. It is the only way that such applications could Maintaining control of that evolution is critical to keep
have been built, and it is the glue that holds their the system working and successful. A couple of
communities together. The community that congregates strategies have evolved to enable this to happen: always
around a Web 2.0 application contributes information of rolling forward and tight integration of the test and fix
value to that community and thus increases the value of team.
the application. It is the strength of that information and
the community that supports it that represents a core With changes continually rolling into a system, it is often
part of the value of a Web 2.0 application. easier to fix something going forward than rolling
backward. Applications are rarely rolled back as the
SaaS applications are defined not just by the customer stream of new user data means that new features can
web interface but also by the programmatic API that often not be rolled back. Even if it is possible, it is
other developers can use to access their functionality. generally done at a component level.
The API provides the ability to mash-up the application,
to enhance its usefulness and reach across the Internet. Testing and defect fixing must be tightly integrated into
They often provide more functionality than the basic the engineering team to ensure as quick a response
web interface that a web user may see – those user time to initial defects as possible. With potential defects
interfaces are deliberately kept as simple as possible. able to bring down the whole system, the need to be
able to fix a system immediately is critical to the viability
SaaS applications are evolved through a process of user of the business.
product sampling. User product sampling involves
evaluating new features with a small part of the Agility is all
community to test their responses to the new features
against the control set using the standard set of To handle this rapid evolution of the system, new
features. This limits the number of people affected if the development processes have been adopted. Agile
changes are negative or harmful. Often the evaluation is processes like Scrum and Extreme Programming are
measured in a highly quantitative way to allow a much now commonly used. Software is built in sprints lasting
more automated evaluation process. Thus usability, three to six weeks with a working deliverable at the end
performance or scaling issues as well as commercial of each sprint. Progress is controlled through daily
effectiveness can be evaluated and contrasted against meetings that track development activities. The
the user base. Quantitative testing has become the development is done with less people, in less time and
standard way of analyzing the effectiveness of changes with less development artifacts while focusing on
to a system. These sampled changes are evaluated delivering working code, not models or documentation.
using a second hidden application (“shadow Product maps are rapidly evolving and tend to be short-
application”) that is created for this purpose. term. Overall, this means that less money is spent on
development.
Testing is not what it used to be Lightweight development tools and languages have
Testing has changed, with real-time user feedback being been chosen to support these new processes such as
a critical part of the test cycle. With only one version of dynamic languages like Perl, PHP, Python, Ruby and
the application running, defects are often of significant Smalltalk. There seems to be a general perception that
impact to a large number of users and very immediate in they are 30% to 40% faster and therefore cheaper to
their nature. This has led to test teams being integrated develop with than more mainstream languages such as
into the engineering team since bug fixes are required in Java and C#3. Malleability of a language and its ability to
minutes at times, and the support team is often using allow a code base to be changed rapidly, in sometimes
the most experienced engineer to fix such issues. significant ways, are now a critical features of the
Extensive automated test suites are built up, and test- language that one chooses to build such systems.
driven design is seen as fundamental to ensuring that
new features and changes will work in production.
The release cycle has also changed with releases
occurring up to several times a week, even if they are
only for components of the whole system. Releases are
numbered by their time stamp rather than a release
number. The whole development cycle including
development environment and languages must be
capable of supporting this frequent release cycle, and
testing is now a tightly integrated part of that release
process this demanding approach to release 3 This is a claim that is made very widely and largely accepted without critical analysis.
However a good example of an academic and rigorous analysis of typing’s impact on
management. development time is http://ecs.victoria.ac.nz/twiki/pub/Events/Plateau/schedule/plateau09-
hanenberg.pdf. The author Stefan Hanenberg is from the University of Duisberg-Essen. His
findings suggest that on a task that took the subjects between 0.79 and 15.83 hours the
benefit of using an untyped language was between 0.67 and 6.7 hours. Hanenberg uses the
expression “untyped languages” in the sense of “dynamic languages”.
Page 4 DEVELOPMENT IN FOCUS
Cincom, the Quadrant Logo, and Cincom Smalltalk are trademarks or registered trademarks of Cincom Systems, Inc.
All other trademarks belong to their respective companies.
© 2010 Cincom Systems, Inc. FORM CSUK1001012 04/10 Printed in U.S.A. All Rights Reserved