Category Archives: Software Engineering

Planning and Launching Software Products in an Agile Environment

This week, I had the opportunity to speak in the Agile Practitioners 2013 conference. The topic of the talk was Product Roadmap, Planning and Launch in an Agile Environment.

The talk was around approaches to modern product management, and specifically considerations due to agile methodologies and short product release cycles.

Fundamentally, old-style product management assumed software releases are done infrequently, something along the lines of this diagram:

 old-style-cycles

Whereas modern product cycles rely on shorter cycles, something along the lines of this diagram:

 modern-cycles

The assumption in modern approaches is that the road to good software is shorter when making smaller steps and frequent turns than when making large steps and more radical turns. (This is geometrically true in the diagrams…)

Old-style product cycles consisted of three main steps: planning (negotiation, prioritization, scheduling), development (design, coding, testing) and launch (alpha/beta, release, outbound marketing). The main question I was trying to tackle in the talk was how the corresponding activities map to product cycles with frequent releases.

On a side note, some organizations use old-style product cycles (infrequent software releases) while using “agile development” techniques internally (that is, frequent internal releases). While perhaps better than nothing at all, this approach misses—in my mind—much of the benefit in agile software development. In the end of the day, the biggest benefit is adapting to customer feedback, and without the software reaching real customers, value diminishes.

The areas I was trying to tackle in the talk were:

  • How does planning occur in an environment when there’s no defined period for planning (“beginning of the release”)? When the working assumption is that many of the details (and associated effort) will be revealed during the development process. And, how do roadmaps look in such an environment?
  • How do product launches occur in an environment when there’s no defined period for launch, but—instead—software is ready in chunks? How and when does customer feedback get incorporated into the cycle?
  • How does one integrate new approaches and opportunities brought about by agile development? Mostly, agile approaches facilitate experimentation through proof-of-concepts and such (with various variants such as MVP, MSP, and lean).

Here are some of the practices we’ve come to follow over the years:

Continue reading

Advertisements

Why Polyglot Programming is a Fad

One of the considerations when building a new software product is the programming language or languages to use for development. Programming languages can be taken for just tools, like a hammer; one uses them to construct software applications. But more so, they are part of the software’s infrastructure: unlike a hammer, one cannot move to use a different tool on a whim: high switching costs are required.

A few years ago, the concept of polyglot programming has gained momentum and mind share. The idea was that one could develop software using multiple programming languages, all glued together, each optimized for a piece of the puzzle. The idea was largely enabled by the two major platforms (Java and .NET) including  support for language interoperability via virtual machines. People could program in multiple languages and still connect them together without clumsy inter-language binding mechanisms.

What’s interesting is that the concept has recently gained momentum again with the resurfacing of Java-based languages such as Groovy, Scala and Clojure. Half of a recent book, “The Well-Grounded Java Developer”, is dedicated to the concept; people now argue that “no one language will rule the cloud” and that “the future [is] polyglot programmers”. But, there are fundamental reasons why the concept never took off, and never will.

Continue reading

Developing SaaS? Forget Scrum, Check Out Kanban and Similar Approaches

Earlier this week I’ve had a chance to present WebCollage’s agile development methodology at a local Agile Practitioners meeting.

At WebCollage, we are releasing a new version of our SaaS based solution to our customers every two weeks. We released 23 versions in 2011, and will be releasing the 6th version of our software over this upcoming weekend. In other words, we are firm believers in agile development and in its ability to help obtain continuous market feedback (here’s a previous post on this topic).

For various reasons, though, agile development has become somewhat synonymous with one specific approach, namely Scrum. Realizing that Scrum is widely accepted, I previously expressed an opinion that Scrum is perhaps an interesting recipe, but is far from being the best approach to SaaS agile development (and web application development in general). I have received quite a lot of feedback on that other post, some with contrarian views arguing that Scrum is perhaps a silver bullet after all.

There’s always something to be said for using the most popular approach. As an old IT saying goes, no one ever got fired for buying IBM. In this regard, there are intrinsic advantages to using Scrum, most notably the industry ecosystem: ability to easily find knowledge, share best practices, etc.

Insomuch as the actual methodology goes, though, there are simply better alternatives for many software development scenarios. Here’s a sketch of how we at WebCollage develop software, and the advantages it has over Scrum. Our approach is an adaptation of Kanban/Lean software development.

Continue reading

The Beginning of the End of Long Software Development Cycles

Last month, Microsoft announced that it would start to automatically upgrade Internet Explorer on users’ PCs, essentially following the route Google Chrome has taken.

This announcement has gained publicity in the Internet-related software community as it was evident that this action was taken to react to Google Chrome’s increasing market share. Within a few years, Google Chrome usage has grown, and it is now not only the second most popular browser overall (surpassing Mozilla Firefox), but also similar in popularity to Internet Explorer 8.0, hence essentially (in a tied race) the most popular specific-version browser overall.

But, the significance of this release transcends the browser war. It highlights that long development cycles are becoming a thing of the past.

Continue reading

7 Ways to Get First-Time Users to Love Your Web App

I regularly try out new web applications, and I am often amazed to see web applications that assume that a “short introduction video” will get users to understand what the product does and how to use it.

Sure, people love videos, and watch tons of funny cat videos. But, application tutorials aren’t funny cat videos, at least in most cases. For one thing, especially if you’re marketing a SaaS application to business users, it’s likely that users don’t even have headphones connected at their work space; or, similarly, that they doesn’t feel comfortable watching videos with their peers around. As likely, they may want to start using the application right away and may not want to take the time to watch an introduction video. But, most importantly, a video is just one tool in one’s toolbox, and getting users from point A (say, registered for a free trial) to point Z (they’re the guru of your product and help their peers use it) takes much more than a video.

Earlier this week, we at WebCollage have launched a new revision of our Content Publisher welcome pages, so I thought it may be a good opportunity to share the techniques we’ve come up with in terms of communicating our application functionality to first-time users.

I tried to outline 7 “tools” you can use to get first-time users to understand and hopefully like you web application. Here goes–

Continue reading

How to Start (and Build) a Software Career

As I had mentioned in a previous post, we are now actively hiring software developers to our development center in Tel Aviv, Israel.

As part of the interviewing process, we see software developers (and other candidates) look at various alternatives, and having a hard time to decide on a potential direction for their software career. The decisions are naturally harder for young developers who haven’t yet established some career path; but, I’m sometimes surprised to see senior engineers who seriously look at options very distant from one another, such as (as one example) building security devices vs. building web applications.

Here’s my two cents on things to look for in starting (and building) a career in software. Some of the considerations below are specific to engineering positions (developers and testers) but many are as applicable to additional roles such as product management, project management, product marketing and at times sales.
Continue reading