Wednesday, August 27, 2008

The nine reasons why people quit their jobs

Did you ever quit your job for another one? Do you know someone who did that? Are you thinking of quitting your current job? I'm sure that "YES" is the answer of at least one of the previous three questions. The next question is "WHY". Why did you quit your job? Why did the person you know quit his/her job? Why are you considering quitting your job? Now the answer to those questions would differ from one person to the other, and I've heard a lot of different answers. One of the things I hate is when the person you ask begins his answer to why (s)he's quitting with "a lot of reasons". I believe that there can't be a lot of reasons, because IMHO, there can only be the maximum of nine reasons.

This article is not a top ten reasons (or a top nine reasons in our case) of why people quit their jobs. This article is about what I believe to be the nine, and the only nine, reasons of why people quit their jobs to go work in another company in the same field.

Before we start stating the nine reasons, let me state the intended audience of this article, and why those are the ones I'm targeting:

  1. HR people: I'm targeting those people since they can conduct a list of questions for exit and entry interviews, so that they can know exactly why people leave their jobs, categorize the answers into the nine reasons, calculate the percentages and weights of each reason and see where are the weaknesses and strengths of their company, so that they can try to do something to improve the company.
  2. People considering leaving their jobs: You have to categorize the reasons that make you leave your job, prioritize the nine reasons/aspects according to your needs, give them weights and do the math. Some people leave because they got sick of something, and go to place far worse than where they've been just because they got a little bit too emotional, or because they were more subjective than objective. Remember to do the math, and leave for the right reasons.
  3. Normal employees who are not considering to quit: Are you sure that you don't want to leave? Remember the grass is always greener on the other side of the fence (your neighbor's backyard :-P). Just kidding, but seriously, even if you are satisfied with where you're working, you have to do the math, at least to know what makes you so happy. Prioritize the nine reasons according to your current needs, give them weights, give scores to your company for each of the nine reasons, and see if the score is good or not. Some people are satisfied with jobs that really suck, just because they either don't know what's on the other side of the fence, or because they're afraid that their neighbor has a dog in his backyard (that's a metaphor for being afraid of taking the risk, if you haven't already got that).
