The Five Stages of Interviewing Offshore Software Engineers

The following describes some techniques that I use when interviewing candidates for Software Engineering positions in offshore locations. I have brought these techniques together into five stages:

  1. Logic and Problem Solving Ability
  2. Computing Knowledge
  3. Specific Skills
  4. Spoken and Written English Ability
  5. Communication Skills and Personality

1. Logic and Problem Solving Ability

When I first started out interviewing offshore software engineering candidates in Malaysia, I wasted a lot of time looking at their CVs and using those as the basis for the first stages of interviews. This resulted in the candidates doing a lot of talking about projects they (claimed) they had done and skills they (thought) they had before I even started measuring their technical ability. Some CVs looked very impressive indeed, their authors claiming almost endless lists of skills acquired, many to “advanced” standards. Now, back in the UK, for the most part when talking about highly skilled jobs there is an unspoken rule when it comes to CVs, candidates only listing skills that are really worth listing and certainly being prepared to back up any claims of “advanced” levels of proficiency in any of those claimed skills. It is no surprise that upon receiving such impressive CVs in Malaysia I assumed the candidates were very high quality indeed and decided that the first hour of the interview should be about them talking about their experience (to help them relax into the interview) and me doing a bit of a sell on the role and company. Only after that would we dive into the technical questions, which looked like they would a breeze for them. Unfortunately, the aforementioned CV “rule” that applies in the UK does not apply in Malaysia, nor does it at any other offshore location that I have interviewed candidates from thus far. I could therefore quite easily waste the first hour of an interview talking to a candidate about their CV, and perhaps spending some time talking about the role and the company, before even thinking about getting their hands dirty with some technical questions. When the technical phase began, many candidates were turned down because it quickly became apparent that the person I had talked to for the previous hour or so was not the person who was on the piece of paper (the CV) in front of me; they had exaggerated wildly and in some cases blatantly lied on their CV.

When only recruiting for one or two positions, wasting an hour here and there talking to a candidate who has deliberately fabricated their CV is not a big deal. Indeed, many candidates I talked to were truthful and I subsequently hired them. However, when recruiting on a larger scale offshore, the numbers go against you and such an approach can be hugely inefficient. Given that I was recruiting on a larger scale, I had to find a way to determine as quickly as possible if a candidate I was interviewing was worth talking to further. I therefore put aside their CVs and piles of certificates and jumped straight into a bunch of logic and problem solving activities (which involve writing code) on the whiteboard; I was quietly amazed with the results.

The questions were short and simple, often programmatic, such as:

  1. Using the language of your choice (or even pseudocode for junior candidates), write a function to reverse a string.
  2. Using the language of your choice (or even pseudocode for junior candidates), write a function that prints all the prime numbers from 1 to n.

At the very start of the interview, before asking these questions, I would I often ask a candidate to rate themselves, 1-10 (1 being beginner, 10 being advanced), in each of the programming languages they listed on their CV, quite a few responding confidently that they were 8,9, 10′s in languages such as C and Java. I would record these ratings on the whiteboard, in view of the candidate, for later reference. I then asked the candidate to complete questions similar to (1) and (2) on the whiteboard in front of me. The key with the questions is that I emphasise to the candidates that they are to choose which language they want to use when writing the solution to the problem, thus removing any potential for them to claim they struggled with the question due to a particular language being imposed on them. Furthermore, I am happy for them to use pseudocode / English if they are unable to code the solution (though that in itself will tell me something about the ability of the candidate and will set alarm bells off if they are applying for a more senior position). Based on the candidate’s solution to problems such as these, it doesn’t take long to establish if they are worth interviewing further for the role in question. We are talking minutes. For example, I still vividly remember an already very senior candidate C developer who had worked in the USA as an embedded engineer and was now back in Malaysia working on C code related to aviation systems. He applied for one of my senior software engineer jobs in Malaysia. On paper, he looked fantastic – good degree, strong background and the right skills. To my surprise, he struggled to reverse a string in his language of choice, C, for which he had rated himself as a 9 when asked at the start of the interview (and which I wrote on the board). I don’t mean he got one or two statements wrong due to not remembering syntax, I mean he completely could not reverse a string as per question (1) above. After far too much guidance from me, eventually we got there. Thinking he was nervous, I then gave him the prime numbers question (2) as above. After some initial explanation from me as to what a prime number was (he did know it in the end, perhaps he forgot) he had no idea where to go and just wrote drivel on the board, continually wiping it out, puzzling his forehead and writing yet more drivel. He looked embarrassed. I stopped it there and asked him what he now thought his ranking was in C. I could see the look of torment on his face, like he still wanted to stick with his original answer. “5 or 6, perhaps?”, he reluctantly admitted. Based on his claimed level of experience and the level job he was applying for in Malaysia, I had no further questions. Although I did not set a timer off, I would be surprised if the whole thing lasted 15 minutes.

