Friday, September 7, 2012

How to Kill a High Performance Team

High performance software development teams are amazing - they get an incredible amount of work done in a relatively short period of time, and that work is largely error free.    Those errors that do surface are corrected quickly, without any finger pointing - in fact, they are often used as an opportunity to improve existing skills and/or learn new ones.   The team is fun to be around, because of both their cheerful, positive attitude as well as their tightly knit team spirit.

Teams like this must be stopped.   They make you and your mediocre team look bad.   Fortunately, if you can take control of the high performance group, you can stop them if you follow these six simple guidelines.

1.  Devalue Their Work
High performance software teams value their skills, and constantly hone them.   Thus anything that attacks and marginalizes their expertise will be effective.   Fortunately, devaluing their work is easy.   Simply emphasize other activities over their primary job of developing high quality software.   This can be done in a number of ways:
  • Establish processes that place value on adding more process.   Do they want to make a change in the software?   Fill out a change request and submit it to the change control board, no matter how small or trivial.   But don't do this for code that has been tested or destined for release - do it for everything.   The team will hate it.
  • Force the team to attend training on things that have no relationship to their job - financial ethics, warehouse safety, and hazmat training are all good examples.   Be sure to weight this heavily in their performance reviews, or at least rank it higher than actual technical work.
  • Focus not on the end result (software), but on the intermediates such as requirement documents, compatibility matrices, and so on.   High performance teams handle these items themselves as a normal part of their job but if you force them to focus on these things - and not the final product -  you will implicitly communicate to them that their core expertise doesn't really matter.
2. Micro Manage for Macro Results
High performance teams instinctively break large tasks into manageable chunks and distribute the work amongst themselves.   This must be stopped.   You must take control over every decision.   This will be difficult at first; you will likely need to publicly reprimand and belittle the natural leaders within the group a few times.  

3. Keep Them In The Dark
One of the characteristics of high performance teams is that they all work together towards the same goal.   Disrupting this is relatively easy - just assign different tasks to different members of the team such that team members are working against each other.   This requires that you accomplish step #2 above, first.   Any talk of "vision", "mission", or other lofty ideas must be crushed.  Constantly changing priorities and strategic requirements will help here as well - so long as you change them well after work has started on the previous list.   This also helps to re-enforce item number one.

4. There is No "You" in "Team" (Unless Things Are Going Well)
This is perhaps the trickiest thing to accomplish without business leadership catching on.   Be especially subtle; use "I" when things are going well but refer to "the team" when things start to fall apart.     Paint a picture for upper management that the team is struggling but that you are there to help lead them to the promised land. 

5. Avoid the Team At All Times
This works especially well in conjunction with item two.    By not making yourself available when a decision needs to be made yet mandating that all decisions go through you, you'll guarantee that the team starts to stumble.   Schedule "private meetings" in another building, at home, or even the golf course.   Ignore cell phone calls from the team.   Don't set a precedent by answering e-mails.  An extra bonus is that some team members, in an effort to make progress, will take the initiative and make a decision themselves, providing you another opportunity for a public lashing.   This is what the military terms a "force multiplier" as it multiplies the demoralizing effect of these techniques.

6. Don't Tell Them You Don't Respect Them: Show Them
You can't come right out and tell team members how worthless they are, but you can easily show them by following this simple routine.   First, schedule one-on-one meetings with them so that you can "better understand their needs".   At the last minute, cancel these meetings.   Eventually, they will try to ask you about it but if you've been paying attention, you won't answer that e-mail or take the call.    This works better if you schedule meetings at awkward times for them, forcing them to change their schedule.  

This is just the start and there are many more possibilities, but if you put these six simple steps into practice, I guarantee you'll be able to kill the morale and productivity of any team.    Once you've mastered these skills, no one will be able to say that you don't know how to make yourself look good (at least for a while).

Obviously tongue-in-cheek, but sadly I've witnessed this first-hand several times in different organizations.   The emphasis placed on culture and teamwork in my current role is a sure cure for this ailment and is one of the things I value most about it.   Have you ever seen a high performance team dismembered?   What happened?

Tuesday, August 21, 2012

Pilots have this. You should, too.

Several weeks ago, I wrote about the importance of context - the "why" behind the "what".   Providing context to those working with you is incredibly important, but what do you do if no one provides context for you?

The ability to collect disparate pieces of information and form a mental picture of what is going around you, and where you fit in, can be just as important as context.   Moreso, in fact, when you have little or no context to operate under.   This mental picture is called situational awareness and can benefit you and your team when a less-than-perfect amount of contextual information is available.

Consider a pilot flying in instrument conditions.   He or she cannot see anything outside, except for a wall of gray combined with some occasional rain on the windscreen.   Inside, an array of dials and gauges along with a communications radio is all that is required for the pilot to understand his exact position in three dimensional space.     While the specifics of how this is done is beyond the scope of this post, the idea is that by paying attention to seemingly minor details and bits of information, you can assemble a detailed picture of where you are, where you are going, and what is going on around you.

Consider another environment, this time one far removed from the cockpit.    A project manager or team lead has every ability to gauge the progress of a project based without boring status meetings and without daily one-on-one discussions with each of the team members.   How, you might ask?    By paying attention to subtle cues and behaviors among the team.    What is the general mood?   Is the team upbeat, challenged but happy in the progress they are making?    Or are people working madly all the time, skipping lunch and working long hours?    Does everyone on the team exude confidence that they are going in the right direction, or are there constant discussions about the most recent change in business or product direction?

In the cockpit, losing situational awareness never, ever helps to make a flight safer.   Similarily, not
paying attention to the situation in and around your team will not help your project succeed.   Like the high time professional pilot,  you must pay attention to what is happening around you.  Doing so will allow you to maintain good situational awareness, and will allow you address small problems before they turn into large ones.   Knowing your current position in the air is important - if you don't know it, then others will likely read about it in the newspaper tomorrow.     Leading a project isn't all that different.

Ever been on a lost project?   What was it like?   What was the outcome?

Friday, August 10, 2012

This Word Describes Great Leaders - Does It Describe You?

Among the several attributes that many great leaders share, there is one which is not at first obvious. It is described by a word which does not immediately bring to mind visions of strength, power, or prestige but it is responsible for the apparent strength, influence, and respect many great leaders possess.

The ability to mentor, or help others around them become better at what they do, is a wonderful result of this characteristic in a leader.    Each of us learns and develops in different ways at different rates; some people learn "fast and wide" while others learn "slow and deep".   The ideal leader knows this, and helps team members develop without exerting undue pressure while still helping each individual grow at their own pace.   Their teams become highly effective, and they gain the strength to develop amazing things in short amounts of time.

The ability to recognize inopportune moments and delay or pause until the right moment presents itself is another embodiment of the characteristic described by this word.    Some would have you believe that in order to be successful, you must act with lightning speed, striking at opportunities as they present themselves.   Great leaders know and live the adage that "Slow is smooth, and smooth is fast" by executing correctly at the right time.     This allows them to influence those around them, providing the right input or wisdom at just the right time.

The ability to listen well to others, and to consider alternatives thoughtfully, embodies the characteristic described by this word.     Listening well involves silencing that inner voice and its associated biases long enough to not only hear but to understand what others are saying.   It allows the leader  to concentrate on what is being said, instead of thinking about what to say next.    To be heard is perhaps one of the most basic needs of any team member, and a leader that listens well earns great respect from all his team members.

