A quick scan of “The Future of Programming Environments” article

Andreas Zeller‘s “The Future of Programming Environments”, provides an high level overview on the current trends of development tools. In this article, Zeller stated that development tools are evolving from extensible frameworks that supports integrated tools and their automation to “automated assistance in all development decisions”. Zeller further pointed out many known techniques that collects data about a piece of code in both static form and during run-time, then apply various automated analysis techniques that leads to visualization, statistics, data mining and machine learning to increase the productivity and code quality.

The paper serve more of a “review” or a “digest” of current trend of tools development than a “research” paper. Zeller certainly stated various recommendations that can serve as “best practices” for developers of tools. I would treat these recommendations as more of “common sense” than “design patterns”. This certainly is a good introductory paper with some interesting ideas and examples on what others have done in the tools space.

Comments and notes on Wikinomics (part 1)

A person I know urged me to read Wikinomics by Don Tapscott and Anthony D. Williams. So, I started reading. So far I read chapter 1, 4, and 5. I agree with less cheerful reviewers of this book (here and here) that this book probably doesn’t worth my time spent reading it. I actually agree the general theme presented by the book (what). I just wasn’t so thrilled by the way authors presented their ideas (how). One of the reviewers, Timothy Haugh, clearly pointed this flaw out by saying “Wikinomics suffers from a common malady among these ‘cheerleading for the future’-type books; namely, that what they take 300 pages to say could have been more easily and better said in about 60 pages.” Other than a few interesting anecdotes and catchy slogans, I didn’t feel I am learning something new and useful.

Here are a few notes on interesting anecdotes and catchy slogans:

* Low-cost of entry: Page 12: “What’s more, people can contribute to the ‘digital commons’ at very little cost to themselves, which makes collective action much more attractive.”
* Page 12: “A world where only the connected will survive.” This is digital divide and the authors says nothing about how to bring in the un-connected world.
* Globalization: Page 14: “Today 180,000 people work, live, learn, and play on Foxconn’s massive high-tech campus, designing and building consumer electronics for teenagers around the globe.” How this related to the central theme of the book? Did the globalization of FoxConn happened because of wikinomics or could it happen even without wikinomics? This reminded me the following sentence from “What Got You Here Won’t Get You There” by Marshall Goldsmith and Mark Reiter, “I’m talking about the difference between success that happens because of our behavior and the success that comes in spite of our behavior.” (Page 26)
* Page 20: “The new art and science of wikinomics is based on four powerful new ideas: openness, peering, sharing, and acting globally.”
* Page 24: “BiOS (Biological Open Source License)”
* Page 26: “But if your invention can be replicated at no cost, why should anyone pay? And if no one pays, how do you recoup your fixed-cost investment?” Where is the answer?
* Page 27: “The first time Michael Powell, then chairman of the Federal Communications Commission, used Skype, he concluded: ‘It’s over. The world will change now inevitably.'” So what? The world is changing all the time. The old world telcom industry still exists today and are getting bigger. What’s the point here?
* Page 32: Prosumer = “producer consumers” This word has many conflicting meanings according to wikipedia
* Page 104: “In fact, virtually all companies with sizable patent holdings are now busy mining their portfolios, looking for licensing-out opportunities, and taking technologies off the shelf that can bring in revenue.” What’s so wikinomic about this?
* Page 107: “When the company finds those good ideas, Huston says, it brings them inside, where it can capitalize on internal capabilities to enhance or append the offering.” Isn’t this an old concept? i.e. acquisition
* Page 107: ideagoras = “they help link all of these individuals, companies, and organizations together by establishing connections and facilitating transactions between buyers and sellers of ideas and technology.”
* Page 114: “‘Open innovation efforts can die like a flash in the pan,’ says Stern, ‘because some senior executive says, ‘I’m giving you two people and an external budget of ten thousand dollars, and we’d like to see ten deals in the first year.’ It just doesn’t happen. It takes quiet a bit of time for these initiatives to mature.” Many people probably would like to show this to their upper management this statement. However, it convey no potential value and such argument probably won’t go very far without clear communication of value-add.
* Page 114: “Employees should also be rewarded for spotting and acquiring external ideas.” I would love to see this happen. At the same time, I don’t have high hope for this.
* Page 117: “Superior technology alone will not produce competitive advantage.” Next…
* Page 129: “But when it came time to rethink the telematic features for future models(such as GPS navigation), the company released a digital design kit on its Web site to encourage interested customers to design them instead.” We should let our customers design our products too! ;)
* Page 144: “Users exert editorial control by clicking on the digg button for each story they like. Articles that receive the most diggs are promoted to the homepage. And so the community collectively updates the front page. You could say the community is the editor.” We should let our users be the editor too!
* Page 146:

