8 reasons why you shouldn’t rely on source lines of code as a software metric

The estimate of the value of production of software based on the number of lines of code (LOC or KLOC or SLOC) is as popular as it is controversial. The main criticism is that there are too many factors influencing the final measurement value. Robert E. Park (1992, page 140), software metrics specialist & staunch defender of the method, responded to critics with the following:

“When we hear criticism of SLOC as a software measure, we are reminded of a perhaps apocryphal story about a ditch digger who, when asked one day how he was doing, replied, “Dug seventeen feet of ditch today.” He didn’t bother to say how wide or how deep, how rocky or impenetrable the soil, how obstructed it was with roots, or even how limited he was by the tools he was using. Yet his answer conveyed information to his questioner. It conveyed even more information, we suspect, to his boss, for it gave him a firm measure to use as a basis for estimating time and cost and time to completion.”

Originally, this technique could probably be used in the conditions mentioned by the Park. Later models such as COCOMO (Boehm 1981) also allowed developers take into account a number of parameters whose variability was probably reasonable at the time. But since then, the number of factors affecting the number of lines of code has become so important that it is very unwise to take this action seriously both in the evaluation of the software and the productivity of the design team.  I will try to illustrate the problem using eight arguments.

1. Different languages and different frameworks

Today hundreds of different languages exist (Wikipedia 2013).  For each of these languages there are several frameworks.  For the same functionality, there may be a very different number of lines of code produced depending on which technology is chosen.  In addition, modern architectures use different technologies, which further complicates calculations. Correction factors exist but they hardly seem defensible given the wide variety of types of applications that are being developed today.

2. Experience and competence of the developers

We must also take into account the experience of the developers involved as this may affect the calculation in many ways. A very competent developer often writes fewer lines of code than other less experienced developers because they will use design methods created for the sole purpose of reducing the number of lines and increasing readability and maintainability. In addition, they are more competent with the functionalities offered by tools (technology stack). Indeed, through ignorance of these, many programmers rewrite existing code, greatly increasing the number of lines of code.  In this regard, many experts in the area do not hesitate to speak of “lines of code spent” as opposed to “lines of code produced” (Dijkstra 1983).

3. The practice of refactoring

The fact that the same piece of code can change over time with the refactoring (reworking of code) can skew the results. This practice reworks the source code without adding functionality (Wikipedia 2013) and it is becoming more common because it can increase code quality and reduce technical debt. This can cause unexpected situations: if many developers practice this technique while the lines of code are being measured, the result could give the appearance of a reduction in output (fewer lines of code than in the previous measurement), while it is clear that the opposite occurs.

4. The practice of reuse and / or code generation

The reuse of existing code is very common and highly recommended in DRY (Do not Repeat Yourself). So many parts of the code can be retrieved from a previous project or copied from an open source project, library or another blog post. In addition, modern development tools can automatically generate code for the developer who works with various high level design tools.

5.  Tasks outside development

Activity in the development of software is not limited to writing code on a keyboard. In fact, many other tasks are needed to produce quality code. Here, a high variability can emerge according to the different methods used, the composition of the team or the documentation requirements.

6. The reliability of the measurement tool

A wide variety of measurement tools are available on the market. Given the lack of consensus on the method of counting the amount of lines of code in a source file, the outcome may be materially different depending on the tool used.  In addition, certain technical problems can arise when it comes to identifying what should actually be counted or not. For example, some software has difficulty differentiating comments from instructions when they are mixed (Danial 2013). The efficiency and quality of those source line counter is also very variable.

7. The (potential) manipulations

When a measure may have an impact on one or more person, we need to consider the possibility that some of them try to manipulate it to their advantage. Thus, if the productivity of a developer is measured based on the number of lines of code (or functions), they could very easily manipulate the source code to inflate the results. This problem is very common in companies that use KPIs to conduct assessments of their employees. One can also easily imagine a company trying to maximise the numbers if they know they will be evaluated based on this metric.

8. Time