I will not be talking about career change, since HR cannot convince an accountant who wants to leave to be a professional ballerina to stay. If I go into this, this will just be some useless blabbing. I'll just give it an honorable mention at the end of this post. Now let's start with the reasons:
  1. Financials: Let's face it, we all work for the money. Yeah most people try to work in a field they enjoy, but we work to pay the bills and feed ourselves and our children. When I say financials, I do not just mean the salary. Other things add up on the salary, like bonuses and the possibility of traveling a lot with a good travel allowance. A lot of people might leave a perfectly good job for another one that pays more. Those people might either have a lot of bills to pay, or maybe they're just leaving because they feel that they're being underpaid in relation to the market, even if they're not in need for the money. This situation might be really stressful to a lot of people, because they feel that they are not given what they deserve.
  2. Position: Titles are really important. First of all, your title decides your salary range. Secondly, it gives you prestige. Each of us wants to be something, and the title gives you a part of that. In the first company I worked in, there was no career path, and there were no defined titles, so both the youngest and the eldest people in the department (except for department managers and project managers) were both developers. Being a senior or a junior was highly subjective. Finally, after a lot of complaints, the company created a team (which I was proudly a part of), to create a defined career path. Well, let having a career path aside, even if there is a defined career path, some people leave their jobs to go to a job at a higher position, even if it's in a smaller company and, believe it or not, a smaller pay. They regard this as an opportunity to get the higher title, which will be their key pass to a yet better job with this higher title at a bigger company. One final point, some people might leave their job for the same position at another company where there is a higher potential for the promotion.
  3. Technical Experience: When Ed Burns asked Rod Johnson and Chris Wilson (in the interviews in Secrets of the Rockstar Programmers) about when its time to change jobs they both had similar answers. It's time to change jobs when you are not learning anything new. Similar answers were given by others in different ways. What I mean by technical experience is the experience with the tools, frameworks, syntax, etc.
  4. Professional Experience: What I mean by professional experience is soft skills, managerial skills and other professional skills like software engineering practices. Some people might leave their jobs for another one where they would increase their experience in those professional areas. Professional experience might be more important than technical experience for some people. Gaining managerial and leadership skills would surely help you get promoted and direct you into the managerial path (project manager, department manager, CEO), while technical experience will get you promoted and direct you into the technical path (architect, senior architect, CTO).
  5. Business Experience: This is an important one. Knowing the business of the telecommunication field, banking, brokerage, etc. is really helpful. You might turn into an independent consultant for such companies. Gaining experience in a certain field is the most important thing in a job at a certain time, which might get someone to leave his job to go to another one where he would gain that experience. For most people it is not that extreme, but a lot of people would like to get some business experience along with the other two types of experience.
  6. Workload: This differs a lot from one person to the other. some people hate the high workload, while other are real workaholics. Generally speaking, most people hate being overloaded, and in the same time, they hate being idle. I have seen five people from the same department quit their jobs at the same time when their project was over, and the planning for the next phase was taking a really long time. Those people felt that they were idle, and hated that. On the other hand, a lot of people quit when they find themselves working an average of fifteen hours a day for really long periods. People really need their work-life balance to be maintained.
  7. Stability: When a company is not stable, you tend to find a lot of people leaving it for their sense of insecurity, but this is not the only meaning of instability. I have seen a company that didn't have a real financial crisis, but the pay date was always a surprise. The problem was that the financial department was in KSA, while the development team was in Egypt, and salaries were sent on monthly basis. Since sometimes the financial team would like to depend on an amount of money that should be collected from a client, salaries would be delayed, sometimes for more than 15 day. Sometimes, people received their salaries before the pay day. This inconsistency/instability was really bad, and it was the main reason I left that company. The sense of insecurity that the company may fail, or that you might not be able to get your next paycheck to pay your bills might be the strongest reason why you might leave a specific company.
  8. Environment: A lot of things go under this category, from the quality of tea and coffee in the company kitchen/buffet, to the way your manager treats you. The team spirit, flexible hours, company facilities and management appreciation are all parts of the environment, and believe it or not, it's one of the biggest reasons people leave their jobs (especially regarding management appreciation and how the boss treats his employees).
  9. Benefits: The benefits system of the company is also one very important aspect that may change your mind about the place you want to go. Health insurance, discounts at selected shops/service providers, pension plans, numbers of vacation days per year, etc. are core parts of the package. I worked in a company that arranged one or two trips annually for employees at really great rates, and employees paid the expenses of the trip in six months, which is a great benefit for those who love to travel.
Those were the nine reasons that are, IMHO, the only ones that may make someone quit his job for another one. Any other reason would be either a special case of one of those nine reasons, or a combination of a subset of them. For example, you might see someone who wants to leave the company, because he needs to be in a place where he can innovate. I believe that innovation has environment, benefits and workload aspects. Some environments encourage innovation, while others don't. When a company allows you to spend some of your time that you get paid for in innovation, this guarantees that your workload will not be increased if you need to innovate, while in the same time, it is clearly a part of the benefits system in the company, since you can do something that you love in the company's time.

Another example is that when some people tell you that they're leaving their job because they live away from where they work, and they need to work somewhere which is near their homes. This has both workload and financial aspects. The time you spend going to work and coming back home is added to the number of hours that are not a part of your personal life, hence, in an indirect method affects your work load. As for the financial part, the money you spend on gas, or transportation is a part deducted from your paycheck. If a company provides buses, this would certainly affect the financial part. Additionally, if the company is flexible enough to allow you to do a part of your job while in the bus, this would surely reduce your workload.

The examples are endless, but I think that this was enough for now. The last two points I would like to tackle are career change, and a tenth very special reason for quitting a job. People change their careers for several reasons, where most of the nine reasons are included (moving to a field that pays more, or has a higher potential, etc). A reason for a career change that's not in the nine reasons is that the person might not feel comfortable in the field he/she is working in. This is something that cannot be discussed in a rational manner. You cannot convince someone to love accounting more than dentistry. This is just a matter of a personal taste, and the only way to deal with such cases is to stress on the strong aspects (from the nine reasons) of the field this person is working in compared to the weak ones to the field he/she wants to leave for, and to try to explain the risk of starting a new career from the very beginning of the career path of that field, compared to continuing in his/her current path.

