Warning: Table './devblogsdb/cache_page' is marked as crashed and last (automatic?) repair failed query: SELECT data, created, headers, expire, serialized FROM cache_page WHERE cid = 'http://www.softdevblogs.com/?q=aggregator&page=7' in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc on line 135

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 729

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 730

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 731

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 732
Software Development Blogs: Programming, Software Testing, Agile, Project Management
Skip to content

Software Development Blogs: Programming, Software Testing, Agile Project Management

Methods & Tools

Subscribe to Methods & Tools
if you are not afraid to read more than one page to be a smarter software developer, software tester or project manager!

Feed aggregator
warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/common.inc on line 153.

Acting Like an Adult in the Presence of Uncertainty

Herding Cats - Glen Alleman - Thu, 10/27/2016 - 18:41

Risk Management is how Adults Manage Projects - Tim Lister

There are two kinds of uncertainty on all projects, no matter the domain, including software development projects

Screen Shot 2016-10-27 at 11.21.29 AM

Both these drivers of risk will impact the probability of success of projects

Screen Shot 2016-10-27 at 11.23.38 AM

Decision-Making in the Presence of Uncertainty

Decision-making is the process of choosing among alternatives. The nature and context of decisions vary and have a variety of criteria to be considered in making a choice. The alternatives can involve a large number of uncertainties about the factors that influence the ultimate outcomes. For high-consequence decisions with potential outcomes that can have a large impact on valued things, the decision-making process should involve consideration of uncertainties about the outcomes. [1]

For customers paying for the development of software, these things include - cost, schedule (time cost of money), market timing, and performance of the product to name a few.

A decision is a resolution on an issue or a problem of interest being considered. The process of making a decision involves three elements: values, alternatives, and facts (Buede, 2009). [1]

  • Values are criteria used to assess the utility of the outcome. Depending on the context, values can be objective or subjective, and quantitative or qualitative. The values capture the needs, objectives, and preferences of the stakeholders, which are the people and organizations that have an interest and can influence or be influenced by a decision.
  • Alternatives may be given or can be the result of a creative process to generate potential solutions to the problem of interest. The facts are everything known about the alternatives and the context or environment in which the alternatives will be deployed or applied.
  • Facts are the relevant data, information, and knowledge used in the process of assessing the alternatives against the values in order to make the decision. The decision makers use available facts, history, experience, and judgment to select an alternative.

In our software development world, Values, Alternatives, and Facts are always part of the decision-making process mo matter if we're spending our customer's money or our own.

If we're going to make risk-informed decisions in the presence of uncertainty, then we're going to have to estimate to a probability of occurrence, the statistical range of values of the drivers of the risk, the probability of consequences or the statistical range of outcomes.

If you've chosen to not estimate, then Tim Lister suggests we're not acting like adults when spending other people's money.

 [1] "Considering Risk and Resilience in Decision Making," Wilfredo Torres-Pomales, Langley Research Center, Hampton, Virginia, NASA/TM-2015-218777

Related articles Risk Management is Project Management for Adults Making Decisions In The Presence of Uncertainty The Notion of Enterprise Software Development Herding Cats: Project Management, Performance Measures, and Statistical Decision Making Quote of the Day Decision Making in the Presence of Uncertainty Herding Cats: Quote of the Day Some More Background on Probability, Needed for Estimating
Categories: Project Management

5 Tips to help you improve game-as-a-service monetization

Android Developers Blog - Thu, 10/27/2016 - 17:15

Posted by Moonlit Wang, Partner Development Manager at Google Play Games, & Tammy Levy, Director of Product for Mobile at Kongregate

In today’s world of game-as-a-service on mobile, the lifetime value of a player is a lot more complex, where revenue is now the sum of many micro transactions instead of a single purchase with traditional console games.

Of course you don’t need a sophisticated statistical model to understand that the more time a player invests in your game, and the more money they spend, the greater their LTV. But how can you design and improve monetization as a mobile game developer? Here are 5 tips to help you improve game-as-a-service monetization, with best practice examples from mobile games publisher, Kongregate:

1. Track player behavior metrics that have a strong and positive correlation with LTV

  • D1, D7, D30 retention indicates how well a casual player can be converted into a committed fan.
  • Session length and frequency measures user engagement and how fun your game is.
  • Completion rate at important milestones can measure and pinpoint churn.
  • Buyer and repeated buyer conversion, represents your most valuable user segment.

2. Optimize for long-term engagement and delight your best players

Retention is the first metric that can distinguish great games from mediocre ones. Games with higher retention rates throughout the user’ lifecycle, monetize better consistently. Retention is king, and more importantly, long-term retention should be prioritized. Therefore, when designing your game, aim to create a sophisticated and engaging experience to delight your most committed fans.

[This chart shows the retention of top games / apps over time]
  • When considering long term retention, focus on achieving a strong D30, but also look beyond the first 30 days. Measure long term retention by assessing the following rates: D30 to D60, D30 to D90, and D30 to D180. The higher the rate, the stickier your game is in the long term, which will increase your LTV.
  • Players are willing to pay a fixed amount of money per hour of “fun”, so think about updates when designing your game, to make the content rich and fun for those who will play at very high levels and spend the most time within your game, don’t gate your players or hinder their in-game progression.
  • Use the Google Play Games Services - Funnel Report to help you track different milestone completion rates in your games, so you can identify drop off points and reduce churn
.
3. Increase buyer conversion through targeted offers

First-time buyer conversion is the most important as player churn rate drops significantly after the first purchase, but stays relatively flat regardless of the amount spent. Also, past purchase behavior is the best predictor of future purchases. Find your first-time and repeated buyer conversion rate directly in the Developer Console.

  • Use A/B testing to find the price that will maximize your total revenue. Different people have different willingness to pay for a given product and the tradeoff between price and quantity is different for different products, so don’t decrease prices blindly.
  • Tailor your in-game experience as well as in-app purchase offers based on the player’s predicted probability to spend using the Player Stats API, which predicts players churn and spend.

For example, in Kongregate’s game Spellstone, testing two pricing points for a promotion called Shard Bot, which provides players with a daily “drip” of Shards (the premium currency) for 30 days, showed players had a much stronger preference for the higher priced pack. The first pack, Shard Bot, priced at $4, granted players 5 daily shards, and the second pack, the Super Shard Bot, was priced at $8 and granted players 10 daily shards.

