Wednesday, May 26, 2010

STARS - transition management

The STARS model is a great guide for a transition strategy. It's hard to know when you need to make a transition in your company, but a greater challenge is to know what type of strategy to use when making the transition. I found a very interesting article in the Harvard Business Review (January 2009) by Michael D. Watkins named "Picking the Right Transition Strategy". The article's emphasis is with the "state" of the company.
Once you understand the state of the organization or initiative you've heading up, you can more effectively apply certain fundamental principles (several of them listed here) to ease your transition and increase your odds of long-term success. Your business situation should shape how you apply those principles.
Using the author's STARS model, leaders can figure out which state the company is in and, more important, how to tailor their strategies for organizational and personal change accordingly.

The STARS model stands for the five different states of a company:
  • Start-Up
  • Turnaround
  • Accelerated Growth
  • Realignment
  • Sustaining Success

Start-UpTurnaroundAccelerated GrowthRealignmentSustaining Success
State:
Assembling the capabilities (people, financing, and technology) to get a new business or initiative off the ground
Saving a business or initiative widely acknowledge to be in serious troubleManaging a rapidly expanding businessReenergizing a previously successful organization that now faces problemsComing in on the heels of a highly regarded leader with a stellar record of accomplishment
Challenges
Building the strategy, structure, and systems from scratch without a clear framework or boundaries

Recruiting and welding together a high-performing team

Making do with limited resources
Reenergizing demoralized employees and other stakeholders

Making effective decisions under time pressure

Going deep enough with painful cuts and difficult personnel choices
Putting in place structure and systems to permit scaling

Integrating many new employees
Convincing employees that change is necessary

Carefully restructuring the top team and refocusing the organization
Living in the shadow of the former leader and managing the team he or she created

Playing good defense before embarking on too many new initiatives

Finding ways to take the business to the next level
Opportunities
You can do things right from the beginning.

People are energized by the possibilities.

There are no rigid preconceptions.
Everyone recognizes that change is necessary

Affected constituencies offer significant external support

A little success goes a long way
The potential for growth helps to motivate people

People will be inclined to stretch themselves and those who work form them
The organization has significant pockets of strength

People want to continue to see themselves as successful
A strong team may already be in place

People are motivated to continue their history of success

A foundation for continued success (such as long product pipeline) may be in place

Tuesday, May 18, 2010

Twitter is growing...BIG TIME!

As I mentioned before, Twitter is without a doubt a disruptive innovation in many different aspects and specially in premium text message/short messages (PSMS). As a definition, disruptive innovation is a term used in business and technology literature to describe innovations that improve a product or service in ways that the market does not expect, typically by lowering price or designing for a different set of consumers. Twitter's traffic is growing by leaps and bounds. The latest statistics based on comScore are:






And based on the latest keynote by Twitter CEO Evan Williams, the numbers are simple staggering:
  • 105 million registered users and they add 300k uses every day
  • 3 billion API request a day (equivalent to Yahoo traffic)
  • 55 million new tweets every day
  • 600 million search queries every day
  • 175 employees
  • 75% traffic comes from third party clients
  • 60% tweets come from third party clients
  • 100,000 registered apps
  • 180 million unique visitors on Twitter.com (you don’t have to be a user)
  • FlockDB, their social graph database that they just open sourced, stores 13 billion edges
  • They started using "Murder" a new BitTorrent platform to transfer files during development. This reduced the transfer time from 40 minutes to 12 seconds
  • Made deals with 65 (telco) carriers
  • 37% of active users use Twitter on their phone (@ev wants this number to be 100%)

What does this means for those companies that have their core strategy based on premium SMS? To be honest, I'm not sure. I do know that if your strategy is to offer text messages to DJs or SMS through TV tickers, then that's no a good long strategy. And as I mentioned previously, neither is a "joke" or "horoscope" subscription for $6.99. The bottom line is that it is hard as it is to fight against a trend such as Twitter, but it is even a bigger challenge to change someone minds about a brand or a product. Currently, Twitter is the de facto of users to communicate their thoughts to the world using mobile phones.

Tuesday, May 4, 2010

PSMS and Operators...c'mon lets get it together!

Last month T-Mobile deployed its 3PG (third party gateway) network to counteract the regulations of premium SMS (PSMS) making it harder to monetize from this model. One can argue that this is better for the consumer, but is also a great deal of headache for companies that build their strategy on PSMS. T-Mobile followed the footsteps of Verizon and AT&T. 3PG is a "billing platform" which provides a two phase charging (initiate/authorize & charge) to avoid spam or fraudulent transactions in mobile SMS.

The problem is that billing transactions in the US are through MT (mobile terminated) rather than MO (mobile originated). This means that if a customer wants to purchase a ringtone, the end-user will be charged once he receives the message/ringtone. This model, contrast to most Latin America and European market, has one flaw: spam. Individuals can potentially spam PSMS. The solution is through a validation process or a "two phase charging" process. This means that if the SMS has a tariff, it will be subjected to some validation.