I now never start an interview without asking similar questions to the above in the opening 15-30 minutes, no matter what the level of software engineer I am interviewing for. Candidates do not proceed to other stages without first getting past this stage. The level of role will merely determine how much leeway I give for incorrect answers. For example, for a very junior position, what I will look for is not necessarily the right answer, but how the candidate thinks about the solution. At the very least, they should be able to describe to me how their algorithm could solve the problem. In my view, even for such a junior candidate, if somebody has been through university, done a Computer Science degree, and cannot even explain how to reverse a string or does not know what a prime number is, they probably shouldn’t work for me. Likewise, if somebody has been working for 10 years and cannot reverse a string in the language of their choice, they definitely shouldn’t be working for me. Importantly, very importantly, no matter what the level of the candidate is, I ensure that they never guess the solution to my problems and try to bluff their way to an answer, talking about it as if it’s the right answer to impress me. Anybody that has worked for me will know that I hate guessing in software engineering. A candidate who is willing to guess and try to bluff their way through an interview is likely to do the same when they are working on a task for me or someone else. For example, they may, not understanding a problem thoroughly enough and hence guessing, go off and write reams of code that they are equally unsure of. I always tell my staff that if they are unsure of the work they are doing, to stop what they are doing and come and see the team leader or me to discuss; never guess. So, I always jump onto any evidence of guessing during this stage and find out why the candidate is doing it.

One other point worth mentioning about the questioning techniques I describe above is that that are easy to conduct with candidates that are remote, as long as they have a computer and Internet connection. For example, I have interviewed candidates in completely different countries by setting up a shared whiteboard session (many Internet communications tools offer such a facility) or a shared Google Doc and asking them to type the solution to the problem while we talk over the phone. Arguably, given that we are not in the same room they could cheat by looking up solutions on the Internet, but since I do not allow much time for the questions and I am also on the phone at the time, this is unlikely. Furthermore, I take steps to search for any solutions to the problems I ask online and ensure they did not merely type out one of those. That said, even if I am suspicious that they copied a certain solution, it is trivial for me to build upon their solution and ask them to modify it to solve a related problem. Use of this technique has allowed me to screen many remote candidates before inviting them to travel to my place of work for an interview.

To summarise, my advice when interviewing offshore candidates is to get a quick handle on their Logic and Problem Solving ability before deciding whether or not to move on to talk about their experience and the role. Spend up to 30 minutes doing this and give them a fair chance to answer a range of questions, not just a single question. Make sure the questions involve actually writing code, but ensure the questions allow flexibility in the languages used unless the role you are recruiting for is a senior role that uses primarily mandates use of a specific language. By all means ask further Logic and Problem Solving questions in later stages, but the key of this stage is to provide a quick “Go” or “No Go” on a given candidate.

2. Computing Knowledge

Although I know of a number examples of colleagues that neither studied Computer Science at degree level nor had any knowledge of computers who went on to become exceptional software engineers during their career, when I interview offshore candidates I do look for general Computing Knowledge; so many aspects of the work, at least in my experience, that software engineers do every day depends upon a having a solid foundation in the principles of computing. Perhaps more obviously to me, I believe it to be of great advantage if a candidate has a genuine interest in computers and understands how they are work. More often than not, such candidates will have interacted with computers regularly as they were growing up, perhaps taking them apart, making modifications, playing games, configuring networks and suchlike. I always keep a lookout for these candidates and they certainly exist in offshore locations such as Malaysia.

A simple way to determine how much a candidate knows about computers is ask them to draw a diagram of a computer on a whiteboard, asking them to label the various components of the system. Then ask them to describe the function of these components. It’s a simple question and how well they perform at this question will give me an idea of how much they know about computing. If they do well at the question, perhaps I’ll throw in some more challenging questions about the hardware or maybe we’ll move onto software such as talking about how a compiler works, or perhaps we’ll talk about fundamental algorithms. The level of questions I ask depends on the seniority of the role being applied for, but I nearly always begin with a question about a computer. This exercise, since it is mainly on the whiteboard, also gives me a further opportunity, following the Logic and Problem Solving stage, to assess the candidate’s communication skills.

When I was at Nottingham University in the UK reading for my degree in Computer Science, I was surrounded by people like me, people who loved computers and who “messed around” with them on a regular basis, just for the fun of it. In my view, people like this need to be looked out for, so I nearly always ask offshore candidates why they are pursuing a career in software engineering and try to find out how interested they are in computers.