[Two week test results showing preference for the more expensive pack, which also generated more revenue]

Kongregate decided to keep the higher priced Super Shard Bot in the store, although both packs resulted in very similar retention rates:

4. As well as what monetization features to implement, take into consideration why, when and how to do so

  • Why: “Buyer intent” is most important. Any item with a price tag should serve to enhance your players in-game experience. For example, a new map, a new power, something exciting and additional to the free experience. Don’t gate your players with a purchase-only item as happy users means more time spent with your game, which will lead to higher revenue. Educate users by gifting some free premium goods and currency during the tutorial, and let users experience the benefit first.
  • When: Time offers based on when users may need it. If your IAP is to continue gameplay after timeout, then you should surface it right when the timer ends. If your IAP is to offer premium equipment, then you should surface it when users gear up their characters. The offer should be contextually relevant, such that the content should cater to the player’s current status and needs in-game.

    In particular, Starter Packs or New Buyer Promos need to be well timed. Players need to understand the value and importance of all the items before they are shown the promotion. If surfaced too early, players will not feel compelled to purchase. If surfaced too late, the offer will not be compelling enough. The Starter Pack should appear within 3 to 5 sessions since install, depending on your game. Additionally, limiting its availability to 3 to 5 days will urge players to make a quicker purchase decision.

    For example, BattleHand’s starter pack is surfaced around the 4th session, it is available for 36hrs and contains the following items to aid players in all areas of the game:

  • Powerful cards that have an immediate effect in battle
  • High rarity upgrade materials to upgrade your card deck
  • A generous amount of soft currency that can be used in all areas of the game
  • A generous amount of hard currency so players can purchase premium store items
  • Rare upgrade materials for Heroes
[Example starter pack offer in Battle Hands] Thanks to the strength of the promotion over 50% of players choose the Starter Pack instead of the regular gems offerings:
  • How: There are many ways you can implement premium content and goods in your game, such as power-ups, characters, equipment, maps, hints, chapters etc. The two most impactful monetization designs are:
      Gacha - There are many ways to design, present and balance gacha but the key is to have randomized rewards, which allows you to sell extremely powerful items that players want without having to charge really high prices per purchase.
[Example of randomized rewards in Raid Brigade’s boxes]
      LiveOps - Limited time content on a regular cadence will also create really compelling opportunities for the players to both engage further with the game and invest in the game. For instance, Adventure Capitalist has been releasing regular limited themed time events with their spin on the permanent content, their own progression, achievements and IAP promotions.
[Example timed event for Adventure Capitalist]

Through this initiative, the game has seen regular increases in both engagement and revenue during event times without affecting the non-event periods:

[Timed events drastically increase engagement and revenue without lowering the baseline average over time]

5. Take into account local prices and pricing models

Just like different people have different willingness-to-pay, different markets have different purchasing powers.

    • Test what price points make sense for local consumers in each major market. Don’t just apply an umbrella discount, find the price points that maximize total revenue.
    • Consider charm pricing but remember it doesn’t work everywhere. For example, in the United States, prices always end in $x.99, but that’s not the case in Japan and Korea, where rounded numbers are used. Pricing in accordance to the local norm signals to the customers that you care and designed the game with them in mind. The Google Developer Console now automatically applies local pricing conventions of each currency for you.

Check out the Android Developer Story from games developer, Divmob, who improved their game’s monetization threefold simply by adopting sub-dollar pricing strategies. Also, learn more best practices about building for billions to get more tips on monetization.

Get the Playbook for Developers app and stay up-to-date with more features and best practices that will help you grow a successful business on Google Play.

Categories: Programming

The Power Of “Early Access”

Android Developers Blog - Thu, 10/27/2016 - 17:15

By Karolis Balciunas, VC & Startups Business Development Manager, Google Play

If you have ever launched a mobile app, you know full well that launching your app into the world successfully requires more than publishing it and hoping for the best.

It’s the diligent testing, constant user feedback loop and incremental tweaks leading up to that special launch moment that truly count.

The Google Play Developer Console gives developers robust tools to do beta tests or experiment with how they market their apps to users through the Play store listing. Getting this critical early feedback from users requires just that — users. And as a developer working on a new product that isn’t fully launched yet, how do you find people to try your new app and take the time to give you feedback?

1 Million Tester Installs And Counting

At Google I/O in May, we unveiled a new destination on Google Play to address this dilemma head on. Together with 29 app and game partners, we launched an “Early Access” collection that made select new Android titles that are running an open beta available for anyone to try before they officially launch. It was an immediate hit. Early-adopter users were eager and willing to send developers actionable, private feedback in exchange for an opportunity to get their hands onto the latest exciting apps and games. Most importantly, the feedback was objective and candid as it did not come from their friends and family who are often afraid to hurt their feelings. In just over a month since the collection became available to all users, open beta titles have been installed over 1 million times and demand is only growing.

3 Powerful Stories

Our launch partners experienced the power of Early Access in various ways. Peer-based language practice developer Lingbe was eager to validate the concept of their app connecting natives with language learners via voice conversations, which meant they needed to connect with a critical mass of possible users around the world from different language and cultural backgrounds. In just a few weeks, "the surge in users in addition to our current fan base meant that we've had Brazilians practicing with Spanish users and talking about their hobby in photography, Mexicans making friends with people from India, and Filipinos talking to Moroccans!"

Readfeed, one of the first online book clubs on Android, relied on Early Access to solicit feature requests, identify bugs, locate new and optimize existing target markets as well as build a sizable reader community. They stated that "early access confirmed that our target market exists and that we have something that they need. I don't think we'd be in the same place right now without it. It enabled us to validate and effectively iterate on our idea from day one."

Finally, Drippler participated in Early Access to test their new "Wiz" app and understand their beta title's appeal to their target demographic. Their performance in the Early Access collection as well as private feedback from thousands of newly acquired beta testers allowed them to polish the app before the launch and gave them confidence that their users will enjoy it."

These three developers’ stories show us just a few ways that Early Access can help developers build great new apps and games, and it shows the value of getting early feedback from beta testers before launching more broadly.

