Hope, confirmation bias and entrepreneurs

Entrepreneurs are often trapped in a vicious circle of hope.  Hope clouds judgement and can be what prevents the entrepreneur seeing things clearly and taking the appropriate decisions.  Hope is so seducing that it’s what is used in most personal development or “get rich in x lessons” books.  Hope is also so powerful and rewarding that it is fed by proofs generated by the confirmation bias, that is itself fueled by hope. Entrepreneurs must learn its underlying concepts and learn to get objective opinions from others.

Confirmation bias refers to a type of selective thinking whereby one tends to notice and to look for what confirms one’s beliefs, and to ignore, not look for, or undervalue the relevance of what contradicts one’s beliefs.  [Skeptics Dictionnary]

Before talking about confirmation bias, let’s understand what is hope from a psychological point of view.  Hope is one of the many mental defense mechanism we have that is triggered in order to disconnect us from hurtful emotions (anxiety, sadness, despair, ….).  It uses thoughts to construct a positive scenario of the future.  People often grab these thoughts as a life buoy to avoid the reality of the present moment. We usually hope for a better future when we are  uncomfortable with the present.  Hope is what drives many wantrepreneurs.  Hope will make entrepreneurship’s book writers rich, not you.  Happy people hope for the best, once, then stop thinking about it.

In order to fuel hope, you need proofs that what you see in the future is possible and is likely to happen. This is when the confirmation bias enters into action. Every single proof you see that makes your predictions credible is highlighted, while every single piece of evidence that it won’t is denied. Those proofs stimulate hope that itself forces you to suffer from the confirmation bias. It’s a vicious circle.  One great example of the relationship between hope and the confirmation bias is seen with believers of the 2012 end of world event.  They can point to you dozens of  scientific  studies that prove it will happen, ignoring the hundred other proofs that it won’t.  One seducing thought in the 2012 case is that the event can potentially make them better than they are now.  Hope is triggered by a desire for change and fueled by confirmation bias.  Desire for change is not the only way to trigger hope.  Any unwanted emotion, such as fear, can also be a very good motivator: some religions claim that if you are not a good practitioner, you won’t go to paradise, but burn in hell forever. With entrepreneurs the desire for change is the key to the process.

Hope & Confirmation Bias

Conscious thinking is not the only factor: things get worse when we take into consideration theories of biological psychology.  Desire to change is not the only motivator for hope. There is a physiological reward for the behavior. Dr. Robert Sapolsky, professor of biology and neurology at Stanford University conducted experiments that showed that there is a direct link between hope and dopamine (pleasure hormone) releases in the brain.  Studies even show that we get higher dopamine releases when there are more uncertainties. Uncertainties? That is certainly something that entrepreneurs can relate to.

The ability to cope with temporary difficulties is one of the entrepreneur’s required abilities. Too many people can’t go through what Seth Godin called The Dip.  Defeatism, the opposite of hope, is one of the obvious failure factors in entrepreneurship.  Often they decide to stop.  They think their efforts are not worth it anymore.  Defeatism works just like hope. Your judgment is biased and you see things from the negative side.  It is also fueled by the confirmation bias in the same way.

The Dip Illustration

Optimism is often suggested as a strategy to fight defeatism.  It’s true that if you tend to be defeatist, hope can counter balance the feeling by replacing negative thoughts by positive ones.  It’s positive psychology. And it’s even suggested by the Emotional Intelligence guru Daniel Goleman.

Having hope means that one will not  give in to overwhelming anxiety, a defeatist attitude, or  depression in the face of difficult challenges or setbacks. [Daniel Goleman]

Just as defeatism must be avoided, hope can’t be a strategy on the long term. It can even  hurt as much as defeatism.  Do you remember how you felt after you really hoped that something would happen and it did not? You would be really surprised if you noted each prediction you make and compare them with what actually happened.  Hope will play against you.  It will hurt, it will hide a more concrete problem, and more importantly, it will bias your judgment.

Self awareness, again, is the key. To manage the process, consider hope (or defeatism) as a signal you must decode by being aware of the physical and psychological mechanisms. If we suspect we are biased, we must not believe entirely what we think and assess every hypothesis we make with realistic information.  Market studies and/or customer development are ways to assess our assumptions, as well getting mentorships from more experienced people who have learnt the hard way. With some practice, you will be able to acquire the self awareness required to avoid being trapped in those loops. Be a mindful hacker.



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

How to graduate from a university and know how to program

Getting an academic degree in computer science is a step many choose on their path to becoming a professional software developer. The majority begin their journey with the academia and only then enter the industry. Some choose to pursue an academic degree in the middle of the road when they have already worked in the industry for some time. The reasoning varies quite significantly. Many believe the academic studies will provide them with valuable otherwise unattainable knowledge that will help them to become better professionals. The others only wish to obtain a degree as a formality to strengthen their position on the job market. Both reasons are valid and understandable and they both set a certain level of expectations, with both the students and the industry that awaits them when they’ve completed their quest for knowledge.

Whatever your motivation is, one thing is clear – going for a degree is a serious decision. More than that, it is a serious investment of your time and you have to know very well why you are doing it. For the duration of your studies you won’t be able to take a fulltime job, potentially a part-time job is going to be a problem too. The studies are going to become your priority and you must understand how this works in order to obtain the most benefits from your venture and gain the highest return on your investment.