Almost all the above elements are time sensitive. For example, the competence of a developer does change with practice (this includes the famous learning curve). More features of languages ​​and frameworks are also evolving to increase the productivity of the developers. The longer a project takes, the longer the measurement will be sensitive to this bias

Conclusion

In conclusion we can say that estimating the production effort or value of a program using this software metric is very risky. However, this technique is widely used. Some estimate experts such as Steve McConnell (2006) are very aware of the ineffectiveness of the method but still use it in the absence of anything better. Other methods based on “function point” (business functionality) have attempted to resolve some of the issues addressed above, but the values ​​remain highly correlated with the number of lines of code (Albrecht 1983).  For me, the information obtained by these metrics, and anything based on them, should never be considered as reliable and should be used with great caution in your decision making process.

Note: Some of the information in this text come from the fruit of the research I have done for LIEU (Liaison Entreprises-Universités) a network of valorisation units of Universities and colleges of the Wallonia-Brussels federation.

References

Albrecht, A. (1983). Software Function, Source Lines of Code, and Development Effort Estimation. http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=1703110&searchWithin%3Dp_Authors%3A.QT.Albrecht%2C+%2FA%2F.J..QT.%26searchWithin%3Dp_Author_Ids%3A37850740200

Boehm, B. W. (1981). Software Engineering Economics.  Englewood Cliffs, NJ. http://userfs.cec.wustl.edu/~cse528/Boehm-SE-Economics.pdf

Danial, A. (2013). CLOC Limitations. Retrieved the 2 august 2013 from http://cloc.sourceforge.net/#Limitations

Dijkstra, E. W. (1983). The fruit of misunderstanding. Retrieved the 2 august 2013 from http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD854.html

List of programming languages. (2013, July 30). In Wikipedia, The Free Encyclopedia. Retrieved 12:48, August 2, 2013, from http://en.wikipedia.org/w/index.php?title=List_of_programming_languages&oldid=566431816

McConnell, S. (2006). Software Estimation : Demystifying the Black Art.Microsoft Press. http://www.amazon.com/Software-Estimation-Demystifying-Practices-Microsoft/dp/0735605351/

Park, R. E. (1992). Software Size Measurement : A Framework for Counting Source Statements. http://www.sei.cmu.edu/reports/92tr020.pdf

Réusinage de code. (2013, juillet 5). Wikipédia, l’encyclopédie libre. Retrieved the 12:04, august 2, 2013 from  http://fr.wikipedia.org/w/index.php?title=R%C3%A9usinage_de_code&oldid=94719037

Incoming search terms:
  • articledetails?universites

A personal kanban to beat procrastination

This personal kanban could just save your life.

This is an extremely simple method of personal organization based on concepts just as simple.

Along with many other advantages it will help you to:

Used in work (or family) teams a Kanban can also help to improve collaboration.

To make your personal kanban

You can get everything you need for around $ 50:

I chose products from Staples (prices may not be the same), but you can use whichever products you prefer, provided that:

  • The total area of the corkboard does not exceed 1.5′ x 2′. This is important – we will see why later.
  • The business card holder must be able to contain up to 30 notes or more.

Assembly is simple.

  1. Take a sheet of white paper and cut two strips along the length of about 0.3 inches. Place them vertically, equally spaced, on the corkboard.
  2. Although optional, you can add a heading to each of the three sections you have just created (you can use what is left of the white paper for this). The sections are: TO DO; IN PROGRESS and DONE.
  3. Finally, paste the business card holder at the bottom of the third section.

Once assembled, your personal kanban should look like this:

Personal Kanban

 

Implementation

The central element of your personal kanban is the backlog. The backlog is the list of everything there is to do. It is constantly evolving and to be effective, you must trust it.

Collection

Take the notes and begin to list all the tasks that are going through your head. Use one note per task. Do not worry if you forget something, one of the best things about this tool is that you can add things later to get them in the process. For more information on the collection process, refer to the description of GTD.  Fans of GTD will see how you need to have a kanban for each “location context”.