Get Involved

If you are a developer getting ready to launch on Google Play, you can nominate your app or game to be part of Early Access. Learn more here.

New titles are added weekly and thousands of users are looking to experiment with new and exciting ideas.

Categories: Programming

New features for reviews and experiments in Google Play Developer Console app

Android Developers Blog - Thu, 10/27/2016 - 17:14

Posted by Kobi Glick, Google Play team

With over one million apps published through the Google Play Developer Console, we know how important it is to publish with confidence, acquire users, learn about them, and manage your business. Whether reacting to a critical performance issue or responding to a negative review, checking on your apps when and where you need to is invaluable.

The Google Play Developer Console app, launched in May, has already helped thousands of developers stay informed of crucial business updates on the go.

We’re excited to tell you about new features, available today:

Receive notifications about new reviews

Use filters to find the reviews you want

Review and apply store listing experiment results

Increase the percent of a staged rollout or halt a bad staged rollout

Download the Developer Console app on Google Play and stay on top of your apps and games, wherever you are! Also, get the Playbook for Developers app to stay up-to-date with more features and best practices that will help you grow a successful business on Google Play.

Categories: Programming

Tips to help you stay on the right side of Google Play policy

Android Developers Blog - Thu, 10/27/2016 - 17:14

Posted by Lily Sheringham, Google Play team

Today we have released a new video ‘10 tips to stay on the right side of Google Play policy’. The video provides 10 best practices to help you develop and launch apps and games which follow Google Play’s Developer Program Policies.

It accompanies the recently published News video series and is part of our 10 tips for success on Google Play video series.

Watch the video to learn how to review your app, to ensure you have appropriate content and the rights to use it, how to handle user data, and more. Also, find out how to stay up to date with policy updates and get support from our policy team.

You can also find more resources on Google Play policies in the Developer Policy Center, and also get the new Playbook for Developers app to learn more best practices to find success on Google Play.

Categories: Programming

Android Developer Stories: drupe and Noom expand globally by localising their apps on Google Play

Android Developers Blog - Thu, 10/27/2016 - 17:13

Posted by Kacey Fahey, Marketing Programs Manager, Google Play

Interested in growing your app on a global scale? See how two app developers localized their apps in unique ways to drive revenue and user engagement.

drupe

drupe is a communications app that utilizes the openness of android to build a truly native experience delivering highly contextual recommendations to their users across the world.

Key to achieving international growth, drupe has translated their app in 17 languages, and their store listing page in 28 languages. This led to an increase in conversion and retention rates. Additionally, when entering India, the team noticed several user reviews requesting integration with a specific messaging app widely used in the Indian market. Through a combination of this integration, adding Hindi language translation, and other new features, drupe saw improved performance. In six months, daily active users increased 300%, and actions per average daily user increased 25% in the Indian market.

Noom

Noom is a health & fitness app that has achieved an 80% increase in international revenue growth on Android over the past three years by localizing their app with unique cultural behaviors, cuisines, and local-market coaches.

In addition to translating their app and store listing page, Noom conducted extensive analysis to determine the right financial model tailored to each international market. This included evaluation of their competitive landscape and local health and wellness spending behavior, in addition to running pricing experiments to determine the optimal offering between subscriptions, IAPs, or a premium app.

Use the Localization Checklist to learn more about tailoring your app for different markets to drive installs and revenue, and to create a better overall user experience. Also, get the Playbook for Developers app to stay up-to-date on new features and learn best practices that will help you grow a successful business on Google Play.

Read the full articles for drupe and Noom.

Categories: Programming

Neo4j: Dynamically add property/Set dynamic property

Mark Needham - Thu, 10/27/2016 - 06:29

I’ve been playing around with a dataset which has the timetable for the national rail in the UK and they give you departure and arrival times of each train in a textual format.

For example, the node to represent a stop could be created like this:

CREATE (stop:Stop {arrival: "0802", departure: "0803H"})

That time format isn’t particular amenable to querying so I wanted to add another property which indicated the number of seconds since the start of the day.

So we want to add ‘arrivalSecondsSinceStartOfDay’ and ‘departureSecondsSinceStartOfDay’ properties to our node. I wrote the following query to calculate the values for those properties.

MATCH (stop:Stop)
UNWIND ["arrival", "departure"] AS key
 
WITH key,
     toInteger(substring(stop[key], 0, 2)) AS hours,          
     toInteger(substring(stop[key], 2, 2)) AS minutes,
     CASE WHEN substring(stop[key], 4,1) = "H" THEN 30 ELSE 0 END AS seconds
 
WITH key, (hours * 60 * 60) + (minutes * 60) + seconds AS secondsSinceStartOfDay
 
RETURN key + "SecondsSinceStartOfDay" AS newKey, secondsSinceStartOfDay
╒═══════════════════════════════╤══════════════════════╕
│newKey                         │secondsSinceStartOfDay│
╞═══════════════════════════════╪══════════════════════╡
│arrivalSecondsSinceStartOfDay  │28920                 │
├───────────────────────────────┼──────────────────────┤
│departureSecondsSinceStartOfDay│29010                 │
└───────────────────────────────┴──────────────────────┘

Now we’re ready to set those properties on the ‘stop’ node.

MATCH (stop:Stop2)
UNWIND ["arrival", "departure"] AS key
 
WITH stop,
     key,
     toInteger(substring(stop[key], 0, 2)) AS hours,          
     toInteger(substring(stop[key], 2, 2)) AS minutes,
     CASE WHEN substring(stop[key], 4,1) = "H" THEN 30 ELSE 0 END AS seconds
 
WITH stop, key, (hours * 60 * 60) + (minutes * 60) + seconds AS secondsSinceStartOfDay
WITH stop, key + "SecondsSinceStartOfDay" AS newKey, secondsSinceStartOfDay
SET stop[newKey] = secondsSinceStartOfDay
Invalid input '[': expected an identifier character, whitespace, '{', node labels, a property map, a relationship pattern, '.', '(', '=' or "+=" (line 12, column 9 (offset: 447))
"SET stop[newKey] = secondsSinceStartOfDay"
         ^

Hmmm that didn’t work as expected! It doesn’t look like we can set dynamic properties using Cypher just yet.