Finally, the tenth very special reason that I didn't include is when a woman quits her job to give more time for her children. I believe that this is a special case of a career change, where the woman changes her career from being a professional engineer for example to being a professional mother. It also has the workload aspect, since she needs more time for her personal life, i.e. less workload. Some companies partially solved this problem by opening in-house nurseries for employees' children. This reason is similar to the cases where someone quits because he/she needs to relocate to be near his sick mother for example. Some companies can solve such cases partially by being flexible enough to accept a large portion of the work to be done from home.

I hope I covered the subject well enough. If you have any reason that you think that it isn't a special case of the nine reasons, and not a combination of a subset, please tell me so that I can enhance this article further. I know that it has bean a really long read, and I hope that it was worth your precious time.

Tuesday, August 26, 2008

Rights issue

Yesterday, I did a small search on Google to see how my blog is doing. I was searching for my ACEGI article, and I found that it made the second result on Google, and that was great. I looked at the first result, and to my surprise, it was my article, but on another blog. No, this was not a link to my article, it was THE ARTICLE. I did not put it there, and no one asked me if they would have used it. At least the article was signed by "By Nassef", but that's just my last name. If you google that, I will not show up in the top results at all. They didn't ask my permission to use the article, they didn't put a link to my blog and they didn't even put my full name. I wrote a comment stating that I was mad at the action, even though that I was flattered that the article was good enough to be referenced and used by other people. They did not have the decency of showing up my comment. All they did was to make my last name "Nassef" signing the article as hyperlink to my blog, which shows that they are not really bad people, but what about my comment? Why didn't it show up? Why didn't I receive an apology, by mail at least? Isn't this the decent thing to do? Anyway, I'm both glad that the article was good enough to be used as reference, but I'm really disappointed due to the fact that I had to discover that my article was on another blog for about a year now without a clear reference to me.

Saturday, August 23, 2008

A facelift for my blog

Yeah, it really needed the redesign. I really got sick by the dark theme, and I really wanted a three column design. Anyway, I'm happier with this new design, and I'm planning to be writing some really interesting articles in the really near future, so be prepared ;).

Wednesday, May 7, 2008

Problem with Apache's Axis2 1.4 Download

Version 1.4 of Axis2 was released five days ago. I was trying to download it, but I'm getting an internal server error when I try to get to the download page of version 1.4. I sent an email to the webmaster, but until they get that fixed, you can download it from any mirror. Well, I'm currently downloading it from http://apache.hoxt.com/ws/axis2/1_4/. Thought you'd like to know, in case you want to download it and face the same problem.

EDIT 8 May 2008:
Download link in apache website now working

Tuesday, May 6, 2008

Bubble Wrap, Hani Suleiman and Logging Abstraction

Let's imagine that you are in an antique shop and a beautiful vase or a statue caught your eye and you thought of buying it, either for yourself or as a gift for a friend. You look at the price tag, and you find that it has a reasonable price. You compare it with the other antiques in the shop, and you decide that this is the one that you want.

You then call for the sales person to take the antique (let's just say that it's a vase) that you chose to the cashier, where you go to pay for it, and to, more importantly, choose the box! Why a box? And why is it that important?

Well, imagine going home with this vase un-boxed. The risk of it shattering, or at least getting a part chipped off is quiet high, and you wouldn't like this to happen, would you? Boxing is very important for reducing the risk of your vase getting broken or chipped off. But there's one more thing. The vase you chose is an antique hand made vase. It did not come out of a production line that produces thousands of replicas. It is one of a kind, handcrafted by a craftsman somewhere in the world, so it does not have a box specifically made for it with an image of the vase printed on it. You'll have to choose a box that will suit your needs. You can choose a fancy looking box if this is going to be wrapped as a gift, or you can choose a cheap box if you just want to take the vase home, and don't care about the box. The box can be made out of paper, cardboard or wood. You have the freedom of choice, and you have a really large variety to choose from, because this antique shop has got everything.

