Showing posts with label Personal Opinion. Show all posts
Showing posts with label Personal Opinion. Show all posts

Wednesday, April 20, 2016

The tenth reason

WOW! It's been about eight years since my last post, which was about the nine reasons people leave their jobs. I wrote that post while I was preparing to leave the company I was working for back then. It was a sort of thinking out loud post, where I was evaluating my decision to leave. Now, it's time again to move on, but it is for a reason not mentioned in my 2008 post.

Recently, I have been thinking about leaving the company I'm currently working for for some of the reasons mentioned previously (financial, different types of experience, etc.), but found myself adding another reason to the mix that I wasn't aware of back in 2008. It's independence!

I want to be on my own. I have some side projects that I wanted to work on since forever, but never had the time to attend to due to my full time job. Whether you want to have your own business, become an entrepreneur, be your own boss, whatever you call it, you just want independence.

One solution to become independent is to have your own project, whether it's a services providing company (e.g. social marketing, SEO enhancement, car cleaning, etc.), a product (e.g. mobile app/game, a book, hand made soap, etc.) or opening a shop/office (e.g. co-working space, coffee shop, etc.). Another solution is freelancing! Yes, when you're freelancing, you are actually an independent service provider.

The great thing about freelancing, if you're really good at what you do, is that you get to choose what to work on and when to work on it. Of course when you agree with a client on performing a task in a specified time frame, you have to do it the way (s)he wants in the time frame you agreed on, but you get to choose the project and agree on the time frame before you start, which is totally different from when your boss tells you that you have to do a boring task in an illogical time frame, causing you to work extra hours and weekends on something that you don't like. Maybe I'm exaggerating a little bit, but you get the point. I have met cases quiet similar to what I have described here, and believe me, they suck.

There are of course several problems with freelancing, one of which is marketing yourself. If you decide to be a freelancing developer, web designer, whatever, you have to search for prospective clients (checking ads in newspapers, craigslist, etc.), show them your portfolio and previous projects, and convince them that you're the one they need. The problem here is that doing this search is hard, and a lot of clients are non technical and would cause more hassle for you that your current boss.

The solution to this is to go for one of those freelancing websites, like upwork (formerly oDesk), elance (an upwork company), freelancer, guru, fiverr, etc. However, another problem shows up here. The problem with those sites is the barrier to entry. You might be the best one in your field, but you would still find it hard to land your first job. Bidders do not want to take the risk of hiring someone with no previous work reference on the platform they're using. This will cause you to lower your price to really (funny) low rates to convince people to hire you. This will also make you go to any brain dead job just to get a positive feedback. My first job on oDesk was to solve some high-schooler's programming assignments, but to keep the quality of the code low so that not to raise the teacher's suspicion (I'm not proud of that, but I needed to get in the system back in 2007)! Well, oDesk (now upwork) have a good system where you take a lot of tests to prove the skill you have, but the problems are still there. One more problem is that the clients of those platforms are mostly small companies (or individuals), which limits the cash you might get.