The way you describe your work is essential. The principle of “next action” should be used whenever possible.

For example if you need to call your telephone company to cancel your subscription, don’t write “cancel subscription”, but “Call Phone Company to cancel the subscription.”

The difference between these two descriptions is obvious. The first version describes your goal, while the second invites you to action. This technique is particularly effective against procrastination. Your mind is less likely to find avoidance strategies.

Prioritization

Once you have all your tasks on notes, you must prioritize them. Organize your tasks in order of importance. The strategy is simple: one task is always more important than another. When you set priorities, think long term. An important task that will become tomorrow’s urgent task should be completed before it becomes urgent. Having urgent tasks always creates more anxiety.

Planning

You must “plan” a maximum of five tasks on your corkboard. In other words, you can’t have more than 5 notes in total on the board. To add a new note, you must remove one that is in the “Done” section, provided of course that it is “Done”.

Ideally, you choose the five most important tasks of your backlog. But it may happen that you decide to group tasks for practical reasons such as economies of scale. If you need to do some odd jobs in the garden, it might be more advantageous to plan to do them together.

Execution

When you decide to start a task, you take the note and put it in “In Progress”. This indicates that you really will do the job. If for any reason you decide to put off the job without having begun it, replace the note in the first column.

Here is a very important rule: Never have more than 2 notes in “IN PROGRESS“.
This stops you from starting to do several things at once without completing any of them; one of the root symptoms of procrastination. This simple rule prevents you from having to waste more time choosing between tasks and means that you can advance.

You can browse your backlog regularly (every 2 to 3 days for example), and update and then re-prioritize if necessary.  You add task notes to the “To Do” section as you take them from “Done.”

You can add to the backlog but you should only ever take a task out of the backlog if its completion would no longer provide you with the intended value.

This process is perpetual. That is to say that there is no end.  We will always still have things to do, that is “situation normal”. If you can accept this fact, it will really help you to reduce any feelings of stress.

How does it work?

The problem that all methods of improving productivity face is the need to fight procrastination. Procrastination fuels anxiety.

When you procrastinate, your mind seeks avoidance strategies and your energy goes into implementing them rather than the tasks. Having only a few tasks that are permanently visible allows your mind to unlock faster. This phenomenon is greatly amplified by the power of the “next action” that calls for action and not for more reflexion which just feeds your toxic thoughts.

Procrastination often happens because you are discouraged by the feeling of having too much to do. For this reason, the size of the board only allows you to displays a limited number of tasks.

How do you eat an Elephant? One bite at a time!

Having a list, or backlog, (and being able to review and update it) gives you peace of mind.  When there are too many unknowns your thoughts often go in all directions in search of potential threats rather than focussing on what needs to be done.

The kanban is more effective than the standard task list, because a long task list, although it helps you to see all the tasks clearly, sometimes generates as much anxiety as it removes.

Seeing a big task list can really discourage you so you must make your task list accessible but not visible. You can do this really simply with the personal kanban. Place the notes in the business card holder. Your list will instantly seem smaller than it is. The first note in the stack is the most important and therefore it is most likely where you need to start.

The personal Kanban reassures you.  Your tasks are visible but, thanks to the contrast between the notes tucked away in the business card box and those displayed on the board, the size of the backlog is not advertised. Your attention is directed naturally to what matters most at that moment i.e. the 5 tasks on your board.

Also, having a real, physical board which involves you in real action promotes a direct link between your brain and managing your tasks. Taking a task and moving it across your board creates a concrete sense of accomplishment: much stronger than when you click on a checkbox in software.

Another thing that typically causes anxiety is the fear of forgetting something.  The availability of the backlog, easily accessible and convenient, removes this fear. Having the backlog (and regularly updating it) means you can relax.

Finally, the prioritization of the most important tasks allows those which are the least important to fall back to the bottom of the list. You lose less time dealing with trivial things and you are in control of how much time you give to those tasks.

6 steps to safely quit your job and launch your tech start up