Academic environment is generally surrounded by many illusions, misconceptions, preconceptions and false beliefs. The most widespread false idea is that the role of academia is to train workforce for the industry. That is far from the truth. Universities give education to the students. Academic lectures and courses have only one purpose in mind – to demonstrate various fields of knowledge and let students to experience a variety of things within a short period of time. This is the ultimate goal of the education – to extend your knowledge horizons and make you aware of the complexities of the world around you and the particular field you’re leaning towards, be it medicine, linguistics, arts, engineering or software industry. When the studies are complete, graduates can choose to specialize in a particular field with the two general choices – entering the industry or going into research. But until that time arrives, academia is not going to enforce any decision on you. And almost certainly you are not going to be trained into a skilled worker ready to get cracking from the first day on your first job.

Your studies of computer science will give you theoretical knowledge in many fields – data structures and algorithms, computer architectures, graphics, data analysis, information theory, cryptography, formal languages and grammars, compiler construction, architecture of operating systems and many others. That is the highest value of the education – getting a good overview of the field and forming a big picture. If you believe a priori you are going to become a practicing software developer, you will have to take additional steps outside the curriculum and find a way to get substantial practice developing software in your own time. The academic environment may not be offering you chances to write code at every step of the way, but it will not be stopping you from taking initiative and seeking out opportunities to do so. There are several options available which we are now going to discuss.

1) Whenever you get an assignment with any course, be it math, physics or anything else where there is a potential to automate your work – use it. Write some code, a simple application to process data, to run algorithms and analyze the results, to simulate natural processes and gather statistics. While it seems like not a big deal, it will be useful in learning about data types, operations on them, performance and rounding problems. From the basics you will move on to the higher grounds.

2) If you have a free choice of tools or when it is your own initiative to write a program, pick up a different tool each time. For common programming tasks there are usually several libraries and frameworks available. Try many of them, compare them, see how they approach solving problems, discover their limitations and strong sides. Learn several programming languages, procedural, object-oriented, functional. Compare their paradigms and what effect on application architecture they exercise. Forming a good overview of the technology landscape counts towards your goal of drawing a big picture.

3)Whenever somebody in your academic environment expresses the need for a little tool to help them automate some work – offer to write it for them, if you believe it is within your capabilities to accomplish. If it works, you will have forged a good relation with somebody in the staff. If it doesn’t – well, failure is still valuable experience and nobody is going to blame you for that. You’re just making your first steps and the success expectation is low by default. You’re not in a production environment where there are deadlines for delivering the work and you’re stressed all the way. Instead you have a relaxed schedule so take your time, try things, see if they work out. With your undertaking you would merely be offering a courtesy and they would not be paying you anyway, so nothing would be lost if you don’t succeed, provided that you really try.

4) With some courses you will see opportunities to write a helpful tool for the teacher. An utility to process some data and display the results could be a nice demonstration tool in the instruction process. An application to compare different algorithms and see how they handle particular data would yield some practical results the teacher could integrate into his material to prove certain points. An assessment tool to check if the students grasped particular knowledge. Any other form of a lab experiment that applies to the course you’re attending would always be useful and welcome too. Offer to code that tool. The teacher will most likely be very glad, and sometimes you can negotiate (or even be offered upfront) being freed from the final examination if you go an extra mile and offer your help. Be warned however that the last tip is a cultural thing and depending on where you live this may be perceived as inappropriate since it would mean you would be getting a favor over the others, even if it seems like a fair deal. You’re the best judge of your culture and it’s up to you to explore this opportunity.

5) If you’re deeply interested in a particular field, approach the teacher and ask if he or she would be willing to coach you if you personally would dive much deeper in the subject than the course foresees. Teachers are generally frustrated most of the time that students are generally bored with what they teach. When they get a highly motivated person in the pack, it lightens their day. If they genuinely like teaching, they would be bringing you more material on their own accord and spending more time with you helping you master the advanced section during the basics class. This is however a very personal opportunity and in part a cultural thing too.

6) Take internships that will help you get a foot into the world of practice. These are generally offered in most universities on local news boards. If you don’t see anything compelling, drop an ad on popular career sites or on programming forums popular in your country. Usually there is always a need for a smart student that could help around for very little money, and you will learn how things are being done in the industry. Be warned however that some companies like to exploit students and use them to do the boring work while not giving them a chance to learn. If you feel you’re in that situation, leave and take on another post. The internship only works as a mutual relationship, it should not go misbalanced.

7) If you see you’ve made a significant advancement over the other students, make them aware of your progress. Not that you should brag about your intellectual abilities, never do that, but offer to be a helping hand to the others who struggle with the material. It will teach you to be a coach for the others, even if in its simplest form.

8) Offer to give a series of presentations on some advanced material you’ve mastered, or at least don’t reject it when you’re asked to. Learning some presentation skills and the ways to shape and deliver information to the audience would add to the collection of your valuable assets.

9) For the group work choose to team with people with different background than yours, coming from another region or possibly from another country. Intercultural experience is going to be profoundly illuminating, if you’re willing to see past your differences and keep an open mind.