Luckily my colleague Michael Hunger and the Neo4j community have been curating the APOC procedures library and it has just the procedure to help us out.

You’ll need to download the jar for your version of Neo4j and then place it in the plugins directory. I’m using Neo4j 3.1 Beta1 so this is what it looks like for me:

$ tree neo4j-enterprise-3.1.0-BETA1/plugins/
 
neo4j-enterprise-3.1.0-BETA1/plugins/
└── apoc-3.1.0.1-all.jar
 
0 directories, 1 file

After you’ve done that you’ll need to restart Neo4j so that it can pick up the new procedures that we’ve added. Once you’ve done that execute the following query to check they’ve installed correctly:

call dbms.procedures()
YIELD name 
WITH name 
WHERE name STARTS WITH "apoc"
RETURN COUNT(*)
╒════════╕
│COUNT(*)│
╞════════╡
│183     │
└────────┘

We’re now ready to dynamically set properties in the graph. The procedure that we’ll use is apoc.create.setProperty and it’s easy to update our query to use it:

MATCH (stop:Stop)
UNWIND ["arrival", "departure"] AS key
 
WITH stop,
     key,
     toInteger(substring(stop[key], 0, 2)) AS hours,          
     toInteger(substring(stop[key], 2, 2)) AS minutes,
     CASE WHEN substring(stop[key], 4,1) = "H" THEN 30 ELSE 0 END AS seconds
 
WITH stop, key, (hours * 60 * 60) + (minutes * 60) + seconds AS secondsSinceStartOfDay
WITH stop, key + "SecondsSinceStartOfDay" AS newKey, secondsSinceStartOfDay
CALL apoc.create.setProperty(stop, newKey, secondsSinceStartOfDay)
Query cannot conclude with CALL (must be RETURN or an update clause) (line 12, column 1 (offset: 439))
"CALL apoc.create.setProperty(stop, newKey, secondsSinceStartOfDay)"
 ^

Oops I spoke too soon! We need to yield the return column of the procedure and return it or just return a count to work around this:

MATCH (stop:Stop)
UNWIND ["arrival", "departure"] AS key
 
WITH stop,
     key,
     toInteger(substring(stop[key], 0, 2)) AS hours,          
     toInteger(substring(stop[key], 2, 2)) AS minutes,
     CASE WHEN substring(stop[key], 4,1) = "H" THEN 30 ELSE 0 END AS seconds
 
WITH stop, key, (hours * 60 * 60) + (minutes * 60) + seconds AS secondsSinceStartOfDay
WITH stop, key + "SecondsSinceStartOfDay" AS newKey, secondsSinceStartOfDay
CALL apoc.create.setProperty(stop, newKey, secondsSinceStartOfDay) 
YIELD node
RETURN COUNT(*)
╒════════╕
│COUNT(*)│
╞════════╡
│2       │
└────────┘

And that’s it, we can now dynamically set properties in our queries.

Categories: Programming

Readfeed graduates from Google Play’s Early Access beta program & offers some learnings

Android Developers Blog - Wed, 10/26/2016 - 23:45

Guest post by Rajiev Timal, Founder of Readfeed

Readfeed was created to help book lovers around the world share and discuss their favorite reads with each other more easily. Today, we are excited to officially launch the Readfeed app on Google Play. As one of the first online book clubs available only on Android devices, Readfeed lets you create your virtual bookshelf by adding books to custom lists, track and share your reading progress with community members, and see what books others are reading and talking about.

Readfeed has come a long way since we first released the app as beta in Google Play's Early Access program. As one of the first graduates of the beta program, we were able to solicit feature requests, identify bugs, locate new and optimize existing target markets, as well as build a sizable reader community. This allowed Readfeed to deliver the best possible experience right out of the gate.

As a guest on this blog, we thought it would be helpful to share some important best practices that we learned from the Early Access program to improve your products and scale your user base.

Harnessing Feedback Loops

One of the core principles underlying the construction of any successful product is setting up an effective feedback loop between users and product creators. Google Play Early access does this automatically. Users show up (sometimes seemingly out of nowhere), install the app, and leave feedback in the Beta Feedback section of the developer console. We can then reply in that section or take the conversation into an email, address the issue, and email users when it's addressed. Many improvements to Readfeed have been made as a direct result of this process.

Identifying New Target Markets

One major benefit of Early Access was that it gave us immediate access to a worldwide audience of readers. We were able to quickly assess the different book-related markets that existed based on user feedback and interviews done through email. Since launched in beta, over 1000 people have asked to read free books. Apparently this need exists in third-world countries and we plan to add this functionality in a future release.

Identifying Bugs

Bugs plague any app in its early stages. Because of the variety of devices that Early Access users have, ranging from Android 4.2 rooted devices to the latest Nexus phones, we were able to identify bugs very quickly. For instance, on Android 4.2 there was a recurrent crash which was tough for me to identify with my own devices. After one user emailed me about it, I was able to gather enough information to resolve the issue and put out an update immediately.

Identifying New Features

Google Play Early Access made it a lot easier to determine what to do next. When about 10 people request a feature, we know it's immediately important and put it in the app. One feature that came directly from Early Access feedback was the ability to rate books without leaving a review.

Community Building

Early Access has allowed us to start building a community. For instance, a Software tester from the UK who likes books sent me a detailed analysis of all of Readfeed's bugs. Also, we've witnessed many people take the initiative and answer others' questions about the app. Because of the critical mass that Google Play Early Access helps you build, it's easy for communities to form and start sharing information with each other.

A/B Testing

We now have enough users to A/B test certain parts of the app and get statistically significant results. This is something that usually takes a long time to achieve.

There are many other ways Google Play Early Access have helped us, and we're thankful that Readfeed has had the opportunity to be a part of the program. I can say without reservation that our current and future product would be in a very different place had it not been for our inclusion in Early Access.

Get Involved
If you are a developer getting ready to launch on Google Play, you can nominate your app or game to be part of Early Access. Learn more here.
Categories: Programming

Agile Project Management Methods for Corporate IT Projects

Herding Cats - Glen Alleman - Wed, 10/26/2016 - 15:29

When Agile development moves beyond a single scrum team and into the Enterprise IT domain, several considerations must be addressed. For Scrum (or most other agile methods) focus on the team is paramount. The behaviours of the team should follow Katzenbach's definition of a team as...

