Stars Matter: The Secrets Of Successful App Developers

I posted a note yesterday that's been a long time coming. In doing the research for Forrester's mobile app development playbook, I've been talking with all sorts of companies that build mobile apps. Build Five-Star Mobile Apps is the first collection of those observations, but it won't be the last. The premise of the document was simple - find out how companies with top-rated apps in markets like the Apple App Store or the Google Play Store design, build, test, release, and maintain their mobile apps. While there's great diversity in approach, common factors fell out of my interviews, and these practices will help you organize your own efforts:

1. Assemble small, focused development teams. The largest development teams we found had fewer than 10 people. When teams grew larger, they were subdivided into platform-specific teams (i.e. the Android team or the iOS team). Small teams can move fast and keep impedance to a minimum but also require substantial changes in how they perform design and testing.  

2. Favor simple development tools over complex ALM processes. The need for speed that characterized the development processes we found means that most traditional ALM tools hurt more than they help. Gone are formal, text-based requirements documents and heavyweight SCM systems. Smaller code bases with less branching mean tools like Git shine. But it's not all airy castles - testing creates a real headache, so we're seeing lots of experimentation with device emulators, simulators, and even basic tricks like deploying graphic mock-ups to devices to get early user feedback.

Read more

Open Source: An Emerging Driver For "Mobile First" Strategy

Yesterday the folks from Black Duck published some interesting information on the use and growth of open source projects in the mobile space. Their data confirms that open source mobile projects are alive and well, even in the age of the Splinternet/App Internet. In fact, there are now over 10,000 open source projects focused on popular mobile platforms (see Figure 1). What’s more interesting is the rate of growth – the number of new mobile projects with open source licenses has doubled in each of the past three years. It’s hard to believe that this rate of growth will continue into 2012, but betting against hyper-growth in the mobile space seems to be a good way for analysts to end up eating crow.

Figure 1: There Are More Than 10,000 Mobile OSS Projects

Here's why you need to care about open source as part of your "Mobile First" strategy:

Read more

Here Comes The Open Web — Embrace It

One of the things I enjoy the most about being an industry analyst is that I've spent the past six years meeting some great developers. Personally, I’m not sure I could cover any other technology area then application development. The reason is simple: I see developers as a worldwide force for good (It's almost axiomatic, as the bad apples become "hackers"). Developers innovate, they create, they push technology forward — and they are fun to go have a beer with at the end of the day.

While writing for developers is fun, it’s not always easy. For the past few years, my topic coverage areas have sometimes felt a bit disjointed — almost as if there are two different developer communities out there that I deal with. In the past, I've referred to these groups as the "inside the firewall crowd" and the "outside the firewall crowd." The inquiries I have with the first group are fairly conventional — they segment as .NET or Java development shops, they use app servers and RDBMSes, and they worry about security and governance. Inquiries with the second group are very different — these developers are multilingual, hold very few alliances to vendors, tend to be younger, and embrace open source and open communities as a way to get almost everything done. The first group thinks web services are done with SOAP; the second does them with REST and JSON. The first group thinks MVC, the second thinks "pipes and filters" and eventing. I could go on and on with the comparison.

Read more

Collaborative Problem Solving And Robot Design

To pick up the narrative from my last post, we're currently one week into the First Robotics build season for 2012. Team 811 is busy working away on an initial sprint. The goal is to get a minimum viable product (a drivable robot) up by the end of sprint one, which will then be used as a base to move toward a competitive robot that can play this year's game, Rebound Rumble.

So how did Team 811 get from "huh?" to full-speed prototyping in 4 days? How does anyone get 40+ teenagers moving in the same direction when the number of unknowns is significant and the problems to solve look insurmountable? For team 811, the key was starting with a 3-day process called "Collaborative Problem Solving (CPS)." Think of it as a pre-sprint process to build team buy-in and reduce downstream back-biting and second guessing.

So what is CPS? It's a technique that starts with a problem statement and then encourages divergent thinking to brainstorm creative solutions to that problem. Criteria that allow evaluation of those potential solutions are then applied by the entire group. This starts a process of combining divergent ideas into stronger overlapping concepts and identifying those ideas that have the strongest combination of feasibility and ability. The result would be recognizable to many agile teams: a burndown "punch list" of items and strategies to drive early prototyping and the team's first sprint.

Read more

Agile Development And Robots: Are You Smarter Than A 10th Grader?

One of the counterintuitive things that we observed early on in the days of object-oriented programming was that developers with no previous programming experience often picked up concepts like inheritance, encapsulation, and polymorphism much more quickly than seasoned programmers and became productive earlier than their more experienced counterparts. Today I feel like I'm on the other end of this learning challenge as I try to adapt to new programming concepts in JavaScript or Python. I think the biggest reason for this phenomenon is that experienced folks have to unlearn what we know, and it's hard to give up certainty and the mechanisms that allowed us to achieve success in the past. I think the same principle is at work when you look at toddlers that instinctively "get" how to use the iPad - they expect everything to work that way. It should be so easy for all of us.