10) When choosing which courses to take, try to select the teachers with a practical mindset and possibly industry experience. You can expect to hear more useful and wise ideas in their lectures. And if you get yourself noticed and recognized as a motivated and enthusiastic student, they may help you land your first job as they are more likely to have connections in the industry. If you live in a location where the job market is tough, this can be a huge leverage. Don’t miss it.

If you stick to the default curriculum then it will pretty much be a wasted time and a lost opportunity. But if you do follow the advice you can expect to graduate with good marketable skills and be highly competitive against your former classmates who just tagged along for the ride.

How to become indispensable

All social groups seek the company of people who help them reach their goals. For example a network-gaming oriented group will generally be composed of people with profiles compatible with the purpose of the group: gamers. On the other hand, people with generally incompatible profiles are rejected. This becomes a problem when someone still wants to join with an inconsistent group. The only solution for that individual is to adapt and align their goals with those of the group, or find another group compatible with their current profile.

In the case of a social group, this process is more or less unconscious. In a company, it’s the same thing, but with the aggravating circumstance that you generally cannot choose. If you are not aligned with corporate goals, you will eventually pay the price. On the other hand, if you understand that the closer you get to the corporate goals, and show that you will help achieve them, you will become indispensable.

This type of person was recently named the Linchpin in the latest book by Seth Godin (which has the same name). Here is his description:

There used to be two teams in every workplace: management and labor. Now there’s a third team, the linchpins. These people figure out what to do when there’s no rule book. They delight and challenge their customers and peers. They love their work, pour their best selves into it, and turn each day into a kind of art.

Linchpins are the essential building blocks of great organizations. They may not be famous but they’re indispensable. And in today’s world, they get the best jobs and the most freedom.

This book is really worth every penny, and if you like this article, I strongly suggest you to buy it as it is full of similar content.

In this article I will tell you about a simple and effective way to become indispensable: make sure you do not create new problems, and on the other hand, that you solve a lot. Become a problem solver.

The trick in organizations is to identify what is “creating a problem” and what is “solving a problem“. For example it is not necessarily creating or resolving bugs. It’s evident that if you create many bugs, you’re creating problems, even though when you solve them, you are solving problems. I will focus on another kind of behavior that can be considered, generally unconsciously, the same as the act of creating problems. Some problems that you are not directly responsible for will still be associated with you just because you report them. Or worse, you don’t report them. Here are examples of behavior that will be seen by your management as problems that you create (or bring) while this is not necessarily the case:

  • You complain to your hierarchy about your work environment.
  • You indicate that your application has serious performance issues.
  • You report that the components suite that you purchased is not suitable for your needs.

All these examples are your problems until you talk to your manager. They become the problem of the manager from the moment you bring them to him. Even if you are not directly responsible for these worries, you’ll be automatically associated with them. The average manager has no time to deal with new problems and he will try to avoid anything related to them.

The first tip is to manage them yourself as much as possible and thus to take responsibility. You have everything to gain with this attitude. Because in this case, you do not create the problem, you are really solving them! Very few people have the ability to take responsibility for such decisions. But we can develop that talent by doing. When you face a problem, ask yourself the question “can I myself, or with the help of my colleagues solve this problem?

Unfortunately in many cases this is not so easy. You will simply not be able to adopt that attitude for organizational reasons, such as hierarchical approval processes. If you can’t be the decision maker, you must pass it to the management. Faced by what seems to be a great constraint, there is a very simple technique that is used by the indispensables and almost always overlooked by others: report the problem and your recommended solutions.

Too many people limit themselves to reporting the problem and then are inevitably associated with it. When reporting the possible solutions you are associated with them and then credited for what you’ve become: a person who solves problems. Someone absolutely essential to keep in the organization in contrast to those who create the problems and who it would be better to get rid of.  The more you act this way, the bigger your circle of influence grows. Your opinion will have more and more value. While you are improving your company, you’ll also improve your own working conditions.

Just like the basic concept, the technique is extremely simple to remember. When you encounter a problem that affects you or your company, do the following:

  1. Identify possible solutions to the problem.
  2. If you think you can solve the problem directly, without the advice or approval of a tier, do it without hesitation.
  3. You cannot (yet) make the final decision? Then report the problem with the solutions obtained in step 1.

Examples repeating the above examples:

  • You complain to your hierarchy about your work environment: if the problem can be solved with a purchase, specify the references of the desired material as well as all associated costs. Don’t forget to explain how you are affected and how it impacts the company.
  • You indicate that your application has serious performance issues: don’t excuse yourself, they don’t care. Recommend potential architecture changes instead or at least an external expert that could come up with more advice.
  • You report that the components suite that you purchased is not suitable for your needs: propose a few alternatives that you have tested and always give your personal opinion (what you would pick if you were the boss).

Additional tips to write an effective problem/solution report:

  • Be convincing by using an appropriate response structure (see this article).
  • Write your email so your boss just has to write the word yes or no in his reply.
  • If you have many problems to report together with your solutions, send them in one mail only, even if it’s more logical to have separate threads in case of discussions. The average boss will generally try to avoid discussions.
  • Focus on the problem and the solution and only that. Avoid talking about people when possible.