My advice, therefore, when looking for offshore candidates is to look for those that have a genuine interest in computers, who possess a good understanding of their inner workings and who can answer typical computer science type questions with ease. Try to establish how good they are in this area before you move on to specific skills, as that stage will most likely require significantly more time and involve people other than yourself if you are the hiring manager.

3. Specific Skills

By this stage, following the previous two stages, which just involved me and the candidate, I will now have a pretty good “gut feel” on the candidate’s suitability for the role. After a little more talk about their experience and profile (including talk about software development processes etc), as well as some more talk from me about the role and company, now is the time to get other people involved and start assessing specific skills. I normally involve at least two of my software engineering subordinates in the skills assessment stage, as well as at least one other people manager. If the candidate will have any dealings with the core team (most likely), I will also include engineers and managers from the core team offices e.g. in the UK or US. All are free to ask any questions they like and their views hold considerable weight in my decision-making process. After all, software development is very much a team sport and it is important to me that my team buys into the idea of a given candidate joining their team; they are the ones that will be working with them day-to-day. I therefore allow to several hours of talks with these various stakeholders, either on the same day or on alternative days if time does not permit. Some of these talks, if with overseas colleagues, take place via telephone, Skype, or suchlike.

I then usually finish off the skills assessment stage by giving them one or more online tests on relevant topics. I use a reputable supplier of such tests. Although these tests do help me form a view of a given candidate’s skills, I normally give them far less weight than the opinions of my subordinates and other colleagues. In most cases, their ability to establish if a candidate can do the job far outweighs the results of these online tests, but it’s all about forming a total picture of a candidate.

To summarise this stage, my advice about specific skills is to get as many technical and managerial people involved in the interview process as you can, including those from core teams if applicable. Meet up /discuss after all interviews are finished and come to a conclusion as a team, each giving a “thumbs up” or “thumbs down”. Also use online testing tools to further assess specific skills, but use their results with caution.

4. Spoken and Written English Ability

For pretty much any native English-speaking business that is to interact with an offshore software development team that, most likely, speaks English as a second language, proficiency in spoken and written English is paramount. A given offshore software engineer may be a good programmer, but if they cannot communicate with colleagues in the main country where the business operates it will cause a new set of problems focused around communication. I remember back to around 2003 when one of my friends in the UK, who at the time was dealing with a computer equipment supplier in Taiwan, wrote them a technical question about their firmware code. Although I do not remember the precise question he asked, which was in an email, it was very open-ended, something to the effect of “Could you please describe the function of this firmware module in more detail”. The answer he received, much to the amusement of all of the colleagues that were within his proximity at the time, was “Yes.”. In Malaysia, where I currently run my business, English is spoken and written rather well as a second language. However, not all candidates that I have interviewed have had a strong command of the English language, largely down to the area in which they grew up and the schools and colleges that they attended. Conference calls with such candidates, or email exchanges, or document write-ups, would be very difficult indeed. I always, therefore, assess spoken and written English skills during an interview. The spoken part is trivial as the candidate, based on the previous three stages, will have talked to a number of my colleagues in addition to myself, so we can form an opinion on their working knowledge of English. For the written part, I did not used to spend much time investigating this if they spoke English well. However, one of my subordinates at the time once suggested to me that we have candidates write a short document on a non-technical subject that pretty much any candidate would be able to write about. For example, the topic to write about in English could be “Describe the person you most admire in the world and why”. This is the kind of topic anybody should be able to write about, no matter what their career experience and technical background is. Some people may write about a great leader or scientist that they admire. Some may write about one of their parents or relatives. That is the beauty of such an open-ended question. I therefore now include this type of exercise wherever possible when interviewing an offshore candidate to assess their written English skills.

In summary, my advice for this stage is to realise the importance that spoken and written English ability play in offshore development scenarios This may sound obvious but it is something that can be overlooked in all the drama of assessing specific programming skills etc. In particular, written English ability can be easily overlooked if the candidate sounds like they can speak reasonably good English. Ultimately, failing to properly assess the written, as well as spoken,English skills of offshore candidates may place unnecessary burdens on the core team, who will end up losing time and getting frustrated in the process. To assess English skills, first of all ensure that all interviewers involved in the process take note the candidate’s spoken English ability, particularly those conducting in-depth assessments of skills (for example, how well does the candidate articulate about a certain technical topic?). To assess written English skills, one trivial technique is to give the candidates a simple written English exercise that is open-ended and non-technical. Any native English speaker will be able to read their answer and quickly determine how good their written English skills are.