This is where Toptal comes in. What Toptal does is to screen all applying candidates (language, personality, skills, problem solving, etc.) to make sure they only get the top 3% of the freelance talent. By guaranteeing the talents that work with them, they have a great roaster of clients, and they set (really) good hourly rates for you. I believe that this is the best thing you can get (if you're one of the top 3% of course). I'm trying out in the next couple of weeks to join Toptal in the software development group, which is going to be great for me. I believe that I'm one of the tom 3% in my field, so I hope this is going to go fine. However, if you read this, I hope that you pray for me to do well, since I think that this might be the best option for me.

A company similar to Toptal is crossover, but the drawback they have is that they require that you work with them full time (but you get paid hourly based on the actual work). By them making you work exclusively for them, with no guarantee of the number of hours you will actually make, and now way to set your availability to be a part-timer, Toptal wins by far (IMHO).

So, this is the tenth reason why you might want to leave your job. You want independence, which is what Toptal provides.

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.

Sunday, February 17, 2008

The Missing Perfect Processor

On the 23rd of January, I sent an email to the editor of PC Magazine Middle & Near East. Well, I like the content of this letter, so I decided that I would post it as a blog entry here, so here you go.

I read your February issue article on the "CPU Road Map 2008", and I started thinking about how far we are from the perfect processor. I'm not talking about future processors that are going to have gazillion cores and do everything from simple arithmetics to 3D graphics processing. I'm speaking about the processors that we could have this day with today's technology.

Intel is better in developing transistors; they keep producing smaller transistors each day, giving the possibility of putting more cores on the same chip and reducing power consumption and heat (especially after they created the High-k metal transistor). Another thing is that Intel supports DDR3 with it's greater speed (even though the FSB is still slower than the fastest DDR3) and lower power, while AMD moved to DDR2 recently.

AMD is, and was always, better in their processor architecture. They created the 64 bit PC processor more than a year before Intel adopting it to make it's own EM64T, AMD is not using an FSB to access memory, which is a great advantage and finally, AMD's Phenom processor is going to be a real Quad-Core processor, and not two dual cores glued together.

With the technology available from both manufacturers, we (the consumers) could have had better processors than we have today, especially that each of the two companies is excelling in something totally different from the other. Unfortunately, since they are competitors, and it's impossible to convince any of the companies of sharing their secrets with the other company, then we are never going to have the perfect processor, because there will always be great differences, that if combined would have produced a far more greater processor.

Well, this was the end of my letter to the editor, and I hope that you like it.

Sunday, January 13, 2008

Welcome Mr. Bush

Bush is visiting Dubai today; HOORAY!! Well, lot's of presidents and VIPs visit Dubai, like they visit any other city in any other country, but this time it's different. This time, Dubai is officially closed for the day! YUP, you read it right. They ARE closing the city.

Well, the story is, for security reasons, they are closing the main express ways that lead into and out off Dubai, including Sheikh Zayed Road (E11), which is the backbone of the city, and since you have to pass by E11 to go to nearly all of the industrial and business areas (Jebel Ali Freezone, Dubai Media City, Dubai Internet City, etc.), the government announced that today is going to be a day off.

Even though I never mind a day off, but I hate when it's for the wrong reasons. I do not accept that a whole city is shut down for the visit of someone, no mater who that person is. I do not accept being a prisoner in my own house because all the roads around my house are blocked because of GWB's visit.

And how much money is going to be lost in that day? All businesses are going to be closed. How many millions of man hours are going to be lost? And how many business deals are going to be delayed this day? How many people in need for hospitals and medical care are going to have to take alternate routes through traffic jams that no one thought possible, because the main express ways are closed, and no one will know how to reach their destinations? How many people are going to get delayed for their flights?

I really hate what's happening, but anyway, I'll try to enjoy my day in the morning by relaxing at home.

Saturday, November 17, 2007

Politics in Software Development

Politics is present in every aspect of our life, whether we realize it or not. It's present in the way you treat your family, your in-laws, and your coworker. It's even present in software development.

Ever wonder why Microsoft made Windows Mail in Vista not able to have Hotmail (now Windows Live Hotmail) accounts (unlike Outlook Express), and then months later they release Windows Live Mail which has this feature? Haven't you ever thought why when you want to download the new version of MSN Messenger (now Windows Live Messenger), you have to download an installer which has the options of downloading several other new Windows Live products that you never heard of (Mail, Writer, Photo Sharing, etc)?

Why does Microsoft's Windows Live Family Safety require that each and every member of your household should have a windows live ID so that he/she can access the internet? You say marketing? I say marketing falls under the umbrella of politics.

If the above examples don't strongly show clearly how company politics affect software development, the following ones will certainly do so.

Sun's business is mainly hardware, servers to be specific. Sun is also the company that maintains java. Now java is supposed to be platform independent, and we (java developers) claim that it runs on each and every availabal platform, right? WRONG! Sun creates JDKs and JREs for Windows, Linux and Solaris only, meaning that if you have an HP or an IBM server, you will not be able to get Sun's JVM. HP and IBM develop their own JVMs, but of course the available Java version on those machines is always behind that of Sun. Currently, HP and IBM have JVMs that run java 5, which is more than three years old.

Sun simply won't release versions of java for AIX or HP-UX since it will be releasing it for competitors in the hardware business. If it did, enterprises that have java applications and need to use the latest features may go to Sun's competitors. Sun releases versions for Windows to stop Microsoft from dominating the software development market, and if this is done, the market share of dot net will increase while that of java will decrease, and since dot net doesn't work on anything other than Windows, Sun will be losing a large part of the hardware market for windows based servers.

Sun also open sourced it's star office suite to create openoffice.org, and they open sourced Solaris, and made it compatible with desktop and laptop hardware. Why? To go another step in stopping Microsoft Windows from dominating the desktop market, so that it would slow down the growth of the dot net community, so that software in the market would be runnable on UNIX and not just Windows, so that it would increase it's the possibility of people going for Sun servers.

I believe that Sun's war with Microsoft could simply be over (or at least won't be as strong) if Microsoft made dot net platform independent, but Microsoft will never go for such a move. Microsoft wants to dominate the desktop environment with Windows, and it's very strong competition from Apple and Linux. Microsoft is using the dot net technology, with their fabulous IDE to market Windows. If suddenly dot net applications ran on Linux, for example, Microsoft may lose a huge market share.