...a small group of people with complementary skills who are committed to a common purpose, performance goals and approach for which they are mutually accountable - Katzenbach, J. R. and Smith, D.K. (1993), The Wisdom of Teams: Creating the High-performance Organisation, Harvard Business School, Boston

This definition for single scrum teams needs to come in contact with Corporate Governance, managerial finance, decision making in the presence of uncertainty when spending the firms money that has impacts beyond the team and their natural desire to control their own destiny. Governance is about decision rights. IT Governance: How Top Performers Manage Decision Rights for Superior Results is a place to start.

In a recent exchange on Twitter it was mentioned in response a my post that some teams consider the corporate money their own that imagine a world where Ownership has faith and trust in the workers to spend the money appropriately, and this seeming lack of trust in the team's ability to consider external governance as part of their behaviour  ...speaks to a lack of trust that the people they have hired are capable of making proper decisions.

Governance is the basis of business management in some form for all organisations beyond that small group of individuals Katzenbach speaks of. The title of this Blog - Herding Cats - speaks to the issue of organisational governance. Herding cats is "an idiomatic saying that refers to an attempt to control or organize a class of entities which are uncontrollable or chaotic." (Warren Bennis, Managing People is Like Herding Cats (1997)). 

When Agile encounters governance here's some thoughts from a book chapter on how to assure the benefits of both paradigms are delivered.

Screen Shot 2016-10-26 at 8.27.52 AM

PM Chapter on Agile IT Project Management Methods from Glen Alleman   Related articles How We Make Decisions is as Important as What We Decide. Estimating Guidance Why We Need Governance
Categories: Project Management

Systems Thinking: Difficulties

Boundaries, like fences are one potential difficulty.

Boundaries, like fences, are one potential difficulty.

Systems thinking is a powerful concept that can generate significant for value for organizations by generating more options. Dan and Chip Heath indicate that options are a precursor to better decisions in their book Decisive. Given the power of the concept and the value it can deliver, one would expect the concept to be used more. The problem is that systems thinking is not always straightforward.  The difficulties with using systems thinking fall into three categories.

  • Boundaries
  • Complexity
  • Day-to-Day Pressures

Organizational boundaries and their impact of the flow of both work and information have been a source of discussion and academic study for years.  Boundaries are a key tool for defining teams and providing a send of belonging; however, some boundaries not very porous. As noted in our articles on cognitive biases, groups tend to develop numerous psychological tools to identify and protect their members.  Systems, in most cases, cut across those organizational boundaries. In order to effectively develop an understanding of a system and then to affect a change to that system, members of each organizational unit that touches the system need to be involved (involvement can range from simple awareness to active process changes). When changes are limited due to span of control or a failure to see the big picture, they can be focused on parts of a process that, even if perfectly optimized, will not translate to the delivery of increased business value.  In a recent interview for SPaMcast, author Michael West provided examples of a large telecommunication company that implemented a drive to six sigma quality in its handsets, only to find out that pursuing the goal made the handset too expensive to succeed in the market. In this case the silos between IT, manufacturing and marketing allowed a change initiative to succeed (sort of) while harming the overall organization.

The second category is complexity.  Even simple systems are complex. Complexity can be caused by the breadth of a system.  For example, consider the relatively simple product of a lawn service.  How many processes and steps are required to attract and sign-up customers, then secure the equipment and employees to perform the job, schedule the service, actually deliver the service and then to collect payment? The simple system becomes more complex as we broaden the scope of our understanding.  Add in the impact of a variable like weather or an employee calling in sick, and things get interesting.  Really complicated systems, such as the manufacturing and sale of an automobile, can be quite mind-numbing in their complexity.  The natural strategy when faced with this level of complexity is to focus on parts of the overall system. This can lead to optimizations that do not translate to the bottom line. A second natural strategy for dealing with complexity is to develop models. All models are abstractions, and while abstractions are needed, you need to strike a balance so that the ideas generated from studying the model or results of experiments or pilots run against the model are representative of results in the real world.  For example, let’s say you build a 1/8 scale replica of a server farm.  The replica is a model that could be used to study how the servers would be placed or used to plan how they would be accessed for service. This would be a valid use of a model.  But if the model was placed in the actual server room and the observation used to jump to the conclusion that since the model fit, the server farm would fit, a mistake could quite possibly be made. Because of the complexity, we tend to focus on a part of system or to make abstractions. However, both can make it hard to think about the big picture needed to apply systems thinking.

The final difficulty with the use of systems thinking is the pressure of the day-to-day.  As I noted when I re-read The 7 Habits of Highly Effective People, the urgent and important issues of the day can easily overwhelm the important but not urgent. The use of systems thinking and the systemic changes identified through the use of the tool will generally fall into the important but not urgent category.  A person who is having a heart attack due to cholesterol-clogged arteries needs to deal with urgency of the attack before identifying and addressing their diet and other root causes. Leveraging systems thinking as a tool to address large-scale systemic issues is not a magic wand, rather a concept that will require time and effort to use.  If the organization is being overcome by day-to-day events, systems thinking will be difficult to use.  One technique that I have seen to deal with this scenario is to create a cross-functional, highly focused (tiger team) with a specific time box to start the process. This will require removing the team’s day-to-day responsibilities until the team meets its goal. This is a very difficult tactic to use as the people you would want on the team are generally the best at their job. This can potentially have a negatively impact organizational performance for a short period of time. You must consider the ROI.

The use of systems thinking is not for the faint of heart.  There are difficulties in applying the concept.  Boundaries, complexity and day-to-day pressures are the most significant, however there are others such as ensuring the team has system thinking training. Systems thinking can deliver a broad overall perspective and great value, but as a leader you must balance the difficulties with the benefits.


Categories: Process Management

3 Exercises To Get Your Fitness App In Shape

Android Developers Blog - Tue, 10/25/2016 - 21:50

By: Mary Liz McCurdy, Health & Fitness Lead, Google Play

(Originally published on Android Central)

It's an exciting time to be a health & fitness app developer. With people shelling out on fitness more than ever before, we're seeing record high levels of gym memberships and attendance, the rise of boutique fitness, and an emphasis on connected devices.