* Give users access to raw content such as interviews as a 
means of providing greater transparency and accountability.
* Provide tools and become a platform for user-generated 
rather than firm-generated content.
* Redesign all content to be a conversation rather than a 
corporation monologue.
* Treat advertising as content too.
* Use new distribution forms, including peer-to-peer networks.
* Adapt content forms and schedules to user demands.

* Page 148: “If you make it profitable for customers to get involved, you will always be able to count on a dynamic and fertile ecosystem for growth and innovation.”

Notes from “What Got You Here Won’t Get You There”

Marshall Goldsmith and Mark Reiter wrote a book “What Got You Here Won’t Get You There: How Successful People Become Even More Successful!” This book focus on 20 workplace bad habits and some key good habits. I enjoyed the reading enough to give a short speech on a few points in the book and won a best speaker ribbon for the day! :) I am including some quotes that I noted from the book. To really understand the motivation and explanations on these statements, you should get the book and read it!

Page 19: “This ‘I have succeeded’ belief, positive as it is most times, only becomes an obstacle when behavioral change is needed.”
Page 21: “The challenge is to make them see that sometimes they are successful in spite of this behavior.”
Page 22: “I will Succeed” may leads to overcommitment
Page 24: “I have now made peace with the fact that I cannot make people change. I can only help them get better at what they choose to change.”
Page 26: “Superstition is merely the confusion of correlation and causality.”
Page 28: “Pick a quirky or unattractive behavior that you habitually do, something that you know is annoying to friends or family or coworkers. Now ask yourself: Do you continue to do it because you think it is somehow associated with the good things that have happened to you? Examine it more closely. Does this behavior help you achieve results?”
page 29: “You can’t force people to work together. You can’t mandate synergy.l You can’t manufacture harmony, whether it’s between two people or two divisions. You also can’t order people to change their thinking or behavior”
Page 29: “People will do something — including changing their behavior only if it can be demonstrated that doing so is in their own best interest as defined by their own values.”
Page 31: “If you press people to identify the motives behind their self-interest it usually boils down to four item: money, power, status, and popularity. … Having achieved these goals, they turn to higher-level goals, such as ‘leaving a legacy’ or ‘being an inspiring role model’ or ‘creating a great company.'”
Page 40: The Twenty Habits: 1. Winning Too much, 2. Adding too much value, 3. Passing judgment, 4. Making destructive comments, 5. Starting with “No,” “But,” or “However”, 6. Telling the world how smart we are, 7. Speaking when angry, 8. Negativity, 9. Withholding information, 10. Failing to give proper recognition, 11. Claiming credit that we don’t deserve, 12. Making excuses, 13. Clinging to the past, 14. Playing favorites, 15. Refusing to express regret, 16. Not listening, 17. Failing to express gratitude, 18. Punishing the messenger, 19. Passing the buck, 20. An excessive need to be “me”.
Page 44: “As we advance in our careers, behavioral changes are often the only significant changes we can make.”
Page 49: The fallacy of added value: “The problem is, you may improved the content of my idea by 5 percent, but you’ve reduced my commitment to executing it by 50 percent, because you’ve taken away my ownership of the idea. My idea is now your idea — and I walk out of your office less enthused about it than when I walked in.”
Page 56: “The fact that a destructive comment is true is irrelevant. The question is not, ‘Is it true?’ but rather, ‘Is it worth it?'”
Page 61: “Being smart turns people on. Announcing how smart you are turns them off.”
Page 94: “A leader who cannot shoulder the blame is not someone we will follow blindly into battle.”
Page 95: “In that sense, being wrong is an opportunity — an opportunity to show what kind of person and leader we are.”
Page 98: “If he could shed his ‘excessive need to be me,’ he wouldn’t see himself as aa phony. He could stop thinking about himself and start behaving in a way that benefited others.”
Page 99: “It comes from misunderstanding what we want in our lives. We think we’d be truly happy (or at least happier) if only we made more money… So, we pursue those goals relentlessly. What we don’t appreciate until much later is that in obsessing about money, we might be neglecting the loved ones — i.e., our family — for whom we are presumably securing that money…”
Page 100: “It also comes from misunderstanding what others want us to do. The boss says we have to show ten percent revenue growth for the year, so when it appears we will miss that target, goal obsession forces us to adopt questionable, less than honest methods of hitting the target… If you examine it more closely, we’re not really obsessed with hitting the ten percent growth; our true goal is pleasing our boss.”
Page 101: “As I say, this is why I’ve given goal obsession its own special corner. It’s not a flaw. It’s a creator of flaws.”
Page 114: “Forgiveness means letting go of the hope for a better past!”
Page 116: “…change is not a one-way street. It involves two parties: the person who’s changing and the people who notice it.”
Page 122: “In soliciting feedback for yourself, the only question that works — the only one! — must be phrased like this: ‘How can I do better?'”
Page 128-132: 5 self monitoring techniques: 1. Make a list of people’s casual remarks about you, 2. Turn the sound off (i.e. observe their actions), 3. Complete the sentence (i.e If I do this, I’ll get that benefit.), 4. Listen to your self-aggrandizing remarks, and 5. Look homeward.
Page 147-149: Think before you speak, Listen with respect, and ask youself, “Is It Worth It?”
Page 170: Practicing Feedforward
Page 175: “It’s the feeling that when we help another person, we help ourselves.”
Page 181: “If you study successful people, you’ll discover that their stories are not so much about overcoming enormous obstacles and handicaps but rather about avoiding high-risk, low-reward situations and doing everything in their power to increase the odds in their favor.”
Page 179-198: Changing: The Rules: 1. You Might Not Have a Disease That Behavioral Change Can Cure. 2. Pick the Right Thing to Change 3. Don’t Delude Yourself About What You Really Must Change 4. Don’t Hide from the Truth You Need to Hear 5. There is No Ideal Behavior 6. If you can Measure It, You Can Achieve It. 7. Monetize the Result, Create a Solution 8. The Best Time to Change Is Now
Page 222: “Many older people say they were so wrapped up in looking for what they didn’t have that they seldom appreciated what they did have.”