As per December 2009 study, the US operator market share is composed with the following:
  1. Verizon : 31.2%
  2. AT&T : 25.0%
  3. T-Mobile : 12.1%
  4. Sprint : 12.1%
  5. Tracfone : 4.8%
  6. MetroPCS : 2.3%
  7. US Cellular : 2.2%
  8. Boost Mobile : 2.1%
  9. Cricket : 1.7%
  10. Virgin Mobile : 1.7%
  11. Others : 5.0%
Currently each of the top three operators have different platforms. Verizon has OIOO, AT&T has OPPC, and now T-Mobile has 3PG. All these platforms are different and they all tackle the same problem. In reality, all these operators are trying to develop a better mousetrap. Marketing companies are aware of this problems and agreed that something should be done. However, the operators or the government need to actually sit down and come up with some type of standardization.

In conclusion, marketing companies whose strategy are based on PSMS needs to really look at this model and considered if its worth it. In the book Good to Great, Jim Collins devoted an entire chapter on "confronting the brutal facts". Collins stated, that a "great" company cannot make a series of good decisions without confronting the brutal facts. At the end of the day, if you want to deal with PSMS you have to know that:
  1. You have to maintain different type of platforms specially if you just want to have the top three US operators
  2. The industry is becoming more and more regulated from both the carriers and the marketing companies to initiate campaigns
The choice is yours.

Wednesday, February 3, 2010

Want to motivate workers? Just ask, "any blocks?"

A manager can make a different when it comes to progress and can control it. As a manager, there are moments when the team makes great strides and everything seems to be humming. These are moments when our constituencies and business owners are happy that we are making progress. Most important, these are the moments when the team is extremely motivated. For over three years, I thought that these moments were out of my control. It all started three years ago when I worked with a team of ThoughtWorks. One of the project manager said,
...when you are a high level manager, you don't make a big difference at work.
Later at a bar we dissected that sentence. When you are a manager, progress is mostly made by people under you, but you are not doing the work per-se. You can measure, forecast, but you really can't increase the speed/velocity of the project.

On December, I read the article What Really Motivates Workes by Teresa M Amabile and Steven J. Krammer on HBR and found out that the top motivator for workers is progress. They based a research purely on understanding the power of progress. The authors found out that
on days when workers have the sense they're making headway in their jobs, or when they receive support that helps them overcome obstacles, their emotions are most positive and their drive to succeed is at its peak.
As a manager the key motivation turns out to be largely within my control. Manager have a large influence over events that facilitate or undermine progress. This enforces the Scrum methodology of having the daily 15-20 minute meetings and asking the three questions:
  1. What'd you do yesterday?
  2. What you gonna do today?
  3. Do you have any blocks?
I have to admit, I always focused on the first two questions. I did pay attention to the "blocks", but I didn't prioritized them as I should've been. I was under the impression that if we finished/burned tasks yesterday, and we were committed to burning some points today, we were making progress. Now, it's the opposite. The authors suggest to
Scrupulously avoid impeding progress by changing goals autocratically, being indecisive, or holding up resources.
I take a great care of dealing with this blockages ASAP. I don't just focus on the blockages. I take a great care to clarify overall goals, ensure that people's effort are properly supported, and reframe from exerting time pressure to intense that minor glitches are perceived as crises rather than learning opportunities. The other item that I need to focus is on cultivating a culture of helpfulness.

I was pretty impressed with this article and I made adequate changes after I read it. After a few weeks, I noticed some pretty good outcomes specially on my junior programmers. Not so much with my senior developers. One of the reasons is "changing context". When one of the junior developer/engineers gets stuck they would jump to ask the questions to the senior developers. As everyone knows, context changing is very expensive. I'm trying to put some type of threshold for the junior developers to ask a question (20-30 minutes). I was also thinking of making some new rules so that the senior developers don't get bother when they are focused on a particular tasks. One of the ideas was using headphones. If someone is wearing headphones that means that he's focusing on some type of task. I'm still trying to figure out how I can make this balance work, but so far it is good to know that I'm on control of it.

Monday, November 16, 2009

Scalability and Performance - learning from the best (Amazon and eBay)

I always go back to these presentations at least once a year to review performance and scalability.
Amazon and eBay are architectures that makes any developer salivate or wonder, "how they do it?". The Werner Vogels and Randy Shoup are (at least to this humble developer) awesome architects which we can learn MUCH about what they do best; architect high available, high performance, and highly available architectures. Werner Vogels discusses the CAP theorem very well, and how it's a KILLER to current applications. Shoup discusses the forces that take place when you develop these type of architectures.

Thursday, November 12, 2009

GMail and log4j e-mail appender - error STARTTLS

I couldn't get log4j working along with Google. I kept on getting the following error:

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS


Later I found out that the best way to get it working was creating my own SMTP appender. What I wanted, was to have a flexible application that I could configure once with a gmail username (marcelo@gmail) and then have the users/clients configure the rest of the log4j appender using the log4j property file.