Paramount to this growth is the integration of smart technology. Whether it be through streaming video, wearables, or mobile apps, technology empowers us with instant access to high quality workouts, sensor biofeedback, and endless on-demand inspiration. At Google Play, we've seen this growth reflected by the incredible popularity of health & fitness apps. In fact, this is one of Google Play's fastest growing app categories, boasting the most engaged 30d active users.

As the resident health & fitness expert on Google Play, I had the opportunity to speak about what's driving the category's growth at the recent Wearables Technology Show. Here are the top three recommendations I shared with the audience to help coach developers towards building more valuable app experiences:

Lose it!

#1: Be invisible

We all know how painful manually logging activity and biometrics is- be it calorie tracking, workouts, moods, or hormone cycles. Manual logging is actually the number one reason users drop off.

What you should do: Minimize distraction with automation wherever possible while maximizing value at the appropriate moments. Remember that you are in all likelihood a companion experience to the main event.

Lose It! makes food tracking easier by using your phone's camera and image recognition technology to identify foods and their nutritional information. Goodbye manual calorie counting!

Strava uses auto pause detection, recognizing when you are resting during exercise so you don't need to fiddle with your device and can stay safe and in the zone.

Freeletics

#2: Be personal

Investing in robust personalization has been the driving factor in improving app engagement and buyer conversion among many of our top developers.

What you should do: Personalize the experience for each user or distinct user cohorts by leveraging technology like the Awareness API, Fit API, Google Sign In, and Facebook Login to intelligently pull in relevant user data. Think about your first-time users, power users, high value users, etc. and treat them uniquely.

Freeletics personalizes onboarding and the overall app experience based on gender and fitness level leading to a 58% increase in weekly active sessions.

Workout Trainer by Skimble increased user engagement by 30% through personalizing training programs based on user fitness assessments, goals, and workout patterns.

Glow

#3: Be assistive

The rise of smartphones, wearables and IoT have left us swimming in data and dashboards and left many consumers wondering, so what?

What you should do: Offer insights and suggestions, not just raw data. Users are not engineers and generally do not want to process complex data or dashboards. In most cases, they want you to tell them what to do in the moment or provide digestible summaries after the fact. Keep it simple.

Glow provides personalized insights that leverage user-inputted data and third party data from Google Fit to help couples achieve their fertility goals.

Beddit gives personalized daily tips to improve your sleep and wellness by analyzing sleep cycles, resting heart rate, respiration, room temperature, and more.

At the end of the day, changing health and fitness habits is hard. Make it easier for your users by seamlessly guiding them on what they personally need to do to achieve their goal. It's that simple ;) We encourage you to experiment with these exercises to get your app fit for the millions of Android users looking to live a healthier, happier life.

Categories: Programming

SE-Radio Episode 272: Frances Perry on Apache Beam

Jeff Meyerson talks with Frances Perry about Apache Beam, a unified batch and stream processing model. Topics include a history of batch and stream processing, from MapReduce to the Lambda Architecture to the more recent Dataflow model, originally defined in a Google paper. Dataflow overcomes the problem of event time skew by using watermarks and […]
Categories: Programming

Quote of the Day

Herding Cats - Glen Alleman - Tue, 10/25/2016 - 15:07

"I am always doing that which I can not do, in order that I may learn how to do it." - Pablo Picasso

When I'm asked to help a client with something new, it's usually close to the domain I'm currently working in. But sometimes it's outside my core experiences. When this happens it's an opportunity to expand my core competencies. Program Planning and Controls applied in new domains is one example. 

Picture1This learning process starts with first principles, of course, so at the very bottom of any new knowledge are similar principles. This is the case for most anything we do. Go back to first principles and determine by what principle does this new knowledge have validity? When you find that, you'll have a rock to stand on in the exploration of new knowledge. If you're exploring this new domain with no basis for recognizing good ideas from bad ideas your contribution to the client's needs is likely to be less than they are expecting for their money.

When you hear we're exploring ask if that exploration has any hypothesis that is being tested, any way to recognize that the exploration is actually moving toward some goal, that the exploration has some way to measure progress toward the goal? No, then those exploring aren't actually exploring, they are just wandering around spending their client'ss money in the hope they will find something of interest they can call discovery.

We have a bumper sticker here in Boulder

Those who wander aren't always lost.

This is not true, if you're wandering around looking for the answer, you're lost. If you're a Boulder hippy and Ward, no problem. But those paying us have a reason to spend that money. They need something we can provide. 

Related articles Overarching Paradigm of Project Success Who Builds a House without Drawings? Essential Reading List for Managing Other People's Money
Categories: Project Management

Three New Books You Want to Read on Scaling, Strategy and Testing in Agile

Mike Cohn's Blog - Tue, 10/25/2016 - 15:00

I want to let you know about three great new books on agile you should read. Two of them are in the series I edit for Addison-Wesley; the third is by an author who previously wrote a book for that series.

Large-Scale Scrum by Larman and Vodde

Large-Scale Scrum” by Craig Larman and Bas Vodde is great for anyone looking to scale Scrum up to medium and large projects. It provides a contrast to the very heavyweight Scaled Agile Framework (SAFe), and “Large-Scale Scrum” comes with its own cutesy acronym, LeSS. In fact the subtitle of the book is “More with LeSS.”

The book defines two scaling models. First is standard LeSS, which Larman and Vodde say is typically used for projects with around five teams. It can certainly scale beyond there. But for much larger projects, the book also defines “LeSS Huge,” which the authors report having used on projects with over 1,000 people.

The book is organized as you might expect with chapters devoted to key Scrum topics such as the product owner, the product backlog, sprint planning, reviews and retrospectives, and so on.

I found the book to strike a perfect balance between being overly prescriptive and too general. You’ll leave the book with plenty of advice on how to scale a Scrum project. But you won’t leave feeling hamstrung by having too many rules placed on your teams.

In fact, the authors include a nice summary of LeSS and LeSS Huge rules at the end of the book, and it covers only three pages.

Developer Testing by Alexander Tarlinder

Early in my career as a programmer, I remember coming across the phrase, “You can’t test quality in.” I read this inan article that compared 1970s and 1980s U.S. automobile manufacturing to Japanese automobile manufacturing.