Notes from Sustainable Software Development

Here are my notes from Kevin Tate’s “Sustainable Software Development: An Agile Perspective”


  • “Sustainable development is a pace that can be maintained indefinitely.”
  • “Sustainable development requires a singular focus on a form of technical excellence that regularly provides useful software to customers while keeping the cost of change low.”
  • “Balancing the short and long term requires projects to be more driven by a vision than tracked against a plan.”

Chapter 1

  • “Key indicators of sustainable development are an ability to keep the number of defects relatively constant over time while recognizing that the software must be modified to keep the cost of change under control.”
  • “Working harder (more hours) results in declining capability over time. Working smarter, with an emphasis on continual improvement, leads to increasing capability”
  • “Companies need people who treasure the contribution they make when at work and who are passionate about the success of the company. This has no correlation with the number of hours worked. . . ”

Chapter 2

  • “Technical debt is caused by an accumulation of poor decisions over timedecisions that often seem right at the time but are usually made in the interests of a short-term quick fix to the software.”

Chapter 3

  • “The most common response to flailing around is to apply bureaucracy, to define a set of strict rules and milestones that cannot be deviated from. But bureaucracy stifles innovation and is most often misguided, leading to unintended side effects. It is also inflexible and change-intolerant.”
  • Great teams recognize that what they are trying to achieve is more important than how they achieve it
  • Three elements of sustainable development:

    • A vision
    • “Practices that are consistent with the principles.”
    • A feedback loop that leads to enhances to practices.
  • Sustainable software development principles:

    • “Continual refinement of the product and project practices.”
    • “A working product at all times.”
    • “A continual investment in and emphasis on design.”
    • “Valuing defect prevention over defect detection.”
  • “Effective teams strive for the optimal balance between being visionary (thinking about the long term) and tactical (focusing on today’s problems), and this balance changes over the course of the project.”
  • “Great cultures recognize talents and skills as separate from each other. Too many companies are focused on skill alone and recruit only for skills. But skills can be taught, whereas talent can’t.”