This word describes an attitude which becomes increasingly more valuable as it becomes increasingly rare.  It is a word which is easy to say but so very hard to embody at the times when it is needed most, which is why only the best leaders who consistently practice it are able to do it well.   The word?

Patience.

The best teachers, managers, and co-workers have come across in my career demonstrate patience in a consistent manner.     It is easy to do well occasionally, but hard to do routinely.   Does it describe you?

Monday, July 30, 2012

Do You "Wind Your Watch"? You Should...

A grizzled old airline captain named Joe was called into the chief pilot's office one day and told that he needed to go in for a flight review in the airline's newly installed computerized simulator.    This would serve as his six month check ride as well as allow the airline to evaluate the usefulness of the simulator and its instructors, as Joe was one of the most experienced pilots on the line and had an excellent safety record.

At the appointed time, Joe showed up and after a bit of paperwork was escorted to the simulator.   He "flew" the routine procedures first, and then proceeded to practice the emergency procedures.    The simulator instructors caused all manner of problems for Joe - an engine would quit, instruments would stop functioning, the landing gear would not come down, and so on - in order to test Joe's ability to handle emergency situations safely.  

At the end of the session Joe received near perfect marks.   In fact, the only criticism the young instructors had of the veteran pilot was that whenever an emergency occurred, Joe wouldn't spring into action right away - he would instead wind his watch for a moment.   The instructors felt that this was an odd practice, since the emergency at hand was clearly far more critical than almost anything else.   When they mentioned this to Joe, his response was simply, "Son, I've never accidentally killed anyone while winding my watch and considering the situation at hand."
---
In the often hurried pace of today's business world, leaders are presented new information and asked to make decisions or take actions almost immediately.   Few situations, however, are actually so critical as to truly require immediate action.    Taking a moment to consider not just the most obvious option, but additional alternatives as well, is the mark of a true professional.   Indeed, compounding a dire situation with a bad choice because the person in charge felt that doing something - anything - right now only leads to more emergencies.     Such a process will feed on itself, in what could be referred to as a negative feedback loop.

The next time you find yourself in a situation which seems like immediate action is needed, stop for a moment and "wind your watch" while you mentally take a step back and consider your next steps.   You might find the situation not quite so dire, and find that there is an elegant solution just waiting for you to step back and see it.

I've heard it said that it takes a jerk to have a knee-jerk reaction, and I've found that folks who are thoughtful about their actions are much more pleasant to work with in addition to being better leaders.   What do you think?

Tuesday, July 10, 2012

They Can Do The Work, But...

If yours is like most organizations, you try very hard to hire only the best and brightest people.   Indeed, hiring can be one of the more risky things to do, financially, with a bad hire potentially costing several times the position's annual salary - therefore making the hiring process all the more critical.

When interviewing for a technical position, ensuring the candidate has the correct technical skills is obviously important.   I'd argue, however, that it's not the most important consideration when evaluating match between the candidate and the position.   Surprising?   It was to me - at least before I had the opportunity some years ago to build a team and observe firsthand the consequences of a bad hire.

The basic problem is that while technical skills (such as specific programming languages, tools, etc.) can be learned to at least a rudimentary level in a short amount of time, other attributes that make a person a great team member cannot.     These attributes are things like attitude, credibility, responsibility, and so on - things which cannot be simply learned by a quick session on Google.   They are instead behaviors; things which are ingrained within our personalities such that changing them is much harder and takes a great deal more time than learning how to use a new app on your iPhone.    These attributes are also what either build up or tear down the bond between team members, and for any non-trivial project the ability of the team to work together is critical.

I recently had the opportunity to speak with someone who set off warning bells; their attitude and mannerisms indicated to me that they have an incredible opportunity to improve just those types of behaviors.   Bright, driven, and exceedingly arrogant, this individual may eventually go on to accomplish amazing things but I would not care to have him on my team today due to the risk to the team's well being that such a "brilliant jerk" would pose.

Identifying the attributes you value for individuals on your team is key, and ensuring that new team members are a good "fit" is critically important - even more so than specific technical skills.   New skills can be learned quickly; new behaviors can take far longer and be far more costly for your organization to teach.

What non-technical attributes do you value most in your coworkers?     How do you develop those attributes within yourself?

Wednesday, June 27, 2012

If You Want to Learn, You'll Stop Doing This.

This week I had the opportunity to spend some time with one of the more renowned  flight instructors in the upper midwest.   Tom Berge, owner of RV Transition LLC, graciously granted me time on his schedule to get some instruction in an aircraft that is very similar to the one I have been building and hope to fly sometime in the next couple of months.

Tom is very thorough; as he talked about the various aspects of flying a high performance homebuilt like the Van's RV series, I listened intently.    As he spoke, I was able to connect bits and pieces of what he was explaining with my own experiences in other types of aircraft to better understand the material he was presenting.   I was impressed with his knowledge and ability to explain the material.

After the lesson, on the way home, my thoughts drifted to something I had seen some years ago.   A cocky young pilot and his instructor were talking nearby and I thought back to their conversation.   It seemed like every word from the instructor was met with some know-it-all response or perhaps a statement phrased as a question designed to impress the instructor with the student's knowledge.   The instructor let it go, but the student was almost too much.   As I recalled that conversation, I couldn't help but think how odd that someone would pay an instructor to teach them only to try and impress the instructor with their own knowledge.   I wonder how much more quickly the lesson might have gone had the student simply shut up and listened.   And, I wonder, how much time and money the student might have saved by not having to repeat lessons.

I've seen this scene repeated elsewhere by many different types of people, in many types of situations.   And I've seen it enough to know that it is not uncommon.   Try this - next time you are in a position of learning something new, take a moment to observe how you act.  Do you listen intently, or wait to ask the person you are learning from a question which was designed to demonstrate your own vast knowledge?    Do you really want to learn, or is your desire to learn combined with a desire to impress others?

Fortunately, that brash young pilot from years ago learned the errors of his ways, and today is much better at being quiet and soaking up wisdom from those who are willing to offer it.  And, I'm happy to report, that same pilot is well on his way to being able to competently prosecute the flight test program for his Van's RV-6A in the not too distant future, thanks to the tutelage of a wise instructor named Tom.


Tuesday, June 19, 2012

The Essential Interview Question

It's interview season, and we've been interviewing for several positions over the last few weeks.   Although the course of the conversation with the candidate always varies some, there is one question I like to ask at least twice, in two slightly different ways.  


"Tell me about the last time a customer or coworker was mad at you - how did you handle the situation?"

Getting along with your coworkers is at least as important as the job function - even if you do your job perfectly, there is a net productivity loss if no one else in the office can stand to work with you.   As such, you might think that discovering how a candidate might work with others would be a good idea and you'd be right.   Oddly enough, however, many prospective employers don't think to ask questions along these lines or if they do, they are questions which are guaranteed to get "the right answer".
  
Compare the question above with ones which I've heard many times: "How do you handle conflict?", or "How well do you work with others?"    No candidate would answer these questions with "Not very well" (if they did, you'd thank them for their time and send them on their way).   Instead, they answer with what they think you want to hear.    Answers such as, "I would approach the individual directly" or "I would try to learn the best way to work with that individual" are common - and largely theoretical.       When I am interviewing a candidate, a warning flag is the candidates use of the phrase "I would".   Of course I am interested in what the candidate would do, but knowing what they did do is likely to be far more indicative of their behavior.