5. Communication Skills and Personality

In software development, given that it can be thought of in the context of a team sport, communication skills and personality traits naturally come into play. Assessing communication skills and personality traits is not something I leave until the end. In fact, it is something that is done in almost all of the stages prior to this. By this stage, I certainly have a good handle on a candidate’s communication skills; this stage merely completes the process and considers Communication and Personality separately from the other stages. One of the things I like do in this stage, which I feel is quite important, is invite the candidate out to lunch with my team. This provides a relaxed atmosphere in which to talk about both work and non-work related topics, and is an opportunity for the team to further gain confidence in and acceptance of the candidate. It certainly gives a good picture of how a potential candidate will fit into the team. Likewise, it allows the candidate to chat with many members of the team and ask questions about life in the company, the type of work being done, and suchlike, so it is a beneficial process for them too.

On our return to the office after lunch, I have a final session with the candidate to ask them more communication and personality related questions. I am not a fan of psychometric assessments or suchlike, so I keep it verbal and rather informal, but the types of questions I ask are all about ascertaining if the candidate could fit into the offshore team as well as work with the core team. In addition to further discussing the role, I would perhaps ask fairly open questions like “What would you do if somebody modified your code and broke an area of functionality that you had implemented?” Or, “How would you react if the team leader insisted that you used their approach instead of yours?” Or, “What’s your view on coding standards?” The answers to these types of questions can indicate personality traits that may be disruptive in a team environment and may need further investigation before making an offer. In some cases, for more senior positions, I give them a piece of code and ask them to review it, observing how they go about the process and what kind of issues they find. This is not really about the skill in conducting a review (we’ve already assessed skills), but more about how they communicate with me. I also like to ask questions about testing. A good software engineer knows how to test code that they write, and explaining this is an exercise in communication.

One final exercise I give them to demonstrate their communication skills is another whiteboard exercise. For example, I may ask the candidate to map out their career plans onto the whiteboard. This not only allows me to see how driven the candidate is with respect to their own career, but also shows me how good they are at presenting information to an audience. Another similar question I could do on the whiteboard is to ask them to describe a software development process that they claim to know about.

With the notes I make in this stage, together with the notes from all of the stakeholder that interviewed the candidate, I am now able to conclude if the candidate has the necessary Communication Skills and Personality traits that would make them a likely fit for the role they are applying for.

After a final discussion with the team and those that interviewed the candidate, I am now ready to decide whether or not an offer is to be made.

To conclude, these are the stages I go through when interviewing offshore software engineers. I should also point out that I have adapted the above stages quite easily to cater for interviews with other types of offshore candidates, for example Software Test Engineers.

Vitamins – Nutrition Supplements

Since the 1970′s, nutritional science discoveries have played an important role in determining nutritional value availability in our food supply. These discoveries have also influenced various agri-industry farming practices and production processes as well as allowed unique information on the bio-availability of naturally occurring vitamins and minerals and what steps humans should take in supplementing their diets.

Even with this readily available information most people still are not getting the proper nutrients in their daily diets and must take daily nutritional supplements to meet their age and gender specific allotment as per RDA (Recommended Daily Allowance) guidelines.

Nutrient dense superfoods such as soy, dry beans, fish, low-fat dairy products, and whole grains, should be consumed as a regular part of weekly nutrition intake. Energy-dense foods that are poor nutrition are high in sugar and fat and include processed lunch meats, pastries, refined white breads, pasta, cheeses, ice cream, candy, soda, potato chips and corn chips should be reduced or avoided completely. In other words, leave out the junk food.

Supplementing the diet with vitamins/nutrition supplements in the correct quantities reduces the risk of vitamin deficiencies. That alone can assist in reducing the need to eat copious quantities of food due to the constant feeling of hunger for those that are over-weight. Constant cravings for particular foods can be an indicator of a specific mineral deficiency and thereby the need to augment your nutrition intake with proper vitamin supplements and boost consumption to recommended daily requirements.

A good multivitamin is the foundation of health and nutrition supplement regime. But how do you determine what is good? Look at scientific reviews of many of the popular brands for factors such as ingredients, quality level, and overall nutritional value. Reviewing the labels and product comparisons is essential in determining high quality multivitamins and how they will assist in boosting the building blocks of your immune, digestive, and cognitive systems.

Many people incorrectly assume that since they feel great, they don’t need to take daily supplements. However, your body may be deficient in some vital areas of nutrition and you may not know it. Potential problems can be identified early and appropriate measures can be taken to prevent health issues later in life- before permanent damage has already been done from nutritional deficiencies. Proper health maintenance is important to our longevity and vitality.