Becoming indispensable to someone is a lot about solving his problems and having the same goals. Companies are seeking problem solvers. Become one of them.


Extra tips for software developer resume design

The design of a resume of a software engineer or developer, just like its content, is very important because a well-designed resume will improve your chances of getting selected from among hundreds of others. This post will give you a few tips on how to design an effective resume.  For general guidance on how to create a good resume, there are plenty online resources that will do it better than me. Here I’ll give you extra tips that may help when you are specifically seeking a job as a software developer.

I believe the objective of a resume is not about getting the job. Not directly. The primary objective of the resume is to get selected from among all the others and get the interview. Getting the interview is a slightly different objective than getting the job.  Getting the job offer is the objective of every interview.  Then comes the final objective of getting that contract, after the negotiations.  That’s a different way to see things and you should design your resume to get you past all the filters between your CV submission and signing your contract.

Getting interviews, getting offers and getting the contract are three steps that will be discussed on this blog in the coming weeks. Today, let’s focus on getting those interviews.

Understanding the process for hiring a programmer

To understand why it is important to have a well-designed CV, you must understand what it is like to hire new developers for a company. When a company identifies a need or position, it is described and then published. They publish it on their website, on specialized job boards, and in many cases, and this is one of the specifics of IT world, they hire a recruitment company specialized in IT.

These professional recruiters are usually wrongly called “head hunters”. Head hunters are generally involved in hiring very high profiles such as CxO. The kind of recruiter we are dealing with are processing a lot more data, talking to many more people and therefore can’t use the same soft methods.

At their level, there are 2 major filters involved. One is simple computer software, usually poorly written. The other involves very busy humans: the recruiters themselves. How those recruiters work is important to know because you must create a resume that will prevent you from being ignored by their system.

First, the recruiters need to process hundreds of requests in the very vast & rich domain which is IT. Recruiters generally don’t have any IT background. If they did, given the actual demand they would be working in an IT company for a better salary. They are usually people with more sales oriented profiles that are willing to learn the high level concepts of their customer’s businesses. This problem, coupled with the fact they have hundreds of thousands of resumes in their database make it almost impossible to avoid the use of a search engine to do a pre-selection based on keywords. That’s our first filter.

Hopefully, they don’t blindly export the results and mass mail their customers. They carefully check every occurrence beforehand.  Here the level of professionalism varies between recruitment companies. However they all have something in common: they are very busy. A study based on eye tracking technology determined that a resume is read in less than six seconds and they look for six main things: name, current company & title, previous company & title, previous position start and end dates, current position start & end dates, and finally education. The rest of the data was almost completely ignored. Once your CV is picked, the final step usually involves a quick chat with you to assess your availability & confirm their understanding of your skills.

Once your resume passes that second filter, there is at least an additional one. That’s the person responsible for the recruitment for the company that wants to hire someone. If you are lucky, it’s the team leader of your future team, but it’s not uncommon to have one or more intermediates in between depending on the size of the company. Each of them is a human filter you need to pass. In addition to everything that interests the professional recruiters, your future employer will look for additional details that will be discussed later.

When no professional recruiter is involved, you go directly to the company. It’s what I call the royal way. The royal way is not necessarily a good thing. It usually involves an HR department you don’t want to deal with and/or potentially more documents to be processed by the hiring company.

The overall system you need to pass through, simplified for the purpose of this article, looks like this:

Many of you should now understand why when you send your resume to 50 companies, you receive so few responses (positive or negative).

Let’s go through each filter and see what we can do about it.

The professional recruiter

At this level, we saw that we have 2 filters: the search engine and the actual busy recruiter.


The software is the easiest filter to pass for a developer. Despite that, I see many CVs that seem to have been designed to be stopped by them. As I said earlier, they are based on keywords and without google science. Therefore you must ensure that every single piece of technology you know well is specified on your resume. I’m still receiving offers for ColdFusion gigs despite the fact that word appears a single time on my resume and in a mission from year 2000! Yeah that makes me think, and you should be thinking too, about removing every unwanted keyword that would get CV selected for projects that you are not interested in!

Don’t hesitate to specify a technology multiple times if used at different companies. As a developer we naturally aggregate that in an area called skills. While it would be a good idea to have such section in your resume, it doesn’t help you to get enough visibility. Repeating keywords for every professional experience will put emphasis on your experience in a particular technology and make it more visible to the recruiter. If you have 5 years experience and worked only 1 year as a java developer, it’s like you have only one year of experience in that particular technology. Don’t abuse those keywords. Be sure to specify tools you have actually used. I usually recommend that you put the words in bold for the technology you have mastered particularly well. On the other hand, remove any irrelevant keywords. I know you learn COBOL at school, but it’s already 5 characters too much on your resume.

One page

