Weekly Roundup: Bad Incentives

Aaron Brethorst, September 07, 2014

The most interesting thing I read online this past week had absolutely nothing to do with Markdown. If you're unaware of the tempest in a teapot currently surrounding that subject, I suggest not changing that at all. Instead, what I found most fascinating this past week, was an in-depth look at how LG managed to screw up their acquisition of webOS.

Back in January, I read an article from The Verge that described the trials, tribulations, and most recent rebirth of webOS. I had to say that I was as impressed with what that team had managed to build as I was saddened by how much they'd been jerked around for the past few years before that.

LG is better known for pretty schizophrenic Android skins on its smartphones, so to see the company produce something this coherent was a shock.
January, 2014

I started wondering if my next TV should be an LG, and how that would work out with my Xbox 360 and Apple TV. Well, fast forward eight months, and now I know that I should've known better.

If [LG's main corporate structure back in] Korea had had its way, webOS TVs would have had an additional menu gallery of vertically-scrolling cards, including one for personal media sharing, one for browser bookmarks and one for all installed apps. Altogether, the UI was to consist of close to a dozen such cards that consumers would have had to rotate through to find the apps or content they wanted...CES was approaching quickly, and LG’s engineers ran out of time trying to make their complicated interface work, so the decision was made to go with the webOS launcher instead in order to have anything up and running at all..."We got lucky," said one member of the original webOS team.
August, 2014

And, sadly, everything above makes perfect sense when you read this graf in the GigaOm article:

LG had a policy in place to reward managers with bonuses or even promotions if their features were part of the final product. The result was a constant feature bloat, as everyone tried to add on one more thing.

Incentivizing the right behaviors is incredibly challenging. I think most companies get this horribly wrong. Even companies with good intentions can still get it wrong, when they assume that they don't incentivize counterproductive employee behavior. In fact, in some ways, this can be even more dangerous, than assuming that you do incentivize behaviors, and trying to find ways to direct that to a productive end. I think avoiding behavioral incentivization is impossible. Your employees (hopefully) want to excel in order to get things like promotions, raises, bonuses, praise, etc. I think it ends up simply being a matter of mitigating the worst possible outcomes, while angling for something that seems reasonably decent.

  • Incentivize number of bugs fixed, and you'll get bad code written up front.
  • Incentivize number of features shipped, and you'll get a hodgepodge of features jammed into a product with no coherent vision.
  • Incentivize peer reviews, and maybe you'll end up with a culture of glad-handers and politicians. Or maybe it'll work out. I don't actually know about this one...I've never been in a corporate culture that embraced this.

What's worked well for you? What's failed miserably?

Best,
Aaron


What We're Reading


Control of the Week

JMAnimatedImageView

JMAnimatedImageView

Subclass of UIImageView to drive easy animations (manual rotation, Carousel, etc).

MIT licensed.

Find out more Add to Favorites


Weekly Roundup

read

FVCustomAlertView

FVCustomAlertView

Custom AlertView/HUD for iOS.

MIT licensed.

Find out more Add to Favorites


International-Calendar-Widget

International-Calendar-Widget

An International Calendar iOS8 widget that shows you the date in different calendars.

MIT licensed.

Find out more Add to Favorites


Swifty

Swifty

A beautiful Login coded in Swift

MIT licensed.

Find out more Add to Favorites


Swift-String-Tools

Swift-String-Tools

Helpful tools to manage linguistics, and Social in a String.

MIT licensed.

Find out more Add to Favorites


iOSSharedViewTransition

iOSSharedViewTransition

iOS 7 based transition library for View Controllers having a Common View.

** Inspired by Shared View Activity Transitions introduced in Android L **

USAGE

Very Simple 3 Step Process:

1- Download and include ASFSharedViewTransition.h and ASFSharedViewTransition.m in your Project.

2- In your app delegate or somewhere else in code do #import "ASFSharedViewTransition.h" and add transitions.

3- Confirm From & To View Controllers to ASFSharedViewTransitionDataSource and provide the Common View by implementing sharedView method

Thats it! A Sample Demo Application has been included for help.

Animated GIF: http://goo.gl/EL6l6R

Youtube Link: https://www.youtube.com/watch?v=AGcjSJqnkhk

MIT licensed.

Find out more Add to Favorites  See a Video


ASFTableView

ASFTableView

A customizable Web like multi-column table view for iOS with header and inner rows

MIT licensed.

Find out more Add to Favorites


PinterestAnimator

PinterestAnimator

PinterestAnimator performs view controller transitions like the one in the Pinterest 3.0 app.

GPL licensed.

Find out more Add to Favorites


Cover Photo Twitter

Cover Photo Twitter

Example of blurred expanding cover photo like twitter app: http://m.UploadEdit.com/b038/1407960919189.gif

Created in Xcode 6 with auto layout, swift

GPL licensed.

Find out more Add to Favorites


DTIActivityIndicator

DTIActivityIndicator

Beautiful custom ActivityIndicator inspired from css library SpinKit and much more... Written in Swift.

Supported animations: Rotating Plane, Double Bounce, Chasing Dots, Pulse, Wave, Spotify, Wp8

This control as been compiled on Xcode 6.0 Beta 6, and is callable from Objective-C and Swift.

MIT licensed.

Find out more Add to Favorites


AMTumblrHud

AMTumblrHud

Progress HUD inspired by Tumblr app

MIT licensed.

Find out more Add to Favorites


MALoggingViewController

MALoggingViewController

MALoggingViewController is a real-time pseudo-console you can embed in your application, perfect for testing and debugging in the real world.

Whether you are determining the reliability of network traffic while driving through areas with poor service, testing push notifications on ad-hoc builds while not connected to Xcode, or working out those pesky Core Location bugs, there's no need to carry around half of your development environment with you.

No more driving around town with the Xcode console open, or having to handle logging to files and emailing them later to figure out what the heck happened - you can see all the data on your device, anywhere, in real time.

MIT licensed.

Find out more Add to Favorites


SALQuickTutorial

SALQuickTutorial

Show quick tutorials, only once, while the user discovers your app.

Instead of showing a gray overlay before the user can start playing with your app (a common practice as of today), we thought it would be better to show these "tips" as needed according to the usage.

SALQuickTutorial supports showing a view with a title, an image and a message. By default, to close, the user just needs to tap the screen, but you can configure it to work with a dismiss button. Also, you can set a completion block to be called when the view is dismissed.

Here at Seeking Alpha we decided to shift, in our next iOS version, from the gray overlay to the quick tutorials when they are really needed.

We invite you to contribute with our first iOS open source project.

MIT licensed.

Find out more Add to Favorites


JMCache

JMCache

JMCache is a key/value store designed for persisting temporary objects fully based on GCD.

JMCache is cool because you can :

  • store object not compliant with NSCoding protocols, by implementing a custom protocol (JMcoding or use FastCoding),
  • use a ValueTransformer to increase security of your encoded object, you can zip it, crypt it with your own algorithms,
  • configure the cache to be "memory then disk", "only memory", "only disk",

MIT licensed.

Find out more Add to Favorites


SDFeedParser

SDFeedParser

Objective-C parser for the JSON API plugin for Wordpress.

MIT licensed.

Find out more Add to Favorites


MapTable-Swift

MapTable-Swift

Mimic the Find My Friends app's first screen behavior.

MIT licensed.

Find out more Add to Favorites  See a Video


LFHeatMap

LFHeatMap

Extremely fast iOS heat maps.

MIT licensed.

Find out more Add to Favorites


ANDLineChartView

ANDLineChartView

ANDLineChartView is easy to use view-based class for displaying animated line chart.

ANDLineChartView is available through CocoaPods. To install it, simply add the following line to your Podfile : pod "ANDLineChartView"

ANDLineChartView is available under the MIT license. See the LICENSE file for more info.

MIT licensed.

Find out more Add to Favorites


MoStoreButton

MoStoreButton

ios 7 Appstore like button

MIT licensed.

Find out more Add to Favorites


TOBrowserActivityKit

TOBrowserActivityKit

A set of UIActivity subclasses for opening NSURL objects in Chrome or Safari.

MIT licensed.

Find out more Add to Favorites


ReorderableTableView

ReorderableTableView

A simple implementation of a reorderable UITableView. It relies on UILongPressGestureRecognizer, and only public APIs (it's street legal). Simpler than some of the other solutions I've seen out there.

MIT licensed.

Find out more Add to Favorites


VBFPopFlatButton

VBFPopFlatButton

Flat button with 9 different states and 2 styles animated using POP

MIT licensed.

Find out more Add to Favorites


ASAttributedLabelNode

ASAttributedLabelNode

Draw NSAttributedString in SpriteKit

MIT licensed.

Find out more Add to Favorites


Music Player

Music Player

Fully functional music player is written in swift

MIT licensed.

Find out more Add to Favorites