Archive for December, 2012

2013 New Year Resolutions for all CTOs

December 31, 2012 Leave a comment

The most successful CTOs are managing champions of a process developing and executing technology strategy which helps deliver measurable and sustainable business results.

That’s the common wisdom.   I believe that exceptional CTOs are exceptional because they take this common wisdom even further:

“… deliver measurable business results which create a sustainable competitive advantage”.

It’s very comforting to see your closest competitor in the rear view mirror.  Yet the journey to this point in a company evolution is extremely difficult.

It does not have to be difficult.   The three elements of success – people, process, and technology – have not changed.  Exceptional CTOs know this very well.

My selected New Year resolutions for all CTOs in 2013 …


– Bring the question of strategic alignment into every conversation, even if someone else is responsible for executing other elements of company’s strategic and operating plan.   Does Sales organization have capacity to begin training well in advance of the launch date of a new, more complex solution offering?  Who is responsible for enabling Sales organization?  Is the Customer Support organization ready to accept the first call from a customer using the new major release?  Is the root cause decomposition process working?   Will it lead to a discovery of defect?  Or – a recognition that training was inadequate?

– You may build the best product.  But someone else may need your help to educate the Sales team.  Do not be afraid to bring it up and get on the road to educate the Sales team or even engage customers in the early stages of the sales process.


– Great teams are built and nurtured, not created.   Hire people who can demonstrate they subscribe to the mission and can work with others.  Great talent working alone does not contribute to the larger goal.   Get to know every engineer and treat each individual like they are the most important person.

– Tell your team on January 2 that you in fact work for them (instead of everyone working for you).  Your job is to establish clear objectives, enable everyone, remove barriers, and get out of the way.  This is the “right side up” organization – and it works.

– Great teams are quickly minimized by marginal managers.   Find a suitable opportunity for  them outside of your company.  Never transfer problems.   Do not be afraid of managing directly while finding a replacement.  Ask the most senior members of the team to participate in the interview process.

– Dedicate at least 50% of your time coaching the team.   Find a way to change the course of a meeting where the majority is trying to convince the minority why something may be impossible.   What if the minority is right?  What if something impossible is actually possible?   How do we – as a team – shift the dialog and determine one or more alternatives?

– Remind yourself every morning that listening is more important than talking

– Remind your team members that complex problems often require a collection of techniques in order to create a sustainable solution.  Excessive reliance on one process or technique often leads to failure

– If your team fails, immediately accept the failure for the team.  Then find the answer together


– Automate everything

– Bring focus on quality as early as possible in the design cycle.  If the functionality depends on correct database state after a series of updates, did anyone consider how to create an automated testing harness to generate several database states in order to test this functionality in the future?

– Over invest in the build / release engineering infrastructure

– Over emphasize defensive programming

– Over emphasize self educational error management, logging, and reporting approach;  ensure this is reflected in every engineering estimate

– Build and foster a culture where the value of finding and addressing the root cause is more important than who caused the problem

– Institute few metrics which are truly meaningful and highlight the performance of your organization.   One metric I ask my engineers to recognize in everything that they do:

“The root cause of every problem – no matter how complicated – must be identified in less than 60 minutes”

Imagine how a complex software product must be designed and engineered to meet this goal.

Adjust your rear view mirror and don’t stop in 2013 until every competitor is a distant fixture behind you and your team.

Happy holidays!

Categories: Software Engineering

The root cause of all things complex is simple (or how to explain the state of US economy)

December 22, 2012 Leave a comment

While attending a recent holiday party and discussing the US Presidential elections, my dear friend suddenly asked me,

“You are a CTO, Leon.  You solve very difficult problems every day.   What’s wrong with the US economy?”

I began my career as a software engineer designing and engineering “must never fail” financial settlement systems.  The core components of the system I was responsible for have been written in Assembler, despite the availability of higher level languages.  Why?  To ensure maximum awareness of the problem context and environment.  This particular system even had its own access method to maximize I/O performance.

I learned a lot in my early career.  But what I am most grateful for is an early encounter with the universal truth that the root cause of all things complex is simple.   I learned the value of this universal truth while spending a few days looking for the root cause of a resilient memory leak.

The state of US economy resembles a classic memory leak – and I believe you will agree.   The virtual address space is fairly large (think of it as the ability of US government to raise the debt ceiling and borrow more money).    So ‘we’ allocated – or created – $16.3 trillion worth of debt.

But why can’t we seem to reduce our national debt?  Referring to what every software engineer knows:  in a classic address space model, there are memory release mechanisms.  Translating to our fiscal reality, the US government collects tax revenue and use some of this tax revenue to pay the interest and principal on national debt, ideally reducing the debt to a manageable level.   That’s why this is classic memory leak:  debt grows faster than the payments towards the interest and principal.

But the question is – why?

I believe the answer is actually quite simple and lies in the labor participation rate which is now at the lowest point since 1981 at 63.5%.

To understand the sense of urgency, one does not even need to be an economist.   You are a homeowner in a neighborhood with 100 houses.  All 100 homeowners pay monthly association fees of $10 towards a monthly association management budget of $1000.  Let’s place 50 homeowners in financial distress who cannot pay $10 a month.   The remaining 50 homeowners still have to cover the basic maintenance needs of the association.  Their monthly dues are now $20 (times 50 = $1000).

The state of US economy is largely equivalent to the problems of the above homeowner’s association.  The US economy lost entire industries in 30 years and did not replace departing jobs with anything that carries the same economic benefit.   Today, fewer and fewer Americans are able to participate in the economy and pay taxes.   Which means that taxes for all of us in the US will go up without any additional economic benefits.

So what’s the solution?

When your US Senator or US Congressional Representative promises to create jobs, ask them to explain how their legislative agenda will foster growth first.   Anyone who talks about job creation without first discussing how to generate growth ought to resign from the Congressional seat.   Better yet, please exercise your right to critical thinking while voting.

Arguably, one of the biggest economic growth drivers of US economy has been the decision to build the interstate highway system, or The Dwight D. Eisenhower National System of Interstate and Defense Highways. Find some time to read this article from

I hope US Congress will find the lessons from the past just as applicable when trying to solve today’s problems.