The number of pages in your resume doesn’t matter much. What matters however is the first page. When you do a search on your favorite search engine, you rarely look at the second page. Ensure that the essential information is there on the first page. Here is a list of things important to the recruiter that need to be there. There are other things that are important to the hiring company that will be added in the next section of this article. Here we focus on what the recruiter will look for:

  • Keep contact information short.
  • Choose a good title for your resume. Common mistake is to put your education there. I usually recommend putting “Software Developer” which is the perfect description of a software developer 🙂
  • Start with a short description of your expertise. It should not be more than 2 sentences. Don’t be too precise there. You’ll get into details later.
  • List your professional experience first, from the newest to the latest. Be sure that the 2 latest are present on the first page. Each experience should have a start & end date, a position title, the company name, a brief description of the project (3 to 5 sentences, easy to read) and of course the list of technologies you used.
  • Don’t abuse titles. They are deduced by the description of your mission. They will be discussed in the interview as well.
  • Put all languages you speak on the last page. If it’s important for the recruiter, he will look there.
  • Avoid including your picture. The average human will unconsciously judge you based on how you look and you want to leave that for the interview.  A recruiter will put even more emphasis on it because he will try to anticipate the judgment of his customer.
Gaps & job hopping

All this advice is far from being enough. You have already polished your CV to seduce professional recruiters, now you need to ensure that you don’t have anything in it that will be a blocker. The recruiter is playing his reputation, so he will systematically eliminate any resume that seems too dangerous.  Two things indicate you are a potential danger (even if it’s not true): gaps and job hopping.

Start & end dates of your experience are very important. Gaps can have many explanations. As a coach for developers seeking for jobs, I see those gaps very often. When I ask what the candidate did in between I get all kinds of answers and surprisingly, the explanations I get  from the candidates are actual extra bonus points instead of the expected negative impact. If you took one year out to start a company (even if you failed); put it in your resume. If you took one year to visit Asia with your family; put it in your resume. If you went back to college; put it in your resume. A single sentence explaining the gap is more than enough.

Gaps are not the only disqualifying thing related to dates. Job hopping can be a serious problem too. Having too much job experience in a short period of time can be seen as instability, and therefore a potential problem to deal with in the future.  The hiring process, not counting the internal training every newcomer has to do, is a very costly process for the company. Therefore, it’s easy to understand why every employer is looking for (very) long term collaboration. The only way to soften how this can be perceived is ensuring that you put lot of visibility on contributions you made for each company your worked for. Make it evident that hiring you will provide value, even if you don’t stay there for years. Please note that while job hopping is generally seen as a bad thing for employees, the same is not necessarily true for freelancers.

The hiring company

From multiple hundreds of matching resumes, the employer can still receive dozen of CVs on a daily basis. Believe it or not, many of them match their profile requirement. It doesn’t mean every profile fits the position, it means that there is more work for the hiring company to filter them out (again, since the professional recruiter has already  pre-filtered them). He doesn’t want to spend the whole day reading that pile of paperwork, especially when the person recruiting is a different person than the person who is actually in need of that additional resource. Another common situation…

More importantly, nobody has the time to interview dozen of developers.  So a massive filtering will occur just for the interview. Your primary objective is to pass that very strict filter and be in the first selection, just like you want to be in the first page of a google search. You want to give your prospective colleague the chance to meet you. In addition to all the tips specified above here are some that are usually overlooked.

You solve problems, you don’t create them

First if you have a technological blog, participate in developer communities, wrote a programmer’s book, or all of the above, that’s something you want to specify on the first page of your resume. This will give you extra bonus points and many recruiters, especially if they have an IT background, will give lot of value to that.

Secondly, the company wants to know how you will help them solve their problem. The best way to show you are the guy they need is to write a short description of the problem you solved for each experience listed. Don’t limit yourself to describe what you did, but write why and how.

I developed a new backend system for their e-commerce website using ASP.NET and SQL Server.

How boring! Instead put yourself in the shoes of the recruiter and write something like:

Developed their new backend system allowing agents to process an increased number of orders and provided them with tools to improve communication with their customers. Facing aggressive deadlines & heavy pressure we heavily relied on extreme programming and scrum. We exploited the possibilities of ASP.NET & SQL Server to the limit.

Of course, everything you write must be true. You will have already read on the many other resources about building a great CV that telling the truth is the golden rule.

The texts above have been invented for this article, but having worked on these with dozens of developers, it’s generally possible to get amazing descriptions just by thinking a bit. By extension, be sure to avoid giving unnecessary facts. By removing useless information, you free up some space to put what is relevant to your future employer.

Miscellaneous & hobbies

Knowing what is relevant is difficult and one area that is often overlooked is miscellaneous or hobbies. Too often, it is completely removed for the purpose of a clearer CV. I believe it is a mistake because it is a great opportunity to tell them a bit more about you and influence the decision to get you into an interview. It helps the recruiter to understand how the candidate manages his life but more importantly, it gives information on his soft skills. I will take two real life examples.

The first wrote “sports, computing & movies”. When you talk a bit more with him about that, you discover that he runs intensively and often competes in marathons. Marathons? Yeah, that guy knows what effort is doesn’t he? I also recommended that he mentioned what kind of movies. I bet it is sci-fi ones, and I bet it would interest many other recruiting developers 🙂

The second one had “scouting” in the hobbies he listed. After few questions I actually discovered he was a chief scout, managing dozens of kids every weekend and in summer camps. That’s someone I need in my team!
Which aspects of your personality do you need to say more about and which are important points for recruiters?  Ask yourself the question “what am I doing when I’m not programming?” and put everything you think would interest the recruiter. Don’t minimize your skills. Instead, put emphasis on them, while staying as humble as possible.