Many students and future entrepreneurs ask me how it is possible to leave their job and security without the risk of ruining their life.  In fact, this fear is irrational as is the illusion of security in your job.  That will be subject of a future article, but in the meantime here’s the one thing I generally recommend for start up without risk.

You must have enough money put aside to support you financially for an entire year.

If you do not, you will be at the mercy of each little setback, making your journey much more difficult.  And to launch your start up without working on it full time will also affect your chances of success.

Here are the 6 steps you need to go through to quit your job safely:

  1. Reduce your monthly expenses to a minimum
  2. Save any extra money
  3. Increase your income
  4. Get ready for the adventure
  5. Negotiate your departure
  6. Commit yourself fully

The first three points can be found in dozens of books on managing personal finances, with the common denominator : spend less than you earn and put the money aside.  The aim of these three points is to get yourself into a good financial situation.   The final three points are really important for a good start.  Missing one step can act against you.

Here’s an explanation of the 6 steps:

Reduce your monthly expenses to the minimum

Have a modest lifestyle then you can dramatically increase your level of freedom and your ability to seize opportunities. People with a very high standard of living are often prisoners of this lifestyle and slip into a vicious cycle called The Rat Race. They are on the treadmill never able to stop, because stopping would mean big problems. Having a modest lifestyle is a luxury accessible to all.

Get rid of all the unnecessary stuff in your life.  This could include selling your expensive car, reducing your frenetic shopping and the number of meals out in restaurants every month.  Instead of an expensive gym subscription try running or cycling outdoors.  Consider swapping your shiny, new, latest generation iPhone for a second hand android and don’t forget to cancel all the subscriptions that you don’t really use.  Next summer instead of going abroad to a 5-star all inclusive hotel try camping or bed and breakfast.

Worried about loss of your well being? Scientifical studies (Malka/Chatman 2003, Baucels/Sarels 2010, Boyce/Brown/Moore 2010 & Krugman 1999) prove that once your basic needs are met, any extra money won’t really affect your happiness. In fact, too much stuff in your life may introduce boredom and anxiety. More is less.

Still worried? Don’t forget it’s just temporary until you can afford it (again). In fact you should never buy anything you can’t pay for with cash. If you can’t pay in cash (with the exception of your house), it means you can’t really afford it. You’ll be able to buy all the luxury you want with the extra money you’ll get from your successful company.

I personally sold my brand new luxury car (Mercedes ML) for a simple and cheap second hand utility car (Ford Transit Connect for less than 8K). Less happy? On the contrary! Liberty of choice is priceless.

Save any extra money

The difference between your income and expenses, is your ability to save.  The bigger the gap is, the faster you will reach the goal of the equivalent of one year of expenses. If your start up requires an initial investment, you must include this in your calculation.

We saw earlier that your income, after a certain point, won’t affect your happiness much. Lack of savings can really affect it (Gavin 2005).

What you do by taking all your extra money is pay yourself first, a lot. Here are the definition from Investopedia:

A phrase commonly used in personal finance and retirement planning literature that means to automatically route your specified savings contribution from each paycheck at the time it is received.

Because the savings contributions are automatically routed from each paycheck to your investment account, this process is said to be “paying yourself first”; in other words, paying yourself before you begin paying your monthly living expenses and making discretionary purchases.

Increase your income

To speed up the process, I strongly recommend you increase your income.  You can do this simply by asking for a raise (it works, really, just try), finding a second job on weekends or evenings, or by getting rid of all those gadgets that you do not need anymore by selling them on eBay (whatever you may think of it). Ideally, you can do all three at once!

One really original way that I have had occasion to test with success is proposed by Timothy Ferriss in his book The Four Hour Workweek.

Please note that this mustn’t be to the detriment of a well balanced life. If you really can’t afford to work extra hours, don’t do it.

Get ready for the adventure

Just because you work full time elsewhere does not mean that you cannot clear a little time to prepare your start up. This need not be more than 4 hours per week. If you have to choose between working more (previous step) or this one, pick this one!