So, you choose a box that suites your needs, and now everything is OK, right? No, it's not OK. If the vase does not fit the box exactly, then you'll be facing some trouble, because the vase might break inside the box after banging to the walls of it a several times. Even if it's a perfect fit, you still have a problem. What if you decide to buy a cheap ugly looking wooden box, that is a perfect fit, but after going home, you remember that your best friends birthday is next week, you didn't get him/her a gift, and this vase matches his/her taste exactly. You'll certainly need to get a new fancy box for the occasion instead of the cheap ugly one. What will you be doing then?

Cushioning is the answer. Foam peanuts, styrofoam and bubble wrap are all great ways to cushion your valuable vase in the box that suites your needs. If you'd ever need to change boxes, there will be no problem, since you can wrap your vase in bubble wrap, and you're done. After all, this is what bubble wrap is good for (even though some people think that it's good for annoying other people by popping them in public).

What does all of the above have to do with anything? Well, let the vase be a software product, the box be the logging framework and the bubble wrap be the logging abstraction framework. That simple! You buy the software solution because this is what you want, but you need logging to trace transactions and exceptions that occur in the system, so you can tell the vase manufactures, sorry, the software vendor to give you patches that fix those problems. Using a logging abstraction framework helps you changing the logging framework very easily, without the need to change anything your software. Imagine having to change the vase, simply because the fancy box you got to put it into for your friend doesn't fit. It would be insane, wouldn't it.

OK, so what about Hani Suleiman? He's the CTO of a consulting company, and the owner of the controversial BileBlog. He's also a member of the executive committee of the JCP, and on the expert group of several specification requests. In his last post before his disappearance from the blogsphere (which was 9 months ago), he was ranting about Tapestry's creator, Howard Lewis Ship, moving from ACL (that's Apache Commons Logging, not Anterior Cruciate Ligament :P), more commonly known as clogging or JCL, to SLF4J. He was referring to Howard's blog entry, which didn't give much technical details (actually no technical details) on SLF4J in my humble opinion.

Well, I have to disagree with Hani here. Even though Log4J is one of the most widely used logging framework, it's not the best. You've got Logback for example, which was created by the founder of Log4J, and has several performance enhancements. You also have a lot of other logging frameworks, and it's totally wrong to force your consumer to use one of your choice.

When you are developing a framework (like the case of tapestry), you should never tie the users with a specific logging framework. I, for instance, like to use logback instead of the de-facto log4j. Being tied to a single implementation is really frustrating. You should be able to change the box if you want. I know that what you actually want is the vase, but if you have no choice but taking it an ugly cheap looking box, and no bubble wrap, you might think of purchasing another vase from another shop, just because you can't possibly give your friend a gift in this ugly box.

He casualy flaps his michelin man arms about about how easy it’ll be for everyone to migrate, and how its no big deal to CHANGE EVERY SINGLE F****** SOURCE FILE YOU HAVE.
This is what Hani says in his blog, and again I wonder how would a man of his position imagine something like that? SLF4J is intended to be a drop-in replacement to clogging. You just have to read the manual (which is quiet small by the way). You can just drop in slf4j.jar and slf4j-jcl.jar in your class path in place commons-logging.jar, and you're done. Now you can use bubble wrap instead of foam peanuts!

Even if you're developing a product or a system, it's a bad practice to tie yourself with the concrete implementation of, well, anything. It's the ABC of design. You have to decouple yourself from everything. You have to "DESIGN TO INTERFACES", and this is why abstraction is so important.

Dear Hani, I have to totally disagree with you on that subject. Even if you are annoyed by people constantly popping up the bubbles in the bubble wrap, this doesn't mean that bubble wrap is a bad thing. Eliminating the use of the bubble wrap would make buying the vase a great risk, since it may break, or get chipped off. Not cushioning your antiques is a bad practice. Even if you get a box where the vase fits in perfectly, without the bubble wrap, you'll not be able to change the box (logging framework) without totally redesigning the vase :D.

The only exception to the above is with log4j and slf4j. Slf4j took the liberty of creating a drop-in jar that is intended to redirect the calls made to log4j to slf4j. This is done so that if you are using a library that calls log4j directly, and you want to use some other logging framework via slf4j. Anyway, I again repeat and insist that using a logging framework directly without an abstraction layer is totally wrong. It's like putting your valuable vase in a large wooden case in the back of your car while driving on a bumpy road, without any bubble wrap!