Chapter 4: Working Product

  • Practice 1; No “Broken Windows” — “no hacks or ugly workarounds”
  • Practice 2: Be Uncompromising about Defects — Preventing and addressing defects and put a closure (fix it or close it with a reason) before moving on.
  • Practice 3: “Barely Sufficient” Documentation
  • Practice 4: Continuous Integration
  • Practice 5: Nightly Builds
  • Practice 6: Prototyping — In addition to the traditional concept of prototyping with code, a “whiteboard and paper” approach is another quick way to gain insights from the customer(s).
  • Practice 7: Don’t Neglect Performance
  • Practice 8: Zero Tolerance for Memory and Resource Leaks
  • Practice 9: Coding Standards and Guidelines
  • Practice 10: Adopt Standards (Concentrate on Your Value-Add)
  • Practice 11: Internationalize from Day One
  • Practice 12: Isolate Platform Dependencies
    Chapter 5

  • Practice 1: Ruthless Testing — Use unit tests, mock objects, integration testing (when using 3rd party libraries), system testing (that simulate real user loads), performance testing, Resource-usage testing,
  • Practice 2: Use Available Tools — Source code analyzer such as PMD.
  • Practice 3: Pair Programming and Code Reviews
  • Practice 4: Lightweight Root-Cause Analysis — 1. What cause the defect? 2. What would have caught this defect? 3. How can we prevent this from happening again?

Chapter 6

  • Practice 1: Design Vision
  • Practice 2: Guiding Principles
  • Practice 3: Simple Design – If you see an opportunity to design for a future need, do it and make that architecture work visible to users. The goal is to avoid costly refactor work.
  • Practice 4: Refactoring
  • Practice 5: Design Patterns — Watch out potential over use of patterns that could be solved with simipler implementations. Sometimes pattern implementations might vary greatly or even have different behaviors.
  • Practice 6: Frequent Rapid Design Meetings
  • Practice 7: Commitment to Rearchitecture – Use existing tests to check for regression.
  • Practice 8: Design for Reuse

Chapter 7

  • “the challenge with agile methods is to rely on both adaptability and anticipation and to have a team that knows when and how to apply each, and in what measure.”
  • Practice 1: Iterative Development
  • Practice 2: Release Planning
    “as with any project, you can either change the date, the feature set, or the resources. You can’t expect to fix all three.”
  • Practice 3: Daily Standup Meetings — What you did? What are you doing? What is stopping you?
  • Practice 4: Retrospectives — “What worked well?” “What needs to be improved?” “What should we do differently?”
  • Practice 5: Coaching and Team Development — It’s important that developers understand what’s important to the customers, which will infer how the customers use the product. Note that how the customers use the product (i.e. what they really asking for) maybe differ from what they asking for. “If the only value you provide to an organization is writing code, then your job can be outsourced (i.e., worked on by cheaper labor).”
  • Practice 6: Make Key Metrics Visible

Chapter 8

  • Required Change factors: Leadership, a sense of urgency, and executive support
  • Change enablers: persistence, training, continual wins, positive reinforcement of desired behaviors, communication, vision, and strategy.

Chris Richardson on Testing

During JavaOne 2007, I attended Chris Richardson’s talk on Minimalist Testing Techniques for Enterprise Java Technology-Based Applications. Beyond the usual JUnit and CruiseControl, he mentioned a few new interesting names: JMock, EasyMock, and Selenium. Both JMock and EasyMock are object mock-up frameworks that allow a developer to focus on unit test a module independent from others. In order to use this, a team needs to agree on interfaces among modules before creating such mock-ups. Seleium is a web application testing tool that focus on browser compatibility and functional testing. It runs within a browser and has its own IDE for test development. These are certainly interesting testing tools.

9 Advices From a Legendary High School Football Coach

In a recent conversation with a parent about his kids, I mentioned a few advices Bob Ladouceur gave about parenting, coaching, and working with kids. I realized that this could be useful to more people, so here is the list that I noted down:

1. It’s okay if you don’t know everything.
2. A trustworthy adult other than the parent is required to mentor the teenager.
3. Never a bad kid
4. Teenagers are not lazy if they see the value of a goal.
5. Kids are similar to adults, who needs praise, pat on the back, etc.
6. If you are the messenger, you have to live the message.
7. Believe the higher power by lower self attitude & open to people who knows more.
8. Everyone wants to be successful.
9. Be in a constant state of re-invent you self, change, and embrace change.

Persuasive Stories

What did BJ Fogg, Chip Heath, and Andy Goodman had in common? All of them discussed about stories and their persuasive nature.