I highly recommend that you use this time to talk to the potential customers of your projects. This will allow you to adjust your business plan in order to develop a product that truly meets market expectations.  This is called Customer Development.

Many start ups fail because the entrepreneurs have never talked to customers and therefore “derived” requirements based on their own experience. What they did not know is that their experience is unique, and often does not reflect reality.

Starting well prepared will help you to face the challenges in a more serene manner. Of course you cannot predict everything, but read enough about the subject and you can protect yourself from most common mistakes.

Additionally, start to subscribe to every major blog of your industry and follow the specialized press. Watch similar companies and try to attend to few trade shows to observe the market.

Finally, to help you prepare, I recommend that you read Four Steps To Epiphany, you can get a pdf version here.

Negotiate your departure

Once you have gathered a year or more of expenses, it’s time to get started.

This is the simplest step, and yet it is one that can seem to be the most insurmountable! It’s not really the fact of announcing your departure to your boss that causes the most concern, but actually making the leap.

Many choose to apply for a sabbatical year (this is a legal right in some countries), others consider this step as a liberation in itself.

If you have fully realized the previous steps, you will be much more confident. You will have enough money to both achieve your business and live normally.

The most elegant way to announce your departure is to request a meeting with your boss and explain that you are going to try the great adventure.  During the interview, take advantage of their experience to ask for advice!   Send your official letter of resignation only after the interview.

Make sure that your departure is not too detrimental to the company and that your departure is not too painful for your employer.

If you are lucky enough to have a good boss, they will let you go without putting any obstacles in your way. Otherwise, they might try emotional blackmail.  If your departure harms your employer, it is likely because you have been poorly managed. It’s rarely your fault. This will be your first test: to deal with this while remaining professional.

Commit yourself fully

You have started!  Now you need to focus on your business full time.  This is no time to indulge in other things. If you chase two rabbits, you won’t catch either.  Don’t start two businesses at the same time. Focus on one and only one. You’ll be able to work on different things at the same time once you get more entrepreneurial experience.

You will probably read in many other information sources that the best entrepreneurs work 100h per week. I really think this is as ridiculous as it is dangerous.  It’s true that working many extra hours will provide you with extra productivity short time, but will likely harm you long term.  You must work hard, but not destroy your health, which is more important than all the money in the world.  In fact, I believe that working too hard can prevent you from being successful as much as not working enough!  Dead or burnt out, you are useless to your business. Your start up needs a healthy entrepreneur with a well balanced life.  I highly suggest you that you don’t work more than 9 hours a day, with regular breaks, including lunch time away from your computer.  Invest the rest of the time in what should be the most important: your family and yourself.

Whatever happens you have this advantage: you will not have the pressure of needing an immediate result. You know you have enough money to support yourself and in case of problems, you know you have the capacity for a much better job than you had before.

What if I fail?

The success of your business is not the subject of this post. That being said, you do need to consider failure.  Statistically, it is even quite likely that you will fail, but if you prepare properly you greatly improve the chance that you will succeed in developing a profitable business in which you blossom.

In the event that it just does not work, know that you come away from this adventure much stronger than before, which will greatly increase your chances of finding a better job.

The reason is simple: Employers love people who take things in hand, those that turn problems into opportunities.  They are quite rare and generally, people who can do this are probably already employed and so not likely to be applying for jobs, or have already set up their own business – this means these skills are in demand.

Indeed, fear of failure is so great that very few people manage to succeed as far as point 5 point, even the brightest. You will be in a unique position that allows you to find an exceptional job.

If you can afford it, save a little over a year in advance to give you a few more months to find a job in optimal conditions, ie without pressure.  For you, the key to finding a better job is that you have become more competent, with no debt and most importantly, with no regrets for not having tried.

Incoming search terms:
  • 6stepstosafelyquityourjobandlaunchyourtechstartup|MindfulHacker

From a group of workers to a powerful software development team