The author was saying the U.S. car manufacturers were producing cars of lower quality than their Japanese counterparts because U.S. car manufacturers were trying to test quality into their products. Only after the car was built would they test to see if it was high quality. If it wasn’t, they’d fix defects (say a poorly fitting door) to make the product higher quality.

This was in contrast to Japanese manufacturers who built quality into the process. A later colleague of mine referred to this by saying, “Quality is baked into our process.”

Quality is not something that can be added to a product. Trying to add quality after the product has been built would be like adding baking powder to a cake after the cake has been baked. It doesn’t work.

Alexander Tarlinder’s new book, “Developer Testing: Building Quality into Software,” teaches programmers how to bake or build quality right into the process. The book starts with fundamentals (what is unit testing?) but also delves deep into more advanced topics like testing with mock objects. Similarly, it adds to the debate about testing state vs. behavior.

The book comes in at just under 300 pages, but is encyclopedic in what it covers. This book is a must read for every programmer, even those who are already doing a great job at developer testing.

Strategize by Roman Pichler

Most agile processes are empty of any advice on forming a company or product strategy. Product backlogs or featurelists are just assumed to exist or to spring spontaneously from the mind of a product owner or key stakeholder. In his new book, “Strategize,” Roman Pichler fills this void in agile thinking.

Roman is a long-time Scrum trainer based in the UK. He has previously written books about the overall Scrum framework and about succeeding as a product owner.

In “Strategize,” Pichler covers how to form and then validate a strategy, including identifying the right audience for the product and delivering just the features they need. The book covers roadmapping, including addressing the unfortunate misconception that because a team is agile, they don’t need to know where they’re headed.

Pichler presents a very helpful roadmap selection matrix that helps identify what type of roadmap is appropriate for different types of projects. I’ve already put this to use in discussions with clients. And I’m becoming convinced that if a company had a bad experience with roadmapping in the past, it was likely because of doing the wrong type of roadmapping. This book’s roadmap selection matrix will fix that.

This book should be read by anyone involved in determining the future direction for a product or entire organization.

What Do You Think?

Which of these books are you going to read next? Or, if you’ve already read any, please share your thoughts in the comments below.

Software Development Conferences Forecast October 2016

From the Editor of Methods & Tools - Tue, 10/25/2016 - 14:02
Here is a list of software development related conferences and events on Agile project management ( Scrum, Lean, Kanban), software testing and software quality, software architecture, programming (Java, .NET, JavaScript, Ruby, Python, PHP), DevOps and databases (NoSQL, MySQL, etc.) that will take place in the coming weeks and that have media partnerships with the Methods […]

Guest blog: in response to "The Five Belts of the Product Owner

Xebia Blog - Tue, 10/25/2016 - 12:37
This is a response to Chris Lukassen's excellent post titled, "The Five Belts of the Product Owner." If you haven't read it, my post won't make much sense, so go read it before you delve further into my post. Chris's post brought up many thoughts and feelings because it hit the intersection of two of

A day in the life of an mbot

Xebia Blog - Mon, 10/24/2016 - 16:44
Today, I managed to find a diary hidden on one of the mbots we have at the office. I couldn't see it in the user interface, but when I was doing some maintenance on the robot a simple 'ls -la' command in the terminal showed me this hidden content. It was so cute that I wouldn't

SPaMCAST 416 - Kirk Botula, Agility and Capability

Software Process and Measurement Cast - Mon, 10/24/2016 - 03:55

The Software Process and Measurement Cast features our interview with Kirk Botula on capability.  Kirk makes the argument that capability is crucial for organizational health and agility.

Kirk Botula is the CEO of the CMMI® Institute, the home of the globally-adopted capability improvement framework that guides organizations in high-performance operations. Botula is a global growth company executive whose career has been focused on advancing the common good through the commercialization of technology. Prior to CMMI Institute, Botula served as President of Confluence, a global financial technology firm with operations in North America, EMEA and Asia.

During his tenure, Confluence became the leading provider in its space achieving market share exceeding 70% in North America and 20% globally, while delivering the industry leading NPS of 40. Botula also served at BNY Mellon, Compunetix, and as a strategist to a variety of nonprofit and for-profit organizations. He has a BFA and MSIA from Carnegie Mellon University and lives in Pittsburgh with his wife and three daughters.

Reach out to Kirk at info@cmmiinstitute.com

 

Re-Read Saturday News

We continue the read/re-read of The Five Dysfunctions of a Team by Patrick Lencioni (published by Jossey-Bass).   As we move through the first part of the book we are being exposed to Lencioni’s model of team dysfunctions and a set of crises to illustrate the common problems that make teams into dysfunctional collections of individuals. Today we re-read the three sections titled Awareness, Ego and Goals.

Visit the Software Process and Measurement Cast blog to participate in this and previous re-reads.

Next SPaMCAST

The Software Process and Measurement Cast 417 will feature three columns from Steve Tendon, Jeremy Berriault and of course a new essay from the Software Process and Measurement Cast.

Shameless Ad for my book!

Mastering Software Project Management: Best Practices, Tools and Techniques co-authored by Murali Chematuri and myself and published by J. Ross Publishing. We have received unsolicited reviews like the following: “This book will prove that software projects should not be a tedious process, for you or your team.” Support SPaMCAST by buying the book here. Available in English and Chinese.

Categories: Process Management

SPaMCAST 416 – Kirk Botula, Agility and Capability

SPaMCAST Logo

http://www.spamcast.net

Listen Now
Subscribe on iTunes
Check out the podcast on Google Play Music

The Software Process and Measurement Cast features our interview with Kirk Botula on capability.  Kirk makes the argument that capability is crucial for organizational health and agility.

Kirk Botula is the CEO of the CMMI® Institute, the home of the globally-adopted capability improvement framework that guides organizations in high-performance operations. Botula is a global growth company executive whose career has been focused on advancing the common good through the commercialization of technology. Prior to CMMI Institute, Botula served as President of Confluence, a global financial technology firm with operations in North America, EMEA and Asia.