Below is how I created the application. First you will need your parameters for your gmail account including the starttls. I place all these in a Enum class.

public enum EmailEnum {
HOST(
"smtp.googlemail.com"), PORT("587"),
USERNAME(
"marcelo@gmail.com"),PASSWORD("secret"),
AUTHORIZED(
"mail.smtp.auth"), STARTTTS("mail.smtp.starttls.enable"),
TRUE(
"true");
private String value;
private EmailEnum(String value) {
this.value = value;
}

public String getValue() {
return value;
}
}


Then, I created the class that actually creates the mail appender. The main part is the appender method. As you can see, I am using the SMTPAppender class and I override the appender method. As you can tell, I'm using the Spring SimpleMail class to send the message.


package com.upmobile.midccore.commons.logger;

import java.util.Properties;

import org.apache.log4j.net.SMTPAppender;
import org.apache.log4j.spi.LoggingEvent;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;


/**
* Application builds the SMPT Appender for the Google Mail (gmail).
*
@author marceloolivas
*
*/
public class GMailAppender extends SMTPAppender {
private JavaMailSenderImpl javaMail;
private static final String NL = System.getProperty("line.separator");

public GMailAppender() {
javaMail
= new JavaMailSenderImpl();
javaMail.setHost(EmailEnum.HOST.getValue());
javaMail.setPort(Integer.parseInt(EmailEnum.PORT.getValue()));
javaMail.setUsername(EmailEnum.USERNAME.getValue());
javaMail.setPassword(EmailEnum.PASSWORD.getValue());
Properties props
= new Properties();
props.setProperty(EmailEnum.AUTHORIZED.getValue(), EmailEnum.TRUE.getValue());
props.setProperty(EmailEnum.STARTTTS.getValue(), EmailEnum.TRUE.getValue());
javaMail.setJavaMailProperties(props);

}

@Override
public void append(LoggingEvent event) {
super.append(event);
// Create a thread safe "copy" of the template message and customize it
SimpleMailMessage msg = new SimpleMailMessage();
StringBuilder builder
= new StringBuilder();
builder.append(getLayout().format(event));
builder.append(event.getMessage().toString());
if (event.getThrowableInformation() != null) {
builder.append(NL);
String[] stackTrace
= event.getThrowableInformation().getThrowableStrRep();
for(int i = 0; i < stackTrace.length; i++) {
builder.append(stackTrace[i]
+ NL);
}
msg.setText(builder.toString());
}
String[] senders
= getTo().trim().replace(" ", "").split(",");
msg.setTo(senders);
msg.setSubject(
this.getSubject());
try{
javaMail.send(msg);
}
catch (MailException ex){
}

}
}


The actual log4j properties file is the following:

# Global logging configuration
log4j.rootLogger
=ERROR, stdout, EMAIL
# SqlMap logging configuration...
log4j.logger.com.ibatis
=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource
=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel
=DEBUG
log4j.logger.com.ibatis.sqlmap
=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser
=DEBUG
log4j.logger.com.ibatis.common.util.StopWatch
=DEBUG
log4j.logger.java.sql.Connection
=DEBUG
log4j.logger.java.sql.Statement
=DEBUG
log4j.logger.java.sql.PreparedStatement
=DEBUG
log4j.logger.java.sql.ResultSet
=DEBUG

log4j.logger.org.springframework
=INFO
log4j.logger.com.upmobile
=DEBUG
# Console output...
log4j.appender.stdout
=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout
=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern
=%-4p [%d{ISO8601}][%t] (%c.%M()line %-4L ) %m%n

# e
-mail appender
log4j.appender.EMAIL
=com.upmobile.midccore.commons.logger.GMailAppender
log4j.appender.EMAIL.Threshold
=ERROR
log4j.appender.EMAIL.Subject
=Error with the application
log4j.appender.EMAIL.to
=abc@acme.com,xyz@acme.commons
log4j.appender.EMAIL.SMTPDebug
=true
log4j.appender.EMAIL.layout
=org.apache.log4j.PatternLayout
log4j.appender.EMAIL.layout.ConversionPattern
=[%d] [%t] %-5p %c %x - %m%n
log4j.appender.EMAIL.BufferSize
=1

Monday, November 9, 2009

Motivating programmers

Dan Pink had an extraordinary presentation in TED regarding the disconnect on traditional reward system. We have learned over and over about the power of incentives and how they should improved motivation. However, science has proven that for complex problem this does not work. Instead, it could dull thinking and it slows creativity. It was impressive that for the past forty years what science has proven the business has not noticed.

Contingent motivator (cause and effect) it's a good approach for 20th century tasks for simple set of rules (narrow our focus), but for most jobs/problems (specially programmers/software engineers) extrinsic motivators are better because we need to see the entire context (work with our left and right brain). He explained it extremely well using the "candle problem".

I can watch this presentation over and over, and always find something useful. Highly recommend it.