Your resume should demonstrate you are a problem solver and should avoid any indication that you are going to create problems. It’s a document that is supposed to sell yourself so there is no shame on putting emphasis on every good thing in you.

Summary of the tips:

  • The first page is the most important one. Polish it.
  • Use appropriate keywords, and highlighted when appropriate.
  • Fill the gaps with relevant information.
  • Anything that differentiates you from the lambda developer should be on the first page.
  • Write attractive experience descriptions focused on your problem solving abilities.
  • Don’t underestimate what you do outside programming. Use it to tell more about your capabilities and soft skills.


Incoming search terms:
  • software developer resume
  • Extratipsforsoftwaredeveloperresumedesign|MindfulHacker

How to choose a technology that has a future

As you build your career, you must make choices. One of the most difficult choices to make is in deciding which  technologies to invest in.  It is not unusual to see consultants who have invested years of their lives in a technology that will eventually be abandoned by the market or its designer. It is virtually impossible to predict the future at this level and the best strategy is to learn how to learn, and be a programmer, regardless of the technology or language. Above all it is always better to invest in things you enjoy doing.  On the other hand there are simple ways to get an idea of what is in demand right now and act accordingly. Simply check for the skills that companies are currently seeking. The law of supply and demand – get it?

One effective method to get answers is to go on large sites offering jobs such as jobserve.com. At the time of writing this post, joberve.com offers no less than 14.626 jobs in IT, just for the United Kingdom!  If you add other countries like the United States, France or Germany, the figure explodes.  The ideal is to use a site that is popular in your region or country.

Browsing the latest offers of employment will give you a pretty good idea of what is being sought. The more criteria you add, the more accurate will be your answer. So if you can only work in the London area, there is no need to search in San Francisco. It is pretty obvious, the nature of IT projects developed in these two cities can be very different.

This research can be tedious. Fortunately, another site that offers jobs provides a faster way to determine the technology application, but at some cost. This is Careers 2.0 by StackOverflow and has an amazing technology tag feature.

I was able to obtain figures in under 5 minutes using the following technique: I created a sheet in my favorite spreadsheet. I typed each tag that I found, one after the other – for the latest 25 bids only (1 page) initially. I then aggregated the occurrences and found myself with a list of technologies and the number of times each was mentioned overall. The following result is for the latest 25 or 50 job offers near London (occurrences are in % for comparison).

Tag occurences by technology

I compared 25 to 50 because it is well known that the more data you have, the more accurate the result you have. With the 25 latest job offers, I got a total of 120 tags, reduced to 56 after aggregation. When I took the latest 50 job offers, I got 235 tags reduced to 89 after aggregation. You can immediately see without having to do much calculation that the latest 25 job offers is more than sufficient.  Adding more offers did not change the result significantly,  keeping a satisfactory validity for our purpose: having some indication of what is in demand.

Now that we have our results for Careers 2.0, can we generalize them (external validity)?

Of course not!  And this is the main issue.  There is an obvious website bias involved.  Careers 2.0 provides us with a convenient way to test technologies thanks to their amazing tagging system, but companies posting on it are not representative.  It has only 83 job offers for the London area at the time of the test (12th of July 2012). Jobserve.com on the other hand has 8,657 jobs available for the same criteria.

Careers 2.0 is growing fast, so we can expect that in a few years it will be the reference for programmer’s job vacancies and will provide more accurate data.   For now, use them as an indication and nothing more. Until then, be sure to develop your ability to learn and give priority to technologies you love working with rather than just the ones that are currently in demand. Success almost guaranteed!

The 3 rules to quitting your job with style

Quitting your job can be very difficult.  Just the idea of announcing that you are leaving can be very stressful.  But leaving a company properly is also required to avoid any unwanted negative effect on your career. It can even boost it: every employer you leave is a potential sponsor.

This post will explain three rules to follow in order to avoid most of the troubles that you can encounter during the process. The outcome will depend on how you announce it, the feedback you give and the support you provide.

As usual, to know how to behave, you must put yourself in the other person’s shoes. You may know the feeling you get when you get fired. If your career is not long enough to have that kind of experience, you may remember how you felt when a loved one announced (s)he won’t continue the relationship with you. When an employee announces his departure, the employer can feel exactly the same.

So let’s look at it that way and imagine how you would prefer to be fired.

Announce it in person

You will certainly prefer to receive the letter from the hand of your boss rather than by a registered letter in the cold morning.

After you write a short resignation letter, book a meeting room with your manager. I don’t suggest you put every detail in the letter as this may be used against you or others. Since it is not required, I would avoid it completely.

Prepare in advance what you are going to say. Just like your letter, this has to be short too. The discussion that will emerge from your meeting can be lengthier of course, but the announcement itself should not be too long. Also be sure to prepare the announcement with a short introduction that will soften the effect a bit.

Give honest and personalized feedback

When you announce it, the most common question will be “why?”  You would probably appreciate some honest feedback on the reason(s) why your employer decided to end your contract. The feedback you give to your employer doesn’t have to be detailed and must be oriented to you, not him.

Example: if you decided to leave because they still work with an old programming language and you can’t do anything about it, don’t tell them it’s wrong, but simply say that you don’t feel comfortable with it. In fact, almost everything is personal; someone else might love to work with that language. Using the old programming language isn’t “wrong”, just less appropriate for you.