A candidate who says they haven't had anyone mad at them is a question because it may mean they are either disingenuous (everyone has someone mad at them at one time or another) or that they have no strong opinions.    The former is obviously a problem, while the latter may prove troublesome if the position involves any decision making or leadership responsibilities.  Of course, an answer such as "Why sure - it happens all the time" is deserving of further investigation as well.

The best answer I have heard was a situation in which the individual took responsibility for the situation, then worked to resolve it directly with the individual.    This demonstrated responsibility (taking ownership) and humility (willing to admit they were wrong).    The individual was hired, and has been a strong performer on the team.

The answer to this question can be very enlightening, as we have seen, and there is another individual whom you should pose this question to at least occasionally: yourself.   How do you handle conflict with your coworkers?


Tuesday, June 5, 2012

The Power of Context


If you are like most individuals, you enjoy working on a piece of something larger than the simple task at hand.   We humans are wired to want to contribute to something bigger than ourselves, to something that makes a difference, or to something that adds value and meaning.     Unfortunately, some leaders fail to seize on a powerful concept that builds teamwork, increases job satisfaction, and improves productivity.   That concept is context.

Put simply, context is the why behind the what.     It communicates the larger goal or outcome and gives meaning to specific tasks that make progress toward the desired outcome.   It also empowers coworkers to make decisions on their own, to organically invent approaches, processes, tools, or designs which advance a project without requiring micromanagement.

In perhaps one of the more spectacular demonstrations of context, Lt. General Paul Van Riper led a smaller, less advanced team to victory over the U.S. military in the Millenium Challenge 2002 war games.   Rather than instruct his field commanders about what to do, he simply outlined the larger goals.   Stressing the importance of these tasks along with the ultimate goal (victory), he left the details to his lieutenants to figure out and execute.    This had the surprising effect of a nimble team, one which so overwhelmed the traditional military approach that the rules were changed in the middle of the exercise to favor the existing doctrine and thought patterns.

Antoine de Saint-Exupery, a French writer and poet, once wrote   “If you want to build a ship, don't drum up people together to collect wood and don't assign them tasks and work, but rather teach them to long for the endless immensity of the sea.”       Providing this kind of context to a team will accelerate their work, and will only engender respect for their leader.

The most productive project I have ever been on, and the most fun, started when I was told what the business needed - the context - and that how I got there was up to me.   In turn, watching my teammates innovate and develop pieces of the larger product after sharing with them what we needed to build and why - context - was immensely rewarding. 



Tuesday, May 22, 2012

How to Become an Expert in Three Simple Steps

Everyone needs to have some specific area of expertise.   While broad knowledge is useful, one or two areas in which you are deeply knowledgable are important for career and personal growth reasons.   These areas of expertise become what you are known for professionally, and will have a direct impact on your financial growth and security.

Fortunately, the steps required to become an expert in almost any subject are pretty simple:

1) Learn - really learn -  everything you can about the topic
Anyone can read a book or take a class on a particular topic, but that is only where the learning begins.   What periodicals do you read?   What conferences, seminars, or other gatherings do you attend to learn more from other people?   Which blogs do you follow?     These and other sources of information plant the seeds for new thought patterns around the subject and stretch your sphere of knowledge a little each time.

Be careful not to disregard newcomers to the topic or those who know far less than you.   Even if you know 95% of the available information and they know only 10%, their 10% might include the 5% you don't know.

2) Practice the topic daily in some way shape or form
This isn't practicing in the form of mindless repetition each day, but rather thoughtful, intensive application of your knowledge into something real.   You might work on a computer program, work on your car's engine, or some other productive activity.   This can be either professionally or as an avocation, but the goal is to use your knowledge to do something real and practical.

Another approach would be to teach a course or write a book.   Depending on the topic, your local community college may need someone to teach a night course on your area of interest.    Learning by teaching is a time honored way to increase your knowledge of a topic.

This exercise is important because it demonstrates the difference between theory and practice.    Remember, theory and practice are the same in theory but not in practice.   Learning the difference deepens your expertise.