All software development team project managers hope for a dream team of successful developers working to assist the company to achieve its objectives. Unfortunately, this type of team is very rare in all professions, including in the area of ​​software development. I am thinking particularly of enterprise applications or software companies where teams of developers are working simultaneously on the same code base of the same product.

The reason probably lies in the way we generally go about increasing developer productivity. It is probably too focused on improving the hard skills of the individuals (e.g. sending them on technical training and evaluating them individually on these points) and not their soft skills which without doubt positively and significantly impact on the effectiveness of the whole team. We should also consider “groupal” improvements: organizing the team so that it can naturally grow and reach a much desired level of maturity.  Raising awareness of the groupal phenomena is an example that I will specifically address in a future article.

I propose here a brief introduction to the concept of team dynamics that I will discuss more thoroughly and specifically in future posts. To begin with, I offer a definition from “high performance teams” research in group dynamics and organizational psychology. This approach is put forward by Katzenbach & Smith (1993) in their book “The Wisdom of Teams” and seems to me to be a particularly interesting way to begin addressing this issue. Both authors propose, as a first step, to clarify the difference between a single group of individuals and a team:

“A team is a small number of people with complementary skills who are committed to a common purpose, performance goals and approach for they hold themselves mutually accountable.”

We will see how this breaks down operationally. According to Katzenbach & Smith, the characteristics that differentiate between a normal team and a successful team are:

1. A limited number of members

As the number increases, it is less easy to maintain high efficiency. As suggested by the authors in their work, it is clear that problems of communication grow along with the size of the team.

2. They are composed of people with complementary skills

We immediately think of the different technical skills, but it goes further than that. The authors propose three categories of skills:

  • Technical & functional expertise
  • Problem-solving and decision-making skills
  • Interpersonal skills

In software development, we tend to wrongly focus on the first category (hard skills) while neglecting others. One of the best ways to increase the efficiency of an entire team is to invest in developing their soft skills. This should also allow them to see things from a “groupal” perspective as opposed to the “individual” view which is overwhelmingly the case. In addition it should be noted that the multi-complementary members of a team involves active support – and that even within the same skills category. Thus, the developer of the backend will fully rely on the expertise of the DBA when needed and vice versa. All promotion of individualism, for example by individual evaluations (explicit or implicit), would make a good team ineffective.

3. Committed to a common purpose and performance goals

This is a common objective defined in agreement with the team. The goals should never be imposed by any individual (eg the team leader). The performance of the team to achieve the goals must be measurable. The measurement method is paramount and should in no case enter into conflict with the above principles, for example by measuring the team members individually and not collectively.

4. Committed to a common approach

This approach should also be clearly defined. It seems to be that the first requirement is the establishment of coding guidelines that must be enforced by a continuous integration server and / or frequent code reviews. The latter, to be effective, must not be made by the same people but by the team in rotation. This allows different members of the team to share learning and leads to a mutually enriched team. The criteria should be re-discussed and re-evaluated in a retrospective sprint (if you work in an iterative model as Scrum). The team should also have overall responsibility for development tools it uses. If they have a strategic interest in the company, its main users should be involved in one way or another in the discussions. Which brings us to the last point.

5. Mutual accountability

This element seems to me particularly important to ensure good cohesion in the team. If you want to get to an optimum efficiency level, you must delegate some control over the project to the team (eg the choice of tools as mentioned above). The worst situation would be to make the team fully responsible for the result but taking away any means of control over their performance. This would create very severe stress that would be counterproductive for the entire organization.

As you may have noticed, there is plenty of room for discussion. And this is just based on the findings from a single study. There are hundreds of other studies that will allow me to return to these questions of team dynamics (aka group dynamics) very frequently in the future.  I think that this is a fundamental element in the field of software development. The specifics of this sector will allow us to approach things differently. I am thinking especially of the psychological profile of the developer in general (myth or reality), but also the technical means available to create an optimal working environment to meet the criteria for achieving optimum performance. For example the use of the continuous integration server but also the various meetings organized within the framework of a method of iterative development.