While vitamin supplements are essential to healthy living, not all supplements are right for all people. It is important to educate yourself on gender and age specific needs. Determine which supplements are missing from your daily intake and the desired benefits you are looking to achieve. Educating yourself to determine the vitamin/nutrition supplements for your specific needs will help you make better choices as you strive to live a healthier life.

E-Commerce – The Big Market For Everybody

E Commerce, a term that is almost on everybody’s lips these days irrespective of the fact whether they know what it is exactly or how it works. So what is E Commerce?

At it’s most simplistic level; eCommerce is simply the buying and selling of goods, services or information via the World Wide Web, email or other pathways on the Internet. To be very clear lets say you are in the mood of shopping today and you switch on your PC, connect to internet and open the homepage of a website and browse for the product you are looking for. If you happen to find something you wish to buy, you pay for it online, no traffic, no hustle bustle of the market nothing. You did it all by sitting in front of your PC. Electronic commerce or e-commerce consists of the buying, selling, marketing, and servicing of products or services over computer networks.

According to Forrester Research (as cited in Kessler, 2003), electronic commerce generated sales worth US $12.2 billion in 2003. The meaning of e-commerce changed with time from commercial transactions electronically to the purchase of goods and services over the World Wide Web via secure servers (SSL communications) with e-shopping carts and with electronic pay services, like credit card payment authorizations, more precisely termed Web-Commerce.

E-commerce from its humble starting in early nineties in US, has gained acceptance among both the buyers and the sellers. So what factors led to this where both the buyer and seller is pervasive and so is the commodity and yet it gets delivered.

For an e-commerce venture to be successful foremost attention must be paid to the product suitability factor. Certain products like perishable commodities may not be a suitable commodity for an e-com venture where as music and movies are. Examples of this type of company include Schwab, Google, eBay, Paypal, Egghead, and Morpheus. A factor for success in this venture consists of providing customers with exact, reliable information on the goods and services. Since there is no direct contact between the buyer and the seller, a lot of importance is paid on the trust factor.

Ecommerce and E-business are interchangeable terms. So what you call a shopping mall has been replaced by a website now hence one can say a website is the most important part of E-Business. There are a few factors one need to keep in mind while developing such a website. The first thing is online credit card transactions. In order to not to miss many important and profit making sales one should implement some form of online credit card processing. Since web site acts as the storefront for the products and services, you wish to sell online. Your site visitors are, for the most part, window shoppers and browsers. A commercial web site’s aim is to convert these browsers into buyers. The website should be designed in such an attractive way that it can earn you buyers .The site should be easily navigable. Plenty of necessary info should be available on the homepage itself. Use good quality images to give the buyer the feel of the product because one of the major hurdles in this business is this feeling of not being able to touch and feel the product.

Let’s look into the factors for which e-commerce segment has only few survivors:

Lack of market research:

One major reason is failure to understand customers, why they buy and how they buy.

Even a product with a sound value proposition can fail if producers and retailers do not understand customer habits, expectations, and motivations.

Competitive Situation:

Sometimes investors lack to judge and utilize the complete edge in the market although they have a sound e-business model in place. The classic example in this is Amazon.com, which had a classic e-books site but is yet to see major profit.

Logistics Issue:

Logistics is a major factor since they must match up with the claims of the seller or else leads to customer dissatisfaction. Most of the e-commerce venture failed because they did not have a good delivery system in place to match up there claims.

Failure to obtain employee commitment:

If planners do not explain their strategy well to employees, or fail to give employees the whole picture, then training and setting up incentives for workers to embrace the strategy may assist. Even if the transaction is on the internet, the employees run the show.

Several reasons might account for the slow uptake, including:

Concerns about security:

Many people will not use credit cards over the Internet due to concerns about theft and fraud.

Lack of instant gratification with most e-purchases (non-digital purchases):

Much of a consumer’s reward for purchasing a product lies in the instant gratification of using and displaying that product. This reward does not exist when one’s purchase does not arrive for days or weeks.

The problem of access to web commerce:

The problem persists in particularly for poor households and for developing countries. Low penetration rates of Internet access in some sectors greatly reduce the potential for e-commerce.

The social aspect of shopping:

Some people enjoy talking to sales staff, to other shoppers, or to their cohorts: this social reward side of retail therapy does not exist to the same extent in online shopping.

E-commerce is a concept that is here to stay but a lot of things must be put in order so that it can finally change the idea of consumerism. Profitability may have to wait for the achievement of market share.