Anders Brownworth

Technology and Disruption

What to do With Star Coders

I've been giving some though to what you do with star coders - those 10x - 100x people that are very valuable in any organization. The problem is there are no good measures for them. You know they are extremely high quality and productive by what they are able to accomplish but you can't put metrics around them. Counting lines of code doesn't work because good code can mean very few lines. Because they aren't generally quantifiable, I don't think corporations use them effectively. The corporate tendency is to put a few less capable coders around the star coders in hopes that they will bring everyone else up but what you end up doing is weighing the star coder down. His 10x when cut down to 2x might bring a 1x coder to 1.2x capability. There is a practical limit to how many coders can effectively work together so my hunch is the corporate desire to saddle these star coders actually makes the entire team less effective.

An alternate way to think about it is to look at other highly skilled professionals, such as a surgeon. The key for the surgeon is to get in there, do everything that needs to be done, deal with any problems that come up and sew up the patient before he dies. To accomplish this, the surgeon is surrounded by a highly capable and specialized workforce. There is an anesthesiologist, a highly capable nurse, perhaps an assistant with a specialty in a critical area, maybe a general physicians assistant, and a cast of characters to get things, prep the patient and move gurneys around.

I suggest we identify our star coders, surround them with a world class support staff and get out of their way. Make the goal of the support staff to get the star coder to zero downtime. Instead of dragging the star coder's pace, see how much he can get done if all the resources are at his fingertips. Get every expert he needs, access to every piece of info, and have a communicator that is capable of representing the star coder in meetings and batch up everything into efficient bites both ways. Make it so the star coder comes into the operating room, and there is a nurse there with his gloves and all his instruments all set out, and let him just crank.

Don't make the mistake of thinking a coder should manage people. Star coders are generally social misfits. They usually can't even get personal hygiene right, there is no chance they can develop people. Don't peg their salary to the number of people they manage. Aside from the demoralizing glass ceiling this represents, it doesn't comport with the reality of the impact the star coder has on the overall success of the organization.

The organization's job is to keep a pile of work worth doing in front of the star coders and their teams. Someone with real clout must have the mandate to run interference for these really talented people. Star coders shouldn't have to be constantly fending for their life in an organization. Currently, if you are mediocre but have good communications skills, you can do better than the star coder in an organization. That should never happen.

No star coder should be a lone wolf. They should be surrounded by a team of support that meet the star coder's level within each of their specialties and earn their trust. The support staff's mandate should be to make the star coder shine by supplying tools and removing obstacles. The whole group would be judged as one on their merits and great teams would earn reputation in the industry the same way a great surgeon does. If you need a spinal surgeon, people know who to go to. In the same way, a star coder and their team should be recognized and sought after.

Some surgeons work in pairs on particularly complicated tasks. Great teams should be able to get together if the star coders think it makes sense. Some support staff may be a member of more than one team if their specialty is demanded but for the most part teams function as close-knit units.

The ultimate success or failure of a team should be measured and members should be compensated with this in mind. Generally, the environment around the teams should be similar to an entrepreneurial incubator with projects around prototype stage handed off to the more traditional organization.

I would like to try this and see how it works in the real world. I think there are two ways to do it - within a corporation that has complete buy-in from the top and outside a corporation as a "tiger team" of consultants. The first is better while the second is probably easier. However, as the popularity of Entrepreneur in Residence roles within corporations grows, that will hopefully change.

So those are my thoughts. Leave a comment and let me know what you think. Would something like this work? How do you identify the star coders? Do you have any suggestions to the way this would be structured?

Crockford on JavaScript

Everything you need to know about JavaScript by Douglas Crockford:

Volume 1: The Early Years


Chapter 2: And Then There Was JavaScript


Act III: Function the Ultimate


Episode IV: The Metamorphosis of Ajax


Part 5: The End of All Things


Scene 6: Loopage


Level 7: ECMAScript 5: The New Parts


Section 8: Programming Style & Your Brain

Fix for Camera & GPS on the Galaxy Nexus with Android AOSP Jelly Bean