I think that projects like WINE must make Microsoft live in fear. Maybe that's why Microsoft made a lot of changes to Vista that made a lot of programs not compatible with it. What had happened is that the software vendors made their software compatible with Vista, and everything went back to normal, except that projects like WINE and REACTOS went one step behind.

I believe that a lot of changes that were introduced to Vista were just to make it incompatible with such projects (such as changing "Documents and Settings" to "Users" and a lot of folders under the user folder like "Local Settings" for example to "AppData\Local" or something like that, and a countless more changes). I believe that such changes have no meaning other that what I assumed earlier.

Now let's go back to Sun again. Sun is THE supporter for Netbeans, which is a great IDE by the way. On the other side of the table, we have the more popular Eclipse, and guess what, IBM led the Eclipse Consortium (and it's the one that created Eclipse). Now someone would say that both are open source projects, and it doesn't make a difference to the companies what IDE developers use, right?. I again say WRONG!

IBM is in the software business, and being familiar with Eclipse makes you somewhat familiar with Websphere and Rational Tools, that are built over Eclipse. Being familiar with those IBM products may lead to you using the Websphere application server, and if you do, which operating system and hardware are the best for such a server? IBM hardware and AIX is the answer. What was Sun's response? Open source Sun application server and create project glassfish, hence you have a high end application server from Sun for free, and of course it supports the latest java technologies months (or even years) before other application servers (like servlets 2.5, JSP 2.1 and other JEE 5 features for example).

Back to Netbeans and Eclipse. Both IDEs allow developers to create custom plugins, but Eclipse recently (not very recently, actually about a year and a half ago) changed their framework to use Equinox, which is Eclipse's implementation of OSGi. OSGi is maintained by a large group of corporations, that include both IBM and Sun Microsystems, and both were founders of the OSGi Alliance. Having IBM and Sun working together is not something to be surprised from, because, as I mentioned before, it's all about politics.

Now Eclipse implemented OSGi by creating Equinox, what will Netbeans do? Well, as an active member of the Netbeans team told me once, they are waiting. They already have their pluggable framework. If they go to OSGi, they have to choose an implementation, and for sure they won't use Equinox. Even if they go for any other implementation (Apache Felix or Knopflerfish for example) or even create their own, they would still be switching to OSGi after eclipse did, hence Netbeans would be following Eclipse's steps (or as someone else would be seeing it, Sun would be following IBM's steps).

So, what's next? Well, there is a JSR (JSR 277) which was created to create Java Module System, which is very similar to OSGi, and guess what, IBM is not in the expert group. As I mentioned seconds ago, the Netbeans team is waiting to see which one will win, Java Modules or OSGi, but I reckon that they will either go for Java Modules once the JSR is finalized, or they will stay as they are. I'm quiet confident that they will never go for OSGi.

I believe that this post became much longer, than I wanted it to be, but I can still go on with the subject for much longer. I wanted to get to a point, and that is, politics between large companies have a great effect on software development. Even with open source projects, when a project becomes very popular, large companies tend to create standards similar it. Examples in java include log4j & JDK 1.4 logging, Hibernate & JPA and of course OSGi & java modules (OSGI and java modules have some differences of course). It's then up to the original creator of the open source project to implement the standard (like hibernate implementing JPA).

I'm not at all against Sun (actually I'm a huge fan), but I took it as an example. I'm also not against standardization. I just wanted to speak about the subject of why large corporations do what they do.

Edit on 12/12/2007
HP released java 6 in November and IBM release java 6 just this month, which is still two years after the release by Sun.