Here’s a few recommendations for the discussion:

  • be specific
  • put the emphasis on how you feel things, how it affected you
  • avoid any judgment on persons
  • don’t talk about problems that can’t be changed
  • be sure to have a neutral tone and avoid sarcasm or anger

Your feedback doesn’t have to be focused only on things that can be improved. It’s a very good opportunity to say what was great. Just like the reasons for leaving, prepare a list of what you really enjoyed at the company and be sure to talk about it during the last part of the discussion. It will soften the whole discussion.

Offer your full support

Leaving a company is not only a loss in resources, but also a source of potential problems. While your employer should have taken precautions to avoid trouble in such cases, you must ensure that you can provide the minimum support required for your former company and colleagues. Even if things didn’t go very well between you, you must stay professional.  Offer your support at the very end of the discussion. Be sincere but be sure to put some limits and don’t hesitate to say no if necessary.

Quitting a job is never easy and in almost all cases, feelings are hurt. It is very unlikely that you will never face this situation again in the future. You may be in the manager’s position one day and everything in this post also applies to employees being fired.


  • Announce it person
  • Give honest & personalized feedback (oriented to you)
  • Offer your full support


Why aren’t developers paid for the value they actually provide?

There are two main reasons. One is linked to the position in the hierarchy and the second one to the very common personality of programmers. You can’t change the former, however, you have more control than you think on the latter.

Most developers are positioned at the very bottom of the pyramid. This is fine: usually, nobody expects anything from you other than writing lines of code.  But many developers are providing much more value than the person just ahead of them, while generally having no possibility to earn more and be paid what they worth. The reason is that in our societies, we still think the salary is bound to the position in the hierarchy.  The analysts or project managers are higher in the hierarchy, so they should be paid more according to the rule.  The problem is easy to spot: position in the hierarchy in many cases is not directly related to the value you provide.

But why do many developers accept to be paid less than they worth? Developers and engineers in general tend to be introverted people. Introverts are often abused by extroverts. Some are aware of their value, but feel they have no control over their destiny, while others have been told since childhood that they worth less than others.  The former are convinced there is nothing they can do and the latter don’t know there is something to do at all. This leads to stagnation. Many extroverts are intuitively aware of that and use it heavily in their interactions with introverts. You need to take advantage of your introvert personality to survive in this world of extrovert people.

As a developer you are responsible for your current situation. If you are really paid less than you worth on the market, you need act on it.

Finally, I want to illustrate how this perverted system can sometimes work against itself.  Salary grades, for instance, can be very effective in many ways, but when poorly used and/or in strongly homogeneous companies (companies with lot of different skills involved), they can lead to very difficult situations for the employer. Below is the true story of one of my best friends.

My friend started as a programmer in a big hospital. Thanks to his hard work and dedication, he quickly became Oracle DBA, which was a critical position in a company where data is both sensitive and valuable.

The hospital worked with grades. Grades are bound to your position in the hierarchy, length of employment and diplomas. Salary increases were automatic and fixed in advance. In fact, he knew how much he would earn at every step of his career.

My friend got an offer to become DBA in another company that didn’t use salary grades. By accepting the offer, his salary could be increased a lot. Because he liked and respected the hospital he worked for, he decided to talk to the boss, asking for an increase. He just asked for what he was worth on the market.

The boss refused. It was impossible because of the grades and the unions would not let that happen.

My friend left.

The hospital eventually hired an external consultant (not bound to grades) and launched the recruitment process. The consultant did not know anything about the infrastructure in place, so his learning curve was huge. The hospital lost lots of money  training him.

The hospital carried on losing.  They could not fine a qualified employee to replace my friend and are still using the external consultant at 5 times what my friend asked for.

That was almost three years ago. My friend is still at his new place and climbing the hierarchy ladder very fast doing what he loves.

The hospital is still paying 5 times more.


How to determine your current market value

What you are worth as a developer is what the target market agrees to pay to have you on board.

What the market will pay fluctuates quickly, just like the financial markets, and can’t really be generalized, so websites with indicators can’t help further than giving you an indication. It may not be in sync with the value you can potentially provide because what the market agrees to pay you is generally subjective.

Knowing what you are worth on the market is an important bit of information you can get using the two proposed techniques below. One for freelancers and another one for employees and other permanent roles.

As a freelance developer, I was always asked by head hunters what was my current daily rate. At the beginning, I used to give a random number based on assumptions in the hope it would be accepted. I quickly noticed that it was always accepted… I deduced I was under market rate. I started to increase my daily rate by 50€ increments for each mission I was offered until I faced some resistance. Resistance is not a formal rebuttal by the head hunter but some sort indication that they want to negotiate. In order to prevent myself being abused by the wheeler dealer type of agents, I always stayed firm on my position refusing any reduction. The accepted daily rate was my current market value.