On 4/27/2007, BJ Fogg gave a speech on “Persuading with Pictures”. He said that a good story grabs people’s attention and presents a strong persuasion. “That’s what our brain latches on to”, he emphasized. In his point of view, a persuasive story embed values and cultural. This means much of TV programming, such as sitcoms, do not present persuasive stories. At the same time, commercials often has good stories showing cause and effect.

Andy Goodman, in his podcast, talked about storytelling from a effective communication point of view. He demonstrated to the audience how much more effective and powerful a story can get the point across when compare it to ineffective mundane business talk.

Chip Heath talked about the power of urban legends, a form of persuasive stories, in his book and podcast. He described the characteristics of urban legends and explained the key factors that made urban legends so powerful and spread so widely without marketing campaigns or a huge war chest.

All in all, if you leverage the technique of persuasive storytelling, you will have a very powerful tool at your disposal.

“Our Iceberg Is Melting”

Special thanks to Mimi H. for recommended this book to me. This certainly was a pleasure to read. John Kotter and Holger Rathgeber took on a similar story telling style that Spencer Johnson and Kenneth Blanchard used to write “Who Moved My Cheese?“. It read like a children’s story with big fonts (easy on the eyes), pictures, lively characters and lessons embedded to teach something novel. The story telling style removed the reader from applying his/her own discriminatory views and enable the readers to better accept the key ideas presented by the authors. The key ideas that Professor Kotter and Mr. Rathgeber conveyed in this penguin story is the eight step process of successful change, which is listed on page 130 and 131 in the book. Here is a brief listing of the steps:

  1. Create a Sense of Urgency.
  2. Pull Together the Guiding Team.
  3. Develop the Change Vision and Strategy.
  4. Communicate for Understanding and Buy In.
  5. Empower Others to Act.
  6. Produce Short-Term Wins.
  7. Don’t Let Up.
  8. Create a New Culture.

How these steps applied throughout the penguin story? You will have to read the book to find out. ;)

Trust, the glue of Relationships and Knowledge Exchange

I was impressed by Dr. Karen Stephenson‘s talk about social networks. She firmly believes that “relationships are the true medium of knowledge exchange, and trust is the glue that holds them together.” (Page 248, “Enlightened Power”, see pdf) Without trust, much of organizational machinery breaks down and can leads to failures in reaching organizational goals. This certainly is a powerful concept and at the same time subtle enough that we may overlook its importance.

Reliability/Validity vs Please Understand Me II

Roger L. Martin has an interesting way of framing the style of thinking: Reliability and Validity. Reliability is “intended to produce identical or consistent results under all circumstances, often by analyzing objective data from the past.” (source) “To achieve high validity, however, systems must take into account a large number of variables and use subjective measurements. Adding squishy variables and using gut feel allows for outcomes that are more accurate, even though the processes may not be able to deliver accurate results consistently.” (source) These two styles of thinking are completely opposite of each other and businesses need talents from both sides to operate a scalable business and innovate. Roger L. Martin emphasised that “It’s almost impossibly hard to design something compelling for a person whom you don’t respect or attempt to understand.” (source) I would expect the same in reverse. So, it’s important for people on both spectrum of reliability-validity spectrum to understand each other and interact with consideration of the other’s perspective.

This is a similar idea to what David Keirsey presented in his book, Please Understand Me II: “that members of families and institutions are OK, even though they are fundamentally different from each other, and that they would all do well to appreciate their differences and give up trying to change others into copies of themselves.” (source) The similarity is within the concept of understanding the differences and respect such qualities. When people can start respect differences, they then start focus on ways to work or live together, i.e. play nice.

However, the two concepts are very different by how each individual wants to resolve issues that stem from differences. David Kerisey believes that the differences are essentially hard-coded into one’s temperaments, therefore immutable. So, he believes that people should give up change one another. On the other hand, Roger L. Martin believes reliability and validity types of thinking are acquired through education, practice and cultural environments. One example for such change is how a start-up company grows from a validity oriented thinking with their new ideas/products/solutions to a reliability oriented thinking with the need to apply reliability oriented processes: Six Sigma, CRM, Sarbanes-Oxley (see: source) So, he is hopeful that with the redesign of his business school, he can make a difference to increase the innovative practices (validity/design) among the shool’s MBA students.

No matter which approach you might have a preference to use or believe, both approaches start from the point that respect the differences is crucial and that’s where constructive next steps are possible.