Proprietary drivers for the camera and GPS are included in Google's Nexus Drivers page at https://developers.google.com/android/nexus/drivers but the code to copy them into the Jelly Bean AOSP build isn't there. To fix, pull sirfgps.conf from a phone with the factory image: (obtainable from https://developers.google.com/android/nexus/images#takju)

adb pull /system/vendor/etc/sirfgps.conf

or grab a copy here: http://forum.xda-developers.com/showthread.php?t=1322765

and place it in vendor/samsung/maguro/proprietary/sirfgps.conf

Next, add the following to vendor/samsung/maguro/proprietary/Android.mk

###################################
include $(CLEAR_VARS)
LOCAL_MODULE := sirfgps
LOCAL_MODULE_OWNER := samsung
LOCAL_SRC_FILES := sirfgps.conf
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .conf
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc
include $(BUILD_PREBUILT)

include $(CLEAR_VARS)
LOCAL_MODULE := gps.omap4
LOCAL_MODULE_OWNER := samsung
LOCAL_SRC_FILES := gps.omap4.so
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/hw
include $(BUILD_PREBUILT)

include $(CLEAR_VARS)
LOCAL_MODULE := ducati-m3
LOCAL_MODULE_OWNER := samsung
LOCAL_SRC_FILES := ducati-m3.bin
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .bin
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/firmware
include $(BUILD_PREBUILT)

include $(CLEAR_VARS)
LOCAL_MODULE := libpn544_fw
LOCAL_MODULE_OWNER := samsung
LOCAL_SRC_FILES := libpn544_fw.so
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib
include $(BUILD_PREBUILT)
###################################

and in the same file, change the LOCAL_MODULE_PATH for fRom to install into $(TARGET_OUT)/bin rather than $(TARGET_VENDOR_OUT)/bin. This drastically speeds up the front / back camera switching and stops the video camera from crashing. The fixed fRom settings should look like this:

###################################
include $(CLEAR_VARS)
LOCAL_MODULE := fRom
LOCAL_MODULE_OWNER := samsung
LOCAL_SRC_FILES := fRom
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_PATH := $(TARGET_OUT)/bin
include $(BUILD_PREBUILT)
###################################

Lastly, change your packages list in vendor/samsung/maguro/device-partial.mk to:

###################################
PRODUCT_PACKAGES := \
fRom \
libsec-ril \
libsecril-client \
sirfgps \
ducati-m3 \
gps.omap4 \
libpn544_fw
###################################

Now you should be able to clean compile AOSP and have the camera and GPS working smoothly.

Notes on Leadership and Sales

Leadership and sales are associated with having people follow you. The difference with leadership is having people follow you where they wouldn't normally go - possibly in a direction that they think is dangerous. Great leaders have followers that do great things and become heroes who wouldn't normally be. But the leader's direction has to be virtuous. Value / judgement / ethics all come into play when deciding if this is a good leader or just a salesman. Leaders tell you why you want to do what is necessary and it sounds very simple. A complicated message is a symptom of a bad leader. Timing is also a factor - it may not be a lack of courage but a lack of courage at the right time. The mark of a higher level of leadership is doing the the right but unpopular thing at a time when everything seems to be going very well.

Notes on Disruptive Management

If you want to be disruptive, you have to kill the sustaining forces sometimes. Strategy is what you say and tactics are what you do - be careful when they diverge. Management and leadership are oil and water types of things. Management is about keeping things running or the avoidance of change. Leadership is about being bold and breaking things - about change and innovation. Management is 80% of what you should be doing. Everything else should be breaking things.

Notes on the Integrated Approach vs. the Modular Approach

Clay Christensen's innovator's dilemma materializes when companies in mature industries myopically focus on profit. Financials are necessary but should not be the only focus of a company. Profit is not the reason Apple is in business - creating great products is.

Apple is an integrated company so they are out of the gate first. They popularize (and in some cases come up with) the new product categories. Google's Android can be considered the modular approach but Google doesn't directly make money from Android. I'm waiting to see who can actually monetize that. Google might monetize their Android investment through Motorola Mobility but they seem to have a hands-off approach, at least for the moment.

Heidi Roizen for Venture-Lab.org

I've been a part of the Venture-Lab at Stanford University. They just posted a very interesting interview with Heidi Roizen where she discusses technology entrepreneurship. Her perspective is very interesting having been in the weeds as an entrepreneur, a VP at Apple and from the financial angle as part of a VC. She discusses:

* Work / Life balance
* Starting a technology company outside of Silicon Valley
* Competing Globally
* Women in Technology
* Networking / Reinventing Yourself
* Follow-through

Check it out.

Notes on Innovation, Commoditization, and Apple

When you are creating a new product category, it is much easier to be integrated because you don't know how the pieces will fit together. Once boundaries are defined, it becomes better to be a modular company.

Can you motivate someone to innovate if they know they will be commoditized in 3 years?

Apple is unable to play in a modular world so they have to constantly be in the new category creation game. With shortening cycles, maybe this becomes a viable long term business model of the technology industry.