For permanent roles and employees, you can’t negotiate your salary upfront without doing actual interviews. Here is the process I actually used to fine tune my method and that works very well for employees:

  • Update your resume & post it on the two main job advertising sites in your location or profession. You don’t have to be concerned about the fact that your actual boss may find it. In most cases, it will reinforce your position. The hiring process is a painful and onerous process. If he asks you why you do it, tell him the truth.
  • Try to get at least 5 interviews and find out information on the proposed compensation package. Be sure to include everything: salary should not be your main focus.  Location of the company, nature of the project, work environment, alignment with your career objectives are also things you should consider.
  • Take an average of at least 3 offers that you get, that’s your current market value.
This last technique can be used by freelancers to adjust their estimation of market value. I often noticed that the market value you calculate using the first technique is always a little bit lower that your real market value. This is due to the fact that your market value for a first 3 months contract as a freelancer is lower than what you are worth at renewal date.   The hiring process for freelancer is also very painful and pricey, so it’s often very easy for a freelancer to negotiate a daily rate increase with the agent at that time.   The agent has no extra effort to do to get an additional 3 months commission, so they won’t risk having no commission at all by refusing to increase your daily rate a little.
Please note that this is true when the market is good.  When the market is bad, they have more choice and therefore they can replace you easily with someone else.  Knowing when you can negotiate or not is a skill you will get with time.

7 telecommuting tips for developers

Working from home or a private office is probably the future of knowledge age companies. It allows you to do away with commuting completely and to work in a quiet  and non (over) interrupted environment (if you decide to).  It’s the opposite of the open space office. The gain in productivity can be huge.  Both you and your (smart) boss are potential winners in the deal, not to mention the potential real estate saving for the latter.

Unfortunately, telecommuting is not for everyone though and this may be why it is not generalized yet despite the positive conclusions of the studies on the subject.  Procrastinators may find it very difficult stay as productive as they are at the office. You will also need lot of independence and self confidence.  Some employees may also suffer from isolation.

Procrastination and isolation are the two problems I will address in this post. Other problems related to telecommuting won’t be debated here such as:

  • security concerns,
  • the fact that telecommuters are less likely to be promoted (Kreitner & Kinicki, 2009),
  • potential loss of thrust by managers
  • communication problems with your team

Here are the 7 things I strongly suggest you to try.  I have experimented with this myself during the past 10 years. They provide some tips to help avoid both procrastination and isolation. Disclaimer: you may adapt them to your particular case and not take those empirical & personal observations as a generalization of what to do. I really encourage you to share your own experiences on the subject in the comments.


1. Use a schedule – as if you were in a formal office.

If you don’t do so, you will be tempted to work too much or too little, depending on your personality. Both are problematic long term. Having a fixed schedule will not only create some sort of rule to manage your time, but also help you beat procrastination.

One of the keys to beat procrastination is to have “starters” and avoid “retarders”.  If you like to do non work related stuff such as reading news or browse internet, reserve 30 minutes before and after your fixed work time for it.  When you feel the need to do it while you are into your work time, remember you will be able to do it after.  It usually calms down the need for it and after some some time, the addiction will disapear.  When you arrive at your work time schedule, close everything and start working. This can be hard the  first few (ten) times, then after a while the habit will kick in.

In order to avoid the frustration of having to leave off work in a middle of something, I try not to start debugging or another task that has unpredictable time duration at the end of the afternoon.

2. Replace commuting by physical excercises and meditation/relaxation.

Telecommuting will free up a lot of time, and you should take it as an opportunity to take care of yourself, and certainly not work more for the same salary. Consider taking up physical excercies and relaxation or meditation. It will improve your overall productivity and will contribute to reducing procrastination (Davis & Jones, 2007).

3. Take regular breaks

Since you don’t have your environment anymore to remind you it’s time to take a pause, use the pomodoro technique. I personnaly taking a break of 10 minutes every 45 minutes, but you may setup your own schedule. I use a special software for that called Workrave that I warmly recommend to you.

The pause can be either doing nothing (it’s what I do every other break) and free your mind or do stuff off your computer such as class papers or call a colleague.  In any case, this should occur in another room, and certainly not in front of a computer.  I personally do three minutes of mindfulness or simple observation of what is happening outside (simply being in the present moment).  Feel free to adapt this to what works best for you.

At noon, take a full break and don’t eat in front of your computer.  Some of you may enjoy some cooking time while others may be very relaxed by some time listening to music.

4. Put clear limits between work and your normal life.

This means you have a dedicated office/room you don’t use for your pleasure but only work.  This is very important especially if you have kids.  Your office should not be used to anything else than working. This also means:

  • don’t work on your laptop when you are watching a movie with your family
  • avoid any professional activities during the weekend
  • remove all work thinking and be 100% mentally available for your well beloved

5. Go to lunch outside.

< Isolation is the other major inconvenience to combat if you are affected by it. To avoid isolation a great solution is to integrate a social lunch with others. Try to do this at least once a week.  Even if not with someone else, try to go outside at noon somewhere there are other people.  Why not with other telecommuters?

6. Do co-working.

Co-working is the new trend that involves a shared working environment for people even if they have independent activity. It feels like your office, but it’s not. To make this work, the co-work area must be close to your home.

7. Don’t telecommute every work day.

If you telecommute every work day, you will progressively become more and more disconnected from your company’s culture and people.  It’s inevitable and it will happen.  Be sure to dedicate one or two days on site.  When on site, go to lunch with your colleagues.