Does this same sort of thinking apply to software and systems development processes? I'll tell you why I think it does. For the past three years I've been a mentor for a US FIRST Team (Team 811, the Bishop Guertin Cardinals). During this time period, I've seen high school students with little to no technical experience instinctively adopt many principles that experienced Agile teams would recognize. For these kids, Agile development is like using an iPad - they take to it naturally because it just makes sense given the context of what they are trying to do.

Read more

What Is The State Of Your Consumer-Facing Mobile Initiatives?

My colleague Julie Ask is fielding a survey that asks a number of questions about your company's consumer-facing mobile strategy. If you have a few minutes to spare, please take the survey to answer her questions and help us out with some in-process mobile research.

Here's the link to the survey.

 

Thanks!

 

Jeffrey

The Relationship Between Dev-Ops And Continuous Delivery: A Conversation With Jez Humble Of ThoughtWorks

If you've been reading the research I've been writing over the past year, you know that I'm a fan of implementing an application life-cycle management strategy that focuses on increasing development flow and supports high-performance teams. You don't need to religiously implement all 22 CMMI processes or deliver dozens of intermediate development artifacts like some leading processes advocate. Rather, there are certain important processes that you should spend your time on. We wrote about change-aware continuous integration and just-in-time demand management in last year's Agile Development Management Tools Forrester Wave™. They are two of my favorite areas of focus, and they are great areas to invest in, but once you have them working well, there are other areas that will require your focus. In my opinion, the next process where you should focus on flow is everything that happens post build and preproduction. Most folks think about this process as release management or configuration management, but I think there's a better term that focuses on how quickly software changes move through both processes. It's called continuous delivery. When you focus on establishing a process of continuous delivery, you'll find that your capacity to release changes will increase, your null release cycle will shrink, and a larger proportion of the productivity gains you've seen from your Agile development efforts will flow through into production.

Read more

Expand Your Enterprise Mobile Horizon

 

Monday was yet another announcement-filled day in what seems to be the year that mobile takes center stage for application developers. While the U.S. Congress was grilling Apple and Google executives about their privacy practices, Microsoft was buying Skype,  and Google was making a slew of announcements including information about Ice Cream Sandwich, the next version of Android. Mobile strategy is high on everyone’s list: It’s a refrain I hear every week in the client inquires I take. The shift to mobile is big — as big as anything I’ve seen since the early days of client-server. If the arrival rate of my inquires is any indication, it’s bigger than the move to implement SOA and it’s faster than the embrace of open source software. It’s ironic that both have a part to play in incorporating mobile apps into enterprise infrastructure. In some ways, they are key contributors to the perfect storm we’re in now.

But as big as mobile seems now, I’m not sure that IT professionals are thinking big enough. I’ll be moderating a keynote panel at IT Forum with some of Forrester’s best thinkers in the mobile space, and as I’ve been reviewing some of their slides I find that they’re expanding my vision of just how profound the changes we're going through are going to be. These are some of the issues we’ll be discussing:

Read more

The App Internet: What It Means For Development Professionals

 

My colleague John McCarthy just published an excellent report sizing the "app Internet," a phenomenon Forrester defines as "specialized local apps running in conjunction with cloud-based services" across smartphones, tablets, and other devices. Forrester estimates that the revenue from paid applications on smartphones and tablets was $2.2 billion worldwide for 2010 with a CAGR of 82% through 2015. We're witnessing the rebirth of the rich client in real time, on the mobile device instead of the laptop or desktop. Developing applications using native application technologies like Objective-C, Java, or Silverlight is clearly how the majority of developers are reaching these mobile platforms today (see figure).

Read more

Release Management And The "First Rule Of Holes"

 

Ever hear about the "First Rule of Holes"? It's pretty simple — if you find yourself in a hole with a shovel, the first thing to do is.... stop digging!

That's kind of what it's like in app dev when it comes to release management: We've dug ourselves a pretty deep hole, and it's impacting our overall ability to ship software on time. We recently ran a survey of app dev professionals that confirms what we hear in our client inquiries: Most development leaders are frustrated with slow software delivery and their release management process (see Figure). While Agile speeds software design and development, it doesn't do much to speed up release and deployment — creating a flash point where frequent releases collide with slower release practices.

But some organizations have stopped digging themselves in deeper. They are working with their peers in operations to streamline release management and cutting steps into the side wall of their hole so that they can climb out, step by step. Here are five steps that they are taking:

  1. Investing in improving their pre-build processes. Many problems that occur during a release cycle have their root cause in inadequate pre-build tasks and activities.
  2. Expanding release management throughput. Projects that have large code bases or extensive testing cycles are using parallelism and intelligent testing processes to speed up the early stages of the release cycle.
  3. Optimizing their release pipeline. After taking care of the early stages of the release pipeline, advanced teams are implementing virtualization, parallel testing, and developer self service to further compress their release cycles.
Read more