3) Repeat steps 1 and 2
Learning and doing, if done once or twice, may give you a better understanding of a topic but they will not make you an expert.     Malcom Gladwell, in his book "Outliers", states that mastery of a subject requires about 10,000 hours of practice.      This is, obviously, a considerable amount of time - it would be approximately five years worth of full time professional work.   ( At this point, I'd like to specifically point out that I said it would be simple, not easy).


While many forms of advice are given every day about securing your financial future, consider this:  almost all of them assume that you have some area of deep expertise which serves as the engine to power future success.    If you don't have one yet...why not?

Software engineering is my chosen area of expertise, and I can say that with 20+ years of experience, I am still learning new things each day - literally.   Find something you're interested in and go for it!

Tuesday, May 15, 2012

You May Be Right (and I'm not crazy)

Have you ever been in a discussion or meeting where the goal was to choose between two or three alternatives?    Especially in a setting populated by exceptionally bright and talented individuals, these kinds of meetings can become very ... spirited.    Exceptionally bright and talented individuals are frequently also very passionate and aren't afraid to call other ideas unworkable, impractical, or perhaps even just plain old stupid (As an engineering-type, I'd point out we are seldom known for our people skills).

If you find yourself in one of these types of discussions, you may discover an impasse which seems to be difficult if not impossible to overcome.   Each party will likely have very sound and very specific reasons why their particular approach is far superior to any of the others.    You may believe that your approach is in fact the best one based on the knowledge of the situation you possess.    What to do?  Try saying something like:

"You may be right, but I'd like to know why you think that".

Seriously.


I have found that saying these words, sincerely, does several important things:

o   It affirms that you respect the other individuals and their points of view
When a discussion becomes heated, it becomes easier to see the other people in the group as opponents.     This attitude is contagious; admitting that the other's idea may be better defuses this and helps turn the focus back to the ideas and not the people.

o   It opens communications (and your mind)
The individual receiving the above message will likely be happy to explain why they think the way they do.    Rarely, in a group of competent people, does a dumb idea get put forth and championed by a team member. As a result, asking the above question likely will provide you with some insight or information that you didn't have previously.   The reverse is also true - the other participants will be more open to listening and learning about your perspective.

o   It allows people to be heard in a receptive environment
One of the most frustrating things for members of a team is to not be heard, to be marginalized, or perhaps even be ignored.    By inviting input and commentary in this way, you avoid those dangers and instead facilitate teamwork.    Even if a particular idea is later rejected, the individual and the team will remember and appreciate the fact they had input people actually listened to and considered.

Being able to have a passionate discussion is  the mark of a team staffed with good talent; being able to draw people into the conversation and bring the team together without resentment or bitterness after the decision has been made is the mark of a great leader.  

I wish I had learned this at the start of my career; it would have made some time periods much less stressful.    But perhaps you think this approach is flawed in some way.   You may be right, but I'd like to know why you think that...

Tuesday, May 8, 2012

Employee Engagement

After getting in, the lock bar comes down across your lap and the theme park attendant walks by to inform you of certain doom should you dare to stick your hands up or outside of the roller coaster car.   Then, with much clacking and lurching, the coaster starts forward and you're off!   A gentle turn or two and you are headed towards the long climb that begins the ride.   The coaster glides up hill, slowing almost to a complete stop, when the chain engages and pulls the coaster up the incline.

Think about what might happen if the chain didn't engage: you'd roll backwards a short ways a come to a stop.   That'd be exciting, wouldn't it?     Yet some people would appear to prefer such an outcome in their professional careers - they get to the start of a potentially great ride and then ... fail to engage.   They slide backwards, come to a stop, and sooner or later are removed from the track to make way for someone else.    Although there are likely as many reasons for this as there are people who succumb to them, some of the more common ones I've noticed are as follows:

Fear of Failure
Fear of failure simply means that the individual would rather not try at all than try and not succeed.   While a small amount of fear can be energizing to some individuals, it is paralyzing to others.     What will everyone think?     Will everyone laugh?

The fact is that failure is a reality of life.   Benjamin Franklin is claimed to have said, "I did not fail the test, I simply learned 100 ways to do it wrong."     Failure is the basis of success, provided you learn from those failures.  Don't fear failure, learn from it.

Mental Absenteeism
This can take many forms, but perhaps the most surprising to me is that of the Internet Surf King, or "ISK".   The ISK spends hours on end "researching" all manner of topics, news, and unrelated information.     Coming in at the crack of dawn (well, it would be if the sun rose at 9:30am), taking a short power lunch from 11 until 2-ish, then lingering until just after the boss leaves  for the day seems to be a common theme.

If you've fallen victim to this pattern, or one like it, find a way to change:   avoid whatever it is that takes your focus off your work, change your working hours and habits, or simply find a new job that is more interesting and/or rewarding.   You'll find that time passes much more quickly and that you feel a lot better about your day.

Arrogance
This one is a tough one.   One individual who worked for me told me that his job was beneath him and not very interesting.   While it may not have been interesting, it struck me as pretty arrogant given that he wasn't particularly effective and didn't really stand out among his peers.

The best solution here might simply be to move onto another position - while doing so won't help the individual directly, it will probably remove a burden from the rest of the team and allow the business to find someone who is happy to be there to do the job.

There are lots of articles about how organizations should attempt to engage their employees, and while there is certainly some good information provided therein, it's not entirely up to one's boss or manager to ensure that they are engaged - some of that responsibility must be borne out by the staff as well.     The next time you get on that coaster and get to the start of the long climb, try engaging the challenge to the level of your capability and ignore any temptation to just slide back.   The thrills you'll receive from the subsequent ride will likely make the effort worth it.

I was always afraid of screaming while riding on a roller coaster.    It's not that I didn't think it was appropriate, but rather I couldn't get the picture of me (with my mouth wide open) and an unfortunate winged insect both being in the wrong place at the wrong time out of my mind.

Tuesday, May 1, 2012

The Mouse and the Elephant

Have you ever started a large project and felt immediately overwhelmed by the amount of work to do?   Or perhaps there is something you would like to do but are discouraged by the amount of time required to accomplish your goal.   Whatever the project or goal might be, I've come to believe that the biggest obstacle to ultimately achieving such a goal is looking at the task as a single, sustained effort.   There is another way;  as the old saw goes, "How does a mouse eat an elephant?   One bite at a time.".

As humans, we have a finite attention span.   While it varies from person to person, no individual can concentrate on a  large, complex topic indefinitely - we are wired to need change, to need a break, to feel as though we are making progress.    This last piece, especially, is important - it helps to maintain momentum and prevent the loss of motivation. 

Instead of looking at such an undertaking as one big task, think of it as many small ones.   This approach allows one to enjoy many small victories along the way, and provides a relatively constant feeling of accomplishment.      I have used this approach many times in both my personal and professional endeavors - it's not developing a large, complex program but instead building a number of small software components that work together.   It's not earning a college degree or even finishing a number of classes, it's completing the assignments and passing the tests.   It's not building an airplane but instead building many small pieces of an airplane and putting them together.

Following this approach, there is a special bonus - you will be able to look back and see how all those minor successes and victories add up to something big, and it won't have cost any more time than if you had done something else.   Ken Scott, the irrepressible sales representative for Van's Aircraft, tells the story of a man who visited their display at Oshkosh each year for a number of years, each time asking how long it would take to build one of their planes and each time being disappointed at the length of such a project.   After a number of years, Mr. Scott finally pointed out (in his usual blunt manner), that if the man had simply started building when he first asked instead of belly aching about it for all those years, he would have been done by now.

The next time you feel overwhelmed by the magnitude of a project or task put in front of you, take a moment to consider how you could break up the task into more manageable pieces.   

I haven't eaten a whole elephant recently, but the above idea continues to do engage me in my job and my hobbies.   What do you think?


Tuesday, April 24, 2012

Unusual Attitudes

An important part of learning to fly is learning to deal with "unusual attitudes".   You're flying along on a nice day, and look down at the map for just a moment, and when you look up again you find the horizon is in a funny place.   Or perhaps there is no horizon, only blue sky.   Or perhaps there is no sky at all - maybe the ground is filling the windscreen.   No matter what the cause, as the pilot-in-command, you must deal with the situation.

I remember a flight lesson from long ago where, taking off from an icy runway, the plane started to drift towards the snow bank along the side of the runway.   The flight instructor asked what I was doing, and I replied the plane was drifting over because of the ice.   He corrected me by saying that it was I who was allowing the plane to drift.  This was an epiphany not just as it related to taking off that day, but also as it related to my career and my personal life.

Too often, we find ourselves in professional situations which can seem overwhelming - dealing with an overbearing co-worker, trying to meet a tight deadline while dealing with unexpected technical challenges, and so on.   A persistent temptation is to simply go through the normal motions and hope things take care of themselves; we've all been there at some point in our career.

No matter what the situation, keep applying corrective inputs.   They may not have any perceptible immediate impact, but over time they improve the situation.   Will it guarantee a successful outcome?  No, of course not - but it will guarantee that the situation will not be as bad as it would have been had no corrective action been taken.

"Stay with it" is a common admonishment for student pilots.   How do you encourage yourself and others to "stay with it" and see a challenge through to completion?

Tuesday, April 17, 2012

Your Favorite Band Sucks

My friend Bob has a long standing policy of no politics allowed in his shop.   He has this policy because such discussions almost inevitably degrade into a scene of two one-way conversations occurring simultaneously, with each participant left feeling that the other is a close-minded idiot who simply can't be bothered with reason.  

I'm not sure I completely agree (Bob and I have had many good discussions, even though we are on polar opposites of the political wheel) but I do understand.    Numerous topics like politics, religion, music, and more tend to bring out the emotional side of our personalities, especially when we feel passionate about the topic.   There can be plenty of upsides to an honest and frank exchange of ideas, and such discussions can be very rewarding in the right context and appropriate place.    One place where such discussions are rarely, if ever, appropriate however, is the office.

Consider a manager or leader discussing his politics with his subordinates - those who don't agree with his political views will tend to be silent and avoid the potential confrontation that has no benefit for them.   Beyond the immediate discussion, such an occasion may have longer term ramifications which are detrimental to the team if such topics are frequently brought up.   

Another example might be the coworker who evangelizes his faith throughout the office during the workday.    If you happen to have the same belief system, you might not mind - if you have a different belief, on the other hand, you probably do.   Either way, you might be inclined to wonder why he is not doing his job.   This one is a two-fer - not only can it be a divisive topic, but it can also build resentment towards the individual who is preaching instead of doing his work.   (Full disclosure: if you want to know more about Jesus, ask me about it over lunch or after work).

A former coworker used to wear a shirt with "Your Favorite Band Sucks" emblazoned on the front.   I've always thought such was a great synopsis for discussions about divisive topics - while they might be fine outside the office, they do little to promote teamwork, trust, or inspire our coworkers to do great things.



Tuesday, April 10, 2012

The Value of Being Wrong

Success.  Winning.  Being Right.   These are things that are highly valued, sought after, and are generally pursued by most people, and rightly so.   However, I think that too often we overlook the inherent value of being wrong once in a while, and that we do so to our detriment.   Just as there is value in success, there is also value in failure - you just need to know where to look.

Knowledge:   The very first commercial software package I conjured up entirely on my own was called "Back In a Flash" and was, I thought at the time, very well done.   Only it didn't work very well - while it generally did a good job backing data up, it was less successful when it came time to restore said data.   It also didn't work with large systems, and was particularly slow.   It was a failure.  The next package I wrote was called "Back Again/2" and incorporated many lessons I had learned from the first time around.   It became the cornerstone of a company a friend and I founded in 1994 and ran successfully until I sold in 2000.      Without the initial failure and the lessons it taught me, I could not have been successful later on.

Practice:   One of the smallest parts on my experimental aircraft is on the tail and is known as the trim tab.   The trim tab is a thing of legend among builders of this particular type of airplane; the angles required for the various bends vex even the most dedicated builder.   I was no exception; I had to build it three times before I got it right.   However, I gained valuable experience in forming aluminum sheet metal, drilling out rivets, and more.      

Perspective:  In the midst of a seemingly important task, project, or other endeavor small problems may seem huge.   Any entrepreneur can attest to this - many problems can seem like catastrophes.     During my time at my first company,   there were many such "catastrophes" which turned out to be nothing more than a minor irritant.   In the midst of the issue, however,  it was next to impossible to recognize that.   The stress and heartburn that was repeatedly experienced (and meted out, too) was not necessary and at the time probably did more harm than good.     Without those problems, however, I would not have gained the perspective that some problems are more important than others, and other problems may in fact not be problems at all.

Humility:  This is perhaps the hardest thing to take away from failure, but it can also be among the most valuable.   Humility isn't about being meek or timid; rather, it is knowing ones own limitations.     I had the opportunity to join an internet startup a while back as a side gig.   I thought it would be exciting, and it was, but I learned the hard way that it is nigh impossible to juggle a full time job, a family, a homebuilt airplane project, and a startup commitment while remaining sane.   I didn't succeed in that endeavor, and I learned where my limits are.   There are folks who could do all that without breaking a sweat, and my hat is off to them - I cannot.

Although success is the ultimate goal, don't discard as useless the failures you encounter along the way.   They may prove to be nearly as valuable as your successes, and perhaps more so - if you're not making mistakes, you're probably not making anything.

One of my worst failures has been failing to learn everything that I could from failed attempts at various things.   How about you?

Tuesday, April 3, 2012

Expertise vs. Authority

In an otherwise entirely forgettable movie, "Battle: Los Angeles" features a subplot which juxtaposes a grizzled Marine sergeant and a green Lieutenant.   Not exactly original stuff, but rather a recurring element across many genres of films and theatre:  expertise vs. authority.   The same plot plays out in the business world as well, pitting subject matter experts against business managers.   Most of the time, the plot isn't nearly as interesting as those conjured up by Hollywood.   Every so often, however, an authority figure believes he or she is also an expert, which can lead to problems if not dealt with quickly and carefully.

Most often, this issue arises when a subject matter expert is promoted or moved into a management position.  Although the titular change occurs almost immediately, learned behaviors die hard and as a result the newly minted manager continues to try to be the expert.   While it may be possible to continue such a "dual citizenship" role for a short period of time, one of two things will eventually happen :
  • The manager spends too much time being technical, resulting in poor management and/or leadership
  • The manager spends too much time being managerial, resulting in a decaying technical expertise that becomes a drain on the larger group of experts and a poor reflection of his leadership skills.
The key is that the individual, as well as his charges, need to recognize the changing roles and work to accommodate the changing positions.    An expert that moves into management makes room for younger experts to grow and hone their skills, and a manager who recognizes and demonstrates that it's all about the team's success and not his own will have incredibly devoted followers.  

One of my favorite bloggers, Jeff Haden, writes :
"Whatever we are today is largely due to the words and actions of other people. Most of those words or actions were, at the time, small and seemingly inconsequential."
A newly minted manager (or an old salty one, for that matter) operating in this mindset has opportunities to positively influence his team  each and every day.   Looking back, I can think of several managers who had small comments, observations, and insights which at the time seemed small and perhaps even trivial but have had a large impact on me.    The insights they shared with me helped to clarify several aspects of my career and helped me to develop a focus on what it was I wanted to do (which, ultimately, isn't to move into traditional management by the way - I much prefer technical leadership).   I'm not sure a manager who proclaims himself to be the foremost expert would have the same impact.

Understanding the different roles that expertise and authority play within a team, either business or military, serves to grow both the authority figure as well as the technical experts.   Failure to do so generally leads to, well, failure.  

What role do you see yourself in today?   What about tomorrow?








Tuesday, March 27, 2012

The Real Deal

An opportunity to see management in action isn't uncommon at many (dare I say most?) organizations.   Reams have been written about various practices and methodologies for managing a project to completion; indeed, with the increasing number of people adding "PMP" after their name, one might get the idea that the project management profession is on par with the medical or PhD communities in terms of stature and status.     In contrast, seeing someone demonstrate real leadership is uncommon enough to warrant stopping for a moment and marveling at the effect it has on those around them.   This is probably the best way to identify real leaders, for real leadership rarely decorates itself with titles, prefixes, or suffixes.

I recently had the opportunity to observe one such example of leadership along with both the immediate and delayed effects.   A co-worker who is leading the design of an internal system was asked to summarize the progress for a larger group which included the organization's leadership team.   This particular individual is working with several other people to realize the system and has been a key driver behind the design.     While this might have been the perfect opportunity to describe his efforts on the project, he chose not to do so - most people over five years old aren't foolish enough to stand up and proclaim "I made this" to a larger group of people who know better.   He could have spoken blandly about the facts of where the project was at, problems they had encountered, as well as the next steps they would take.   In fact, he did describe their progress and challenges - but he went further.    One of the other people working on the same system happened to be in the room, and he took the opportunity to praise her work on the project in front of everyone.   It wasn't just a generic "she did a good job on this" comment - it was specific, concise, and sincere.

The immediate effect was that she smiled broadly and then quickly tried, unsuccessfully, to return to a straight face.   I'm not sure how many people in the room noticed it, and the longer term effect was probably even less noticeable to the rest of the organization.   To someone who happens to work in close spatial proximity to the team, however, the effect has been wonderful to watch.   This team works to support the goal and each other, and exudes a positive, "can-do" attitude that is infectious.     Such behavior inspires others and is something that is not widely taught or easily learned.

It was a small but impressive display of a specific quality of leadership; so much so that I couldn't help but tell the individual how neat it was that he'd compliment and encourage his teammate like that so publicly.   His response was essentially that praise is what gets passed onto his team; criticism is what he reserves for himself.      His response was not an example of management-by-PMP or leadership-by-numbers; it was the real deal.  

It was Leadership.

Have you had the opportunity to observe leadership in action?   What did it look like?

Tuesday, March 20, 2012

The Burninator

By now, you've probably heard about Greg Smith and his rather pointed op-ed piece in the New York Times. A well written, forthright assessment of Goldman Sachs by Smith doesn't leave the reader with the impression that he is considering the possibility of working for them in the near future - the first paragraph clearly sets the tone for the rest of the article.   Images of Trogdor kept floating through my mind as I read it.   While he may have excellent reasons for leaving the company that everyone loves to hate, I'm not sure that such a dramatic departure would work well as a template for everyone.

In the days leading up to my departure from Trane, I was surprised by how many of my coworkers wanted to know if I was going to "burn the bridge" by telling management exactly what I thought of them and their organization.    In fact, I was determined to share my perceptions and opinions during the forthcoming exit interview.     While I had a great discussion with the engineering VP surrounding the reasons for my departure, I wouldn't characterize it as bridge burning.   Rather, I felt I owed him something of an explanation and therefore attempted to be as factual and data-driven as possible - even going so far as sharing the weighted Pugh concept selection spreadsheet I had developed.    I appreciated his time and thought it was a good conversation; I think (and hope) he'd say the same.

There may be times, however, where the bridge is already burning and there isn't anything you can (or should) do to stop it.   One former employer was rather heavy handed, and failed to honor a previous agreement.   If the bridge was smoldering when I left his employ, it was engulfed in flames when he received a letter from my lawyer.   Such cases are the exception and not the rule, however, and such action should only be taken after seeking council from others and getting impartial advice from trusted associates.    I believe that had I been vengeful during that time instead of trying to remain polite and impartial, the matter would not have been settled as quickly as it was.

Aside from such exceptional circumstances,  any short-lived emotional satisfaction of telling the boss to go to you-know-where may have consequences in the future; there is little to be gained from burning bridges in most cases :
  • Not tossing the match honors the team(s) you worked with.   If they are worthy of your respect and loyalty, why not take advantage of the opportunity to provide constructive feedback to leadership to better their environment?  
  • The emotional satisfaction you might gain from burning the bridge is temporary, but the feelings it will create in others are indefinite.   It may come back to haunt you, especially in an always-connected, social media world.
  • You may not have the whole picture.   Especially in larger organizations, things that happen may not be under the control of your first or even second level manager.   They may be just as frustrated as you - perhaps even more so - and unleashing your wrath on them only increases their burden.
Before lighting that fuse, look around.   Listen to others' perspectives.    Carefully consider the possible outcomes.   If, after doing all that, you think you still need to put flame to fuse - go ahead and write an op-ed piece in a major newspaper - it will give us bloggers something to talk about.

Ever had hair signed off your arms while lighting the match?   What happened?

Tuesday, March 13, 2012

Use It or Lose It

I thought about this recently when a friend invited me to go target shooting.   Several years ago,  I went to the range often and achieved (and least in my own mind) some level of competance in the shooting sports.   I was always at the top of the class in terms of shooting skills; the last class I took as part of a legal requirement saw my score recorded at twice that of the next student (250 points possible; he shot a 125).  

The hour on the range on Saturday reminded me that those days are long gone and won't be coming back without a bit of effort on my part.   The trip reminded me that skills can be fleeting; that an art not practiced is an art soon lost.   I shot no better, accuracy-wise, than the majority of folks there that day.   What happened?   Obviously, I hadn't used the skill and so lost it.

You have almost certainly experienced this phenomenon as well.   Quick, without looking it up, what it is the formula for finding the length of one side of a triangle if you know the opposite angle and lengths of the other two sides?    Almost everyone has had trigonometry at some point in their academic career but only a few of us remember it because most of us don't have the opportunity or need to use it on a day-to-day basis.   A skill not used is a skill soon lost.  This same pattern exists for many different kinds of skill sets and is a reason why those in roles that affect safety (pilots, police officers, paramedics, and more) are subject to rules regarding how often they must exercise their skills and training.   There are many other non-safety areas where such is important - guitar players practice riffs, for example, and military units do drills appropriate to their function.  

As a software developer, I constantly write software not only for my job, but also for the express purpose of staying current with the techniques and technologies associated with the task.     The exercise of refining a problem into its essential logical elements, translating those elements into a design to solve the problem, then translating that design into a specific technology (web page, mobile application, etc.) hones those skills far more than does reading or other study method (though those are important too).      Would you want to get on a plane whose pilot hasn't flown at all in the last year but has read lots of graphic novels about flying adventures?   I would not, so then why would I expect my employer, whose business may very well depend on the skill and accuracy of its software, ever considering doing something similar by hiring someone who has "read a lot about computers"?

Practicing your profession with dedication and intent sharpens your mind and trains your thoughts so that you can perform at your best when it counts.    Practice is also the mark of a professional - as the saying goes, "An amateur practices until he gets it right; a professional practices until he can't get it wrong.".     Too often, I see would-be professionals masquerading as amateurs simply because they haven't practiced their trade to the point of being able to fully exercise their potential.    Amateur, indeed.

As  Phillip Su put it,   "Athletes do drills.  Musicians hone difficult passages.  What do you do?"

Tuesday, March 6, 2012

Why We Fight

In the ninth episode of the epic 2001 miniseries "Band of Brothers", the soldiers of Easy company reveal their weariness and bitterness towards their time in the United States army.   Each man had been away from home for a long time, in some cases years, and endured terrible conditions and a brutal enemy in the fight for freedom.   Through it all, though questioning why they were fighting, it becomes clear that their loyalty to each other in the face of adversity was a bond stronger than most people would ever know.  

It is well known and accepted that shared adversity improves team cohesion and builds bonds between team members in a way that few other activities do.    This phenomena manifests itself not just for soldiers on a battlefield, but also for athletic teams, police and fire departments, and even working professionals.    A common challenge, whether in the form of a poor manager, unreasonable schedules, or difficult working environments can serve as the impetus for fostering strong friendships and building team cohesion.  

A friend (whom I could also refer to as a former co-worker, but I prefer 'friend') has told me several times that people he worked with were a major part of the satisfaction he took away from his job.   In my own experience, I tend to agree.   There have been a number of people at each of my former employers whom I look up to and respect.    I can't help but wonder if there is a way to build these kinds of relationships without having to endure the negative waves that are by definition part of the whole shared adversity experience.

My current employer believes that it can be done - they define a stunning workplace as stunning colleagues.    At this early juncture, I tend to agree - I'm amazed by the talent around me and I'm challenged just trying to keep up.   What is interesting to me is that even though there is a very steep learning curve in learning the business domain and the operational tempo is much higher than all but a few of my previous employers, I'm encouraged and enthusiastic about each day.   Learning from my new coworkers about different things and facing positive challenges such as meeting customer expectations and delivering on a desire for the best possible end user experience can have the same benefits as a shared adversity situation, only without the negativity and pessimism.

What kind of challenges do you face?   Do you have a team that can support you and that you can support?



Tuesday, February 28, 2012

Product Religion

Evangelists
Fanboys.   Zealots.  Fanatics.   These are words that have been used to describe groups of people who have a fervent belief or faith not in their God or moral belief system (well, ok, maybe sometimes) but rather in a particular technology or product.   Guy Kawasaki even brought it to a full-on professional title when he was "Chief Evangelist" at Apple - a title with all kinds of mixed marketing, emotional, and religious connotations.

Confession Time
Here is the point in the post where I make my confession:  I was a fanboy at one time.   Back in the early/mid '90s, IBM had an awesome piece of software called simply OS/2.   At the time, it was significantly more advanced than Windows and had the backing of the largest computer corporation in the world.   It seemed destined for legendary status and had allowed desktop PCs to do things that were previously either not possible or terribly expensive.   I even built a business on it with a friend and did some evangelism myself as part of a group known as "Team OS/2".    In the end, IBM changed directions OS/2 - and everyone who had depended on it - were left high and dry.    Although it was a great time in my life, I've wondered several times if I made the decisions within the right frame of mind.   If I had it to do all over again, would I make the same choices?    Maybe, maybe not.   I would, however, look at things from a slightly different perspective.

It's Not a Two Way Street
The problem with product religion is that the organization producing the product/technology/etc. is far less loyal to you than you are to it.     They may change their plans in a such a way as to negatively impact their loyal followers without any concern or regard for doing so.    It's been done many times over the years - TV producers abandoning shows such as Firefly, Jericho, and others with a small but vocal following,  the Houston Oilers abandoning Texas for Tennessee, and so on.

There is nothing wrong with being excited about a particular sports team, technology, or product.    The danger comes from making important decisions based on emotional rather than intellectual or logical reasons.   Although decisions can and perhaps should have an element of intuition or "gut feel", they must be backed by data and sound reasoning.

What product/technology/sports team are you fanatical about?   Why?  What would you do if the product was discontinued, the technology obsoleted, or the sports team was relocated tomorrow?



Friday, February 24, 2012

Time to Step Off the Trane

Moving On
All voyages have a beginning and an end, and for me today was the end of one such journey.    I first started with Trane in August of 2000.   Since then, I've been involved with a number of product development efforts  and eventually designed the basic software architecture used in most of the Tracer Evo embedded controls in addition to doing some R&D work on upcoming products and applied technologies.    Today, however, I bid farewell to my mentor/manager and coworkers as I prepare to move  on to a new and exciting opportunity at a startup in Edina called Jingit.

Why?
The obvious question is, "Why did you choose to leave?"   Part of the motivation for moving on was stagnation - there is only so much software technology involved with running a commercial building's HVAC system (but a lot more than you might expect).    When the opportunity came to move into a position at a much smaller, but more agile organization that is making use of mobile, social media, and other current technology trends, I decided that this would be a good move.      


While I took a fairly significant "haircut" in salary, I'm ok with that.    For me, happiness doesn't come from the amount on the paycheck.   Sure, it matters to a certain point, but day-in and day-out I am more engaged and motivated by challenges and the opportunity to help "put a dent in the universe".     And while some folks point out that a startup is less stable than a large company, I can't say a large company doesn't have it's share of layoffs, outsourcing, facility closings, and so on.   In the end, it was Jingit's value statement and leadership, in addition to the concept, that I found particularly engaging.  The basic idea is that a team of highly capable people combined with a fairly small set of rules and processes can produce excellent work at a lower cost more quickly than is typically done at a larger organization.    This will be an exciting change and a challenge at the same time.    It's exciting because given the team of people I'll be working with, I firmly believe that what took months to accomplish previously can be accomplished in weeks.   It's a challenge because what would have taken months previously must be done in a much shorter time.   That's the excitement and challenge of working at a startup.   I think Jingit has some excellent folks and a great vision accompanied by a realistic plan to get there, and I don't think I've been this excited about starting a new position since ... well ... ever.    Check it out at www.jingit.com.  

Looking Back
There's a certain amount of melancholy that goes along with this move - some of the brightest people I've had the opportunity to work with along with the best manager I have ever had have been at Trane.    I really value the time I spent at Trane and am grateful for the things they taught / re-taught me:
  • Leaders innovate change.   Managers copy success.    The roles are not interchangeable, and finding the right mix is key.
  • Sometimes, it's more valuable to help a team fail faster than to try and convince them about how to do something differently.  This allows everyone involved to internalize "the wrong way" of doing things and therefore builds the notion of "we won't make that mistake again" in the group's collective knowledge base.
  • Working on "the project from hell" and succeeding really polishes a development team - it's the whole "shared adversity" thing.   I know of no team-building substitute which is as effective. 
  • You can't be a prophet in your own village.     Know when to seek others' help on getting a particular message across.
  • Avoid those who believe process solves all problems.    As Phillip Su wrote, "Don't fear process.  Fear bad people dictating process.  Fear process trying to make up for bad people". 
  • "Visibility" is often identified as the thing needed for advancement.    I don't agree - I think visibility is a byproduct of innovative and excellent work.    If you produce innovative and excellent work, you will naturally advance within an organization.
  • Forced collaboration is a harbinger of doom, but organic collaboration is simply delightful.   The capabilities of a team whose members collaborate organically aren't added together, they are multiplied.
  • Analysis paralysis is death - bias must be towards action.   At the end of the day, the team must ship a product.
  • Don't sweat the mistakes, learn from them.   If you aren't making mistakes, you probably aren't making anything.
  • A company can espouse ethics, integrity, quality, etc. all they want, but who is placed into leadership positions and how projects are run will reflect the actual value system of an organization.
  • Nobody is good at everything, but everyone is good at something.    Matching someone's capability to a need is a win for everyone and brings great satisfaction to all involved.
  • The best technical ideas often come not from a leadership-directed investigation, but from someone who is engaged and asks, "What if...".    The best managers are those who allow you ask the "What if..." questions and then constructively challenge you on your answers.
I'm really excited about what the next page of my career might bring and the things I will learn from my new coworkers!    What have you learned from your coworkers recently?


Tuesday, February 21, 2012

The Curse of Knowledge

Try This
Try this with a friend - using only your fingers, tap out the rhythm to five or six well known tunes - The Star Spangled Banner, Mary Had a Little Lamb, Jingle Bells, etc.     Have your friend write down the names of the tunes without giving them any hints or suggestions.    Once they have done that, write down your estimate of how many of the songs they got correct.   Compare notes.

The Problem
I recently finished reading "Made to Stick", an excellent book by Chip and Dan Heath on why some ideas seem to find traction while other ideas disappear.   The book references a Stanford study performed by Elizabeth Newton in 1990 which used a similar scenario and found a significant difference between the number of times the "tapper" thought the audience identified the song and the number of times the song actually was identified correctly.   Chip Heath refers to this as "The Curse of Knowledge".   Essentially, the more you know about a topic, the more difficult it is to communicate meaningfully about that topic to those less informed.    The knowledge you have seems so obvious that the audience is assumed to have it as well.     The audience, for their part, doesn't want to seem ignorant or naive and so rarely ask clarifying questions.

The Curse in Action
I have observed this phenomena a number of times in different situations: discussions at work between software developers and non-technical staff, car buffs describing their hot rod, and even Sunday morning sermons.   I've seen others do it, and I've participated myself in both presenter and audience roles.   In each case, the expert (the one talking) referenced concepts or things not familiar to the audience and thus presented an obstacle to knowledge transfer.    If I were to tell you that I had been studying the Gospels, you might not know what I was referencing if you were not brought up in a Christian home or had that faith as a component of your life.    To someone who had that life experience, however, they would immediately know that I had been studying the books of Matthew, Mark, Luke, and John.   In this example, "the Gospels" can be considered to be technical jargon - something that is already known to someone who possesses a level of knowledge about the topic but unfamiliar to those who do not.

The Solution
Like most problems, this is easily dealt with once identified and understood.   My approach to solving this problem is to avoid using technical terms, and using analogies  to relate the topic or idea to something else in the listener's realm of knowledge.    I find that although it takes slightly more time to explain something using this approach, the other person is able to understand the idea more readily.

Some would argue that I have thus not been contaminated with knowledge.   How do you share knowledge with others?

Tuesday, February 14, 2012

Curiosity

Curious...
A couple of years ago, during my annual performance review with my manager, we were discussing some of the different things I liked and disliked about the working environment. One of things I noted was that I was perplexed as to why a segment of the engineering staff always wanted to be sent to training to learn new technologies while the other staff did NOT want to be sent to training. Both groups wanted to learn the technology in question (Javascript) but some felt that it was better to go to a formal class while others wanted to learn on their own.


Wash, Rinse, Repeat
The thing that stuck out in my mind was not the differences in learning styles (both are valid) but rather that the majority of folks who wanted to be sent to the class seemed to be missing a natural curiosity about the topic. Curiosity is something that I value highly in others around me; it is what drives them to ask questions and thus drives me to ask other questions. The answers often raise other questions, which leads into a neat cycle of learning. Curiosity leads to questions, questions lead to answers, answers lead to knowledge, and knowledge leads to curiosity.

An Example
Last year, my curiosity led me to an interesting place. Normally content in the technology / software / hardware areas, I stumbled across a reference to an article in the Harvard Business Review. As I read the article (it happened to be about a specific approach to innovation), I became interested in learning more about related topics such as R&D strategies, budgeting and scheduling when the task is not clearly defined, and more. The cycle of curiosity had taken me in an entirely new direction, and I have benefited from the knowledge gained in both my personal and professional lives.

Nurture It
Although I think I was a naturally curious person previously, that experience demonstrated to me the importance of curiosity. I think it is important to find the answer to some question each day. Many people make a point of walking or running on a regular basis to keep their body in shape. Learning is exercise for the mind, and as such I don't think it is important if the knowledge gained from the answer is immediately useful or not - the benefit is the mental exercise. It's almost a bonus that in doing this, you know more than you did previously. Even better, there is virtually no downside - no one ever threw their back out by reading a book (except my friend Bill, but I digress...).

So what have you learned recently?

Monday, February 6, 2012

Trigonometry for Web Developers, Part Three

Recap of Part Two
In part two of this series, we learned about the use of the sine and cosine functions and how they can be used to transform a set of polar coordinates (angle and distance) into cartesian (x,y) coordinates.   We  then used them along with an HTML canvas object and the associated translate() and rotate() methods to draw tick marks and labels on our canvas object.    In this final installment, we'll add a needle to our meter and learn a bit about how to efficiently animate it to display rapidly changing values.

Drawing the Needle
Our analog meter example wouldn't be complete without a needle to indicate the current value.    Just like on a real meter, the needle on our example pivots on one end around a point centered along the lower edge of the canvas while the other end points at the value to be displayed.    Conceptually, this is just like drawing another tick line as we did in the previous example: we will compute the angle and then use it, along with a predetermined length, to find the polar coordinates for one end of the line.   We will then draw the line using those coordinates along with the center bottom of the canvas.

The Javascript code required to draw the needle is straightforward.
// Determine the angle of the needle
needleAngle = startAngle + a_value * ((endAngle - startAngle) / 10.0);

// Draw the needle
ctx.clearRect(0, 0, cvs.width, cvs.height);
ctx.beginPath();
ctx.moveTo( centerX, bottomY );
ctx.lineTo( centerX + Math.cos(needleAngle) * (radius * 0.80), 
            bottomY + Math.sin(needleAngle) * (radius * 0.80));
ctx.stroke();
The angle of the needle is first determined by finding the polar distance between the starting and ending angles.   That distance is then divided by ten (the range of our scale), then multiplied by the value.    This result would be all that was needed if the zero value of the needle was aligned with 0 degrees on the graphics context, but in order to match it to the meter's face, the starting angle must be added.
Similar to drawing the tick marks, the drawing cursor is moved to one end of the needle's position and line is then drawn from there to a coordinate determined through the use of sine and cosine functions.

Adding a Layer
While it is certainly possible to draw the needle on the same HTML canvas as the tick marks, labels, etc. it is not very efficient to do so.   Consider that the needle may need to move frequently, thus needing to be redrawn, but the face of the meter is constant.   It would be very inefficient to re-draw the entire meter every time the value to be displayed changes, so we'll use two canvas objects: one for the labels and other items which do not change, and another for the needle.   We will then place them "on top" of each other, with the canvas for the needle in front.   This allows the animation to be much more efficient:  we can draw the face of the meter only once, and draw only the needle when the value is changed. 
<div style="width:500px; height:250px;">
  <canvas id="meter" width="500" height="250" 
          style="position:absolute; left:0; top:0; z-index:0"> 
  </canvas>
  <canvas id="needle" width="500" height="250" 
          style="position:absolute; left:0; top:0; z-index:1"> 
  </canvas>
</div>
The HTML required to set up the layering is shown above.     Notice that each canvas object is given an absolute position within it's containing DIV object.   This is what causes the canvases to appear to be "stacked".   Also, note the z-index value in the style attribute; this is what determines which canvas is "in front".    HTML objects with increasing z-order values will appear "closer" to the user than those with smaller values.  

The full HTML source which demonstrates drawing the needle into a separate canvas can be found here (FF, Chrome, and IE9).


Going Further
As you have seen, combining trigonometry, the HTML canvas object, and some Javascript can yield some neat results.   While it is beyond the scope of this series of articles, the HTML canvas object has some powerful drawing features.   Using the trigonometry concepts presented so far along with not-a-lot-more canvas object methods, you can produce impressive results with relatively little effort - click on the clock for the full-size, animated version (FF, Chrome, and IE9 only) :

This example uses the same techniques described previously, and adds some visual enhancements through the use of gradient fills, shadowing, and line style features of the HTML canvas object.    Like our sample meter, two separate layers are used: one for the clock face, numbers, etc. and a second canvas that only contains the clock hands.     No images were used for this example, so even without minification or other optimization techniques, the file size comes in at around 8KiB which provides for excellent performance even on slow links.

Wrapping It All Up
There is much more that could be done with this relatively simple example, but we have now covered the basics needed to handle angular data and use trigonometry to transform it to the x,y coordinate system used by the HTML canvas object.    If nothing else, remember this :
  • Math functions think in radians.   Convert degrees to radians by multiplying by π/180.0 and convert radians to degrees by dividing by π/180.0.   
  • cosine(angle) returns an X-coordinate, normalized to values between -1.0 and +1.0.   Multiply this value by the radius and add/subtract as needed to move the center of the circle away from X-coordinate 0.
  • sine(angle) returns the Y-coordinate, normalized to values between -1.0 and +1.0.   Multiply this value by the radius and add/subtract as needed to move the center of the circle away from Y-coordinate 0.
A little trigonometry added to an HTML canvas is an easy way to build an experience for your site that is fresh and different from the majority of rectangular, boxy sites which exist today.     What can you build with a little trig?