One last thing. Some people speculated that one of Hani's subjects waited for him in a dark alley and killed him, since it's been 8 months now since his last post. Actually, Hani is still alive, but he seems pretty busy to be blogging about anything these days. He is on the industry reviewers list of two tracks of this years JavaOne. He also had a couple of comments on a blog post, and was interviewed in February by InfoQ. Good to hear that he's still alive.

At the end, if you are a fan of popping up bubble wrap, you'll like this. Another thing, the bubble wrapped statue image was taken by Japh in the British Museum back in 2004. I contacted him to ask for his permission to use it. He gave me his permission to use it.

Monday, April 28, 2008

NetBeans 6.1

NetBeans 6.1 was released several minutes ago, and it does have some cool new features. Well, some aren't entirely new, like the JSF CRUD generation feature and java beans support that were missing from 6.0 have returned. It also has some major performance enhancements (up and above the really great performing 6.0) including an up to 40% faster startup time, lower memory consumption and increased responsiveness while working with large projects.

A lot of other features are present. Two of the best for me are the rich javascript editing features and spring framework support (including spring web framework). MySQL is supported in this release (no wonder, since it's now owned by Sun :D), and you can add a server to the DB explorer, view, create and delete databases easily with lots of other operations.

Code completion for JavaDoc is now present in this release, which is really convenient. For the Ruby/JRuby, the support has been enhanced a lot with editor quick fixes, a Ruby platform manager, fast debug for JRuby, and other enhancements.

Better shareablity of projects is also a great feature, where you can create projects that share definitions of libraries. Axis 2 support for web services have been added as well as SOAP UI integration for web service testing and monitoring. I also love the new semi-transparent windows, which may add (a little) to the productivity (you won't have to minimize and restore a lot to see what's going on in other windows), in addition of it being a real eye candy.

Another feature that I really like is that now the inspect members and hierarchy actions now work with classes that the source code is not present for (like 3rd party libraries that do not have an attached source). This is really great.

This was a summary of the new features of 6.1. For the full list of features, you can see this link. Bugs reported between December 2007 and March 2008 were fixed too. Of course I expect the release of 6.1.1 about a month or so later this year to fix any bugs that come up after this release. The next major release (6.5) is planned for October the 2nd. Keep the good work going.

I got the best job offer ever

Yes I did! No, I wasn't offerred to be the CEO of Microsoft or anything, I was offered to be a senior software engineer (which is my current position by the way), but the offer itself was unbelievable. Well, let me start from the beginning.


Like most people, I have profiles on recruitment sites, like monster and others, where I look at the current openings in the market. There is no harm of knowing where the market is going, and what's your current price in the market. It would also help to find great offers, like the one I got (well, maybe not as great as the one I got).


Since I have a public profile on some recruitment sites (which is not a really very nice thing to do), recruiters and companies can view my profile and cv to contact me directly instead of me having to look for job postings and submitting to them (I'm kind of lazy). Anyway, on February the 21st, I got an email from Renfield Recruitment Agency in London, telling me that Duramex Petrolium PLC (also in London) is looking for all sorts of engineers (petroleum, mechanical, computer, electrical, aerospace, etc.) for an extremely large project. Accepted candidates with more than two years of experience will be given a full time position, while candidates with less than two years of experience will be given a one year contract, which is renewable on satisfactory basis.

Well, all I had to do was to send a copy of my CV to Engineer Peter Wilson on career.renfield@gmail.com, and so I did. I also forwarded the mail to two of my friends whom I thought might be interested of relocating to London. Anyway, on the 26th of February I received another email from Renfield recruitment containing two attachments. The first being the appointment offer and the second being the terms of agreement!

Yup, I was accepted as an employee in Duramex petroleum WITHOUT AN INTERVIEW. The appointment offer said, and I quote "...your placement was based on with out any form of oral interview, from; the RENFIELD RECRUITMENT SERVICES. You should also note that your placement was based on certified information found in your CV/Resume...". I know that my LinkedIn profile is quiet good, but to get me a job offer without an interview? WOW!

OK, here's a summary of the package:

  • Monthly salary of 9945.00 British Pounds (YES, thats Nine Thousand Nine Hundred Fourty Five GBP) TAKE HOME (After Tax). I can ask of taking them in US dollars or in Euros by the way.
  • Full medical insurance for me and my family
  • Family accommodation in company community
  • Local transportation will be fully provided for me and my family
  • A land line and a mobile phone will be provided
  • Security in both work place and housing community
  • Life insurance
  • Complete meals for me and family
  • And the list goes on...
Well, who would be stupid enough to turn down an offer like this one? We are speaking of an income exceeding 237 thousand dollars a year, after tax deductions, plus full housing, medical insurance, life insurance, meals, and even a travel allowance on your vacation complete with airline tickets, plus of course the other benefits. This is like an income of half a million dollars per year (if not more). All I had to do was to contact "International Global Visa Rite Services" before the 10th of March, either by email (employment_visa_rite@mail2consultant.com) or by phone (+447045766361), to apply for the immigration visa. I should have paid the fees, and would have been fully reimbursed after my arrival.

Seems like a good deal, right? Actually, it seems too good to be true, doesn't it? Well, yes, it isn't true. I wasn't lying when I said that I got such an offer, but what I mean is that this was a fraud. There is no Renfield Recruitment, no International Global Visa Rites, and above all, the is no Duramex Petroleum! This was a scam from the very beginning, but it was a well played one.

If you google Duramex Petroleum now, you'll find tons of results on the scam, but this wasn't the case back when I got the email in February. I had to search for the company records in the official UK government register of UK companies, and do a lot of googling to find out that everything was a fake (and to shatter my dreams of wealth too :P).

Well, why didn't I blog about this earlier? Stupidity is a good answer. I thought that by contacting the authorities I would be doing a greater good, so that they can catch the villains when they're not taking care, since no one was blogging on them. I was an idiot. I could have been the number one result in Google for Duramex Petroleum by now, but NO, I didn't do that so that not to grab attention to the scam, so that the authorities could do their job. I got absolutely no response from the Interpol. The Scotland Yard website suggested to either go to the local police station (I'm in Dubai, UAE, not in UK), or to report it to the American Internet Crime Complaint Center, which sent me an automatic respond, and no one contacted me after that.

Anyway, this wasn't the end of it. One of the two friends whom I forwarded the first mail to got the same offer (well, same package, but as an IT manager) on the 15th of April. He got it directly from Duramex Petroleum this time, and not through Renfield Recruitment :D. The scammer had launched a fake website using Microsoft Office Live. I contacted Microsoft, and they replied in less than an hour to tell me that the fraudulent website had been closed. They also told me that they have taken appropriate action, and asked me about any information that would aid their investigation. I sent them the info, but don't actually know if a real action was taken against those people or not.

I really want to kick myself for not blogging about this earlier.Here are the links for the Appointment Offer and the Terms Of Agreement I received on the 26th of February. Also here is a text file with all the contact details that I collected from my communications with Renfield Recruitment and from the mail sent to my friend. This file is a part of the mail I sent to Microsoft.

Now just some few tips for you, whether you want to be able to find out scams, or to run your own scams professionally :D
  • People contacting you claiming to be a company or a recruitment agent should regularly have a corporate mail and domain, and not emails on Google and Hotmail. Some recruiters do use free mail servers so to reduce the number of spam on their corporate mail system. If you receive a mail from a free mail service, you should at least be a little bit careful.
  • A large company or corporation should have a website, and it's usually a dot com website not a dot org. The latter is cheaper, and is mostly used with non profit organizations (or people who want cheap domains). Another thing, a corporate website will not be hosted on Microsoft Office Live, Google sites or any other similar service.
  • If you suspect a website, do a whois lookup to see who's the registrant, and try to make sure that the information is true.
  • ALWAYS research the company that wants to interview/hire you before taking some serious action
  • If relocating to another country, ask friends who know this country about rules, standard of living, cost of living, and salary ranges for people of your experience

Finally, I would like to thank Emad Bakir a lot for helping me with information on UK, and UK companies, and for being the one to tell me that this is probably a scam.

EDIT (4th of May 2008)

Just wanted to add some links to other sources