During his tenure, Confluence became the leading provider in its space achieving market share exceeding 70% in North America and 20% globally, while delivering the industry leading NPS of 40. Botula also served at BNY Mellon, Compunetix, and as a strategist to a variety of nonprofit and for-profit organizations. He has a BFA and MSIA from Carnegie Mellon University and lives in Pittsburgh with his wife and three daughters.

Reach out to Kirk at info@cmmiinstitute.com

 

Re-Read Saturday News

We continue the read/re-read of The Five Dysfunctions of a Team by Patrick Lencioni (published by Jossey-Bass).   As we move through the first part of the book we are being exposed to Lencioni’s model of team dysfunctions and a set of crises to illustrate the common problems that make teams into dysfunctional collections of individuals. Today we re-read the three sections titled Awareness, Ego and Goals.

Visit the Software Process and Measurement Cast blog to participate in this and previous re-reads.

Next SPaMCAST

The Software Process and Measurement Cast 417 will feature three columns from Steve Tendon, Jeremy Berriault and of course a new essay from the Software Process and Measurement Cast.

Shameless Ad for my book!

Mastering Software Project Management: Best Practices, Tools and Techniques co-authored by Murali Chematuri and myself and published by J. Ross Publishing. We have received unsolicited reviews like the following: “This book will prove that software projects should not be a tedious process, for you or your team.” Support SPaMCAST by buying the book here. Available in English and Chinese.


Categories: Process Management

Five Dysfunctions of a Team, Patrick Lencioni:  Re-Read Week 5

The Five Dysfunctions of a Team Cover

The book during unboxing!

Today we continue our re-read of the business novel, The Five Dysfunctions of a Team  by Patrick Lencioni (Jossey-Bass, Copyright 2002, 33rd printing). If you do not have a copy of the book, please buy a copy from the link above and read along. As we move through the first part of the book we are being exposed to Lencioni’s model of team dysfunctions and a set of crises to illustrate the common problems that make teams into dysfunctional collections of individuals.

Awareness

Next to the base of the five-stage model titled absence of trust (introduced in the section titled “The Speech”)  Kathryn wrote the term invulnerability. People that have trust are willing to show their vulnerability to others on the team. Without trust, people put up a wall so they appear invulnerable which impedes communication and sharing need to create a functional team.  Kathryn describes the next exercise that will help the group to demonstrate showing vulnerability in a safe environment.

The exercise: Each person on the team will take five minutes to identify their single biggest strength and weakness related to their involvement at DecisionTech. Answers that with strengths that were over self-deprecating or included generic weaknesses were not allowed. The expectation is that each person will expose themselves to the rest of the group. Once the five minutes are up, each person will debrief with the rest of the group.

Nick began the debrief process.  He was open and honest in his strengths and weakness, and he listened to his teammate’s comments and critiques. It took trust for the group to be able to talk honestly about how they felt.

When Mikey shared, her strengths and weakness were shallow, showing a lack of trust in the group.  There was no interaction and comments from the rest the team.  Mikey’s lack of participation let the air out of the exercise.

Martin went last and noted that his weakness was that he gave the appearance of arrogance. This sparked a discussion until Mikey squashed it noting that he would not be about to change without years of psychotherapy and that perhaps he was just hardwired to be arrogant. Kathryn didn’t call her on the remark, which was foreshadowed as a mistake.

Ego

Kathryn shifts the focus from the base of the model to the top of the pyramid.   In the space at the top of the pyramid, she writes the phrase “Inattention to Results”.  Dysfunctional teams fail to focus on collective results because individuals are honing their own egos and chasing individual status.  Functional teams deliver collective results. Everyone has egos; however, on a team, the collective ego has to be greater than the individual ones.  Over the years, I have watched Lebron James (power forward on the Cleveland Cavilers basketball team) mature and learn that an individual virtuoso can’t win if the team isn’t more than a collection of talented individuals.  When the results of the overall team define success, it is difficult for individual egos to get out of hand.

The book uses the example of Kathryn’s husband who coaches high school basketball.  He focuses on getting the team to be and play like a team which allows him to win consistently, even though the individuals are probably not as talented many individuals on the teams they play against.

One of the many important concepts in this section is that the goal of the leader is not to shepherd individual careers, but rather to get the most out of the team.

The section is capped off with a discussion of why sports provide a good training ground and metaphor for the concept of team.  The goal of a sport to unambiguously win. The score provides unambiguous proof of whether a team is successful. Scores also provide continuously updated and transparent feedback to everyone participating during the game so that there is no surprise when the game ends. Profit, which is the ultimate goal of for-profit organizations, is very difficult to use as a motivational tool because it is only known at the end of a reporting period. I classify profit as a rearview mirror type of measure; it tells you where have been but not necessarily where you are going. Profit is important, but a team needs other goals that more actionable. More actionable goals will be more like a score from a sporting event 

Goals

Goals are an important tool to focus attention and energy.  For a goal to be effective it needs to be actionable.  In an effort to identify more actionable goals, Kathryn leads another exercise.

Exercise: Break the group into subgroups of two or three people.  I recommend that the subgroups are cross-functional (note: in the book the subgroups are cross-functional because each person in the group is focused on different areas of the company). Have the subgroup propose a list of categories that the organization should have results-focused goals. In this exercise just create categories.  After the subgroups develop a list of categories, debrief and discuss with the whole group to develop a set of categories that represents a consensus amongst the whole team.

The DecisionTech executives identify 15 categories that they decide to measure on a monthly basis. As the discussion becomes more focused on the team’s day-to-day work, people fell back into their typical dysfunctional behavior.  The book uses the example of the team discussing the public relationship category.  In this category, goals and measures existed, however, most of the executive team either did not know they existed or didn’t understand them or . When the discussion got heated (with Mikey defending and deflecting criticism), the team shut down instead of getting to the crux of the problem. The section ends with Kathryn’s thought “so this is how it works.” We end on another cliffhanger!

Three quick take-ups:

  1.       Don’t let bad attitudes fester!
  2.       Team ego and success is more important than individual egos and success.
  3.       Goals should provide actionable feedback.

Previous Installments in the re-read of  The Five Dysfunctions of a Team by Patrick Lencioni:

Week 1 – Introduction through Observations

Week 2 – The Staff through the End Run

Week 3 – Drawing the Line though Pushing Back

Week 4 – Entering Danger though Rebound

 


Categories: Process Management