If you are interested in the subject, do not hesitate to share your experiences in a comment or by contacting me directly.

In praise of technical support

I’ve been doing technical support for the last 13 years and still do it today, I love it.  I love it so much that I’ve now got friends all over the world.  I used to have a map of the world in my office with pins that located them.  I’ve even been invited to the wedding of one of them on the other side of the planet, which I attended with great pleasure.  This is invaluable experience and just for that, I’ll continue for the next 13 years in the exact same way.

But in addition to the social aspects that are obviously linked to my personal interest in multiculturalism, technical support is a real opportunity to grow for both developers & business owners.  Support connects you to your users and it’s one of the best channel of gratification you may have.  The comments and suggestions you receive positively from it help you improve your products, skills or strategy.  If you are doing great at support, there is a great chance you are or will be great as an entrepreneur or lead developer.

There are many motivational theories and they are not universal as we are all different. We are all driven by both extrinsic and intrinsic motivation at different levels.  A good example of extrinsic motivation is salary or threats (the donkey, the carrot and the stick). You do support because you are asked to do it or only for money (or because potential loss of money), or both.  Intrinsic motivation on the other hand is the motivation you get from just doing the task.  You are aware of your own performance and you are not specifically seeking for extrinsic motivation.  In fact, that kind of motivation often comes naturally afterwards.

Many, many thanks Pierre for helping me out […]. It’s rare to get such service and I really appreciate it. […]. I owe you a beer or three next time I am in Brussels!” A customer from UK

Because technical support agents are often at the very bottom of the hierarchical pyramid, it is likely to be perceived as a low profile job.  Many technical support guys try to do the bare minimum and hope they will be promoted soon to get out of that awful situation.  I believe it’s the exact opposite.  The essential skills needed to be a great technical support agent are the same you need to be a brilliant developer or successful entrepreneur.  Great developers & great entrepreneurs have strong interpersonal skills.

Strong interpersonal skills include being genuinely interested in your users and being able to put yourself in their shoes.  Empathy through social awareness is one of the core element of emotional intelligence.  If you don’t understand your users, you will face strong problems.  Some users have difficulties expressing their needs or feelings.  Your great ability to decode what your customers need or want will not only make them happy, but also help you improve your products and overall company strategy.

“I must say Pierre that we are very impressed so far not only with the product but with your overall attitude and all the assistance you have given us. I can’t thank you enough but hope to thank you soon as a customer.” A customer from US

Because support is an integral part of your product, support is also one of your main sales & customer relationship channels.  A study conducted by RightNow® Technologies has found that 46% of Australians declared they would leave their current internet provider because of poor customer service.  The same survey states 21% already left a previous provider for the same reason.  How many customers can you keep or get with a great support?  In software development, support is often the first human to human contact your customers get and how it will goes will be weighted in their overall perception of your product.  In fact, your product is not the bits that get downloaded and installed on your customers machines, your real product is the whole experience your customers will get with your company.

Since your product is your company, including its support, any assistance you give to your users should be free and optimized.  To make it painless for both our users and ourselves, we try to use the following procedure once we receive a request:

  • If it’s a reproducible bug, we add it into the backlog and give its ID to the customer/user. We also take the ID of the customer/user to notify him of resolutions and releases personally. This is easy if you collect his email directly.
  • If it’s a problem using the software, we take this as an opportunity to improve the documentation.  Any answer is written like a knowledge base article that we add in our database afterwards.  It takes triple the time to write, but we don’t have to repeat ourselves later (most users prefer browsing in KB).
  • If it’s a feature request we connect the user with the product owner directly.  This is very valuable.  Of course we use systems like uservoice.com, but talking with the user directly is a lot better.
  • If it’s a complaint we try to manage that outside the process.  People that complain like to be considered as important (even if the complaint is trivial).

Support is your free & perpetual market research.  Support is one of your main sales channels. Support is your opportunity to learn how to improve your social awareness.