A Semi-Charmed Life: Mike's Journey

Learning things from scratch ...

Friday, February 25, 2011

Career Life Plan?

It has been a challenging year it was last year, and i already made some list of goals that every time i will leave my room i can see it facing myself. Unfortunately most of them(80%) are inconsistently happening. Many things did happened and still thinking that even the worst thing might come soon. But there is this space inside my head that really is looking for that missing portion of which i already seen into some of my employers before. Of course i cannot have them all , but i suppose the one true important thing might be the one that i can really manage and cope with every minute. Today i am working (4th Job) and still undecided what will happen soon, but i do have some simple and great ideas IMHO, that might change me somehow. But i am still young and stupid to have this maybe? and i can be hasty which i do it most of the time, that i sometimes forgot the real things in front of me. Even my family are quite confused to the things i am doing to myself. That i know deep into their minds they hate me for what i am doing and might do in the future. 

I guess this is ME , looking and still searching the things i really wanted to do and pursue (although i did filter something) i still need to find those supporting details to make me a real person. Right now all i can say is i am deeply ashamed to what i might do and still getting the nerves of not finishing at the right time. Sometimes i wanted to change plans but time is running out ( i think ) and we all know that shifting things might not always be an option but instead we rather simplify things that we are dealing with and in the future find out that we're really fitted to this kind of situations. 

Just to clarify everything, i wanted to really find it this time around and kickstart the ideas and stuff that is hidden within my head. I am very much grateful to all of the people that helped me made to who i am right now and to those people that really inspired me to continue doing things the geeky way. I am not claiming myself to be master of something but i am trying to do it one at a time, even when i really need to do it from the start. 

Learning really for me does not depend on how you know things it is how you interpret and implement the things you have studied in a much effective way. So be it i am blogging different things at different angles that i am hoping you guys can understand and relate to. I do not want to convene everything that can be very obvious but i wanted you to think of things that the mystery of life has to offer.  - Life and Career Plan.

PS: I really wish/hope i would get/fix things this TIME!

Tuesday, February 08, 2011

Knowing When to Leave Your Programming Job

 In this article we'll talk about the tell-tale signs that your current position is not for you.  Then we'll give you a systematic approach for exploring new options.

The Code you are working on is Legacy and Bad
Sometimes there is nothing more undesirable than working on someone else's code.   This is especially true if the code is written poorly.  For example, if you find yourself in a situation where every time you make a change to the code something else breaks then the alarm bells should be going off in your head.  Of course you might have the instinct to rewrite the code, but for various business and resource reasons, this may not be an option.  In my opinion, this unfortunate situation of facing legacy code is more geared for a consultant.  A consultant usually gets paid for every hour he or she works and very often a consultant is called in to solve the "legacy code" problem.  But, given the choice between other interesting jobs, falling into the "fix the other programmer's code" trap should be avoided when possible.
You are stuck Supporting an Existing System
If I am in a job and I find I am not learning anything new, for me this is a signal to get out.  There are too many .NET job opportunities for learning new technologies and pursuing exciting new projects.  Unless you are well suited for a production support job, you should not stay in a job that has made you into support engineer. 
The Project Expectations are Irrational
Many of us have been on a project whose expectations far exceeded reality.  Afterwards we often asked ourselves why.  The project consists of long hours with no overtime pay, no vacation, no weekends, and skipped meals.  I'm not suggesting a programmer shouldn't work hard at their job, but there is a balance between what is reasonable for an employee and what is not.  Keep in mind these rules may differ for a consultant (who is paid hourly) or a company owner who has everything to gain from sacrificing their lives (although some wives or husbands may argue this point).  However, these rules do not apply to you as a regular salaried employee, so don't fall into the trap.  If the job has taken over your existence, interview and find a job that doesn't destroy your life balance.
Your Boss is a Jerk
No matter how great the .NET coding opportunity seems, having a boss who is unreasonable makes it not worth continuing.  There are plenty of similar programming opportunities out there, so start interviewing and tolerate the bastard for a little while longer.
You don't want to go to Work
Regardless of the reason, if every day is a struggle to go to work, maybe the current .NET project is not for you.  Get your resume going, it's time to try something new.
The Company has Started Laying Off
Signs of a failing company are a good reason for you to get out.  It's better to be in a position in which you are actively pursuing a new opportunity while still maintaining a job.  If you get laid off or let go, a potential new company may have doubts about your skills, even if they are not well founded.
You are not Seeing any Rewards for your Work
If you have worked hard and accomplished a lot, but there are no bonuses or raises coming from management, this is a signal to bail out.  Most companies try to keep their programmers happy.  So one of the following are true if you are not being rewarded for good work:  1) The company is unhealthy 2) your boss doesn't like you 3) your boss's hands are tied by his or her superiors.  Regardless of the reasons, if you feel you are not being treated fairly, start looking.
The Company Starts Removing Benefits
Companies have the ability to take away or give anything to its employees at anytime it wishes except for those benefits dictated by law (minimum wage, disability, etc.).  If a company is taking away benefits across the board or reducing benefits, this is a sign of an unhealthy company and you should start looking immediately.
Talented Programmers in the Company Start Leaving in Droves
If you notice your colleagues around you leaving, they have either seen the signs or they have found better opportunities for their skill set.  Get out quick because you are on a sinking ship.
A Company Approaches you with a Better Offer
Let's put company loyalty at your current position aside for a second, because as we stated in our last article, a company will not think twice about sending you packing.  The important thing to do if a company approaches you is to weigh all the pros in cons and compare them to the pros and cons of your current situation.  This brings us into the next section of the article, what are the details to consider when switching jobs?
Weighing the Pros and Cons
You can never really know what's going to happen in a new position( unless you are a fortune teller), so you have to go by the coarser clues you have in front of you when exploring a new opportunity.  Here are some questions to ask yourself when choosing the new position.
Questions to ask yourself when Weighing the Position
The Job Description
This is by far the most important part of your decision. If the job interests you more than your current job, you are on your way. Try to think of it this way.  In the limited time we are all on this planet, it's best to pick a job you are going to spend 50% of your life doing with something you enjoy.  Especially if the option is open to you.
The Commute
Time, not money is one of the most important factors to consider when choosing a position.  If your commute adds two to three hours to your work day, it may not be worth any additional pay you are receiving from the job.  If you are flexible with your living arrangements, then this might not be a consideration.
If you hate your current position, then the compensation only needs to be comparable to your current salary to make the switch. Of course it doesn't hurt if you can negotiate better compensation to make the decision to switch easier.  A healthy or well funded company can afford to entice you with better compensation.
Potential Compensation
Some companies will tell you up front what the bonuses are as well as what kind of stock or stock options you can expect.  I consider the base compensation more important in the decision making process, because potential compensation (unless it is in writing), is just fantasy.  Your belief in the company and what the stock market believes can be two different animals. 
After the Interview
Here is a list of questions to ask yourself after you interviewed for the new job.  Do you like the people you interviewed with?  Did you click?   Were they friendly?  How about your future boss, could you gauge anything from his behavior?  Did he seem like he listened to your questions and concerns?
Is the health care at the new company better or equivalent to your existing health care?  For some, this may be a deal breaker.  Other benefits such as vacation and 401k may be less important, but should also be considered in your decision.
Quality of Life
You want to try to gauge if you are jumping from a stressful job, to a more stressful job.  This may not be an easy thing to do, but you should research it by asking around or checking sites such as the glassdoor.com.   Sites like the glassdoor sometimes have anonymous comments from software engineers working in the company you are pursuing.  This way you can get an honest assessment of what it is really like to work for the new company.  Don't ask HR to give you an honest opinion of the company, they will sugar coat everything.  Try to ask honest questions and concerns to your future colleagues without making them feel like you are digging up dirt.  Ask something like, "Where did you work before?  Is this a more fulfilling position? Do you find that the workload seems reasonable?  You may be pleasantly surprised when they  give you an honest answer.
Making the Decision
Place all the points listed above for your current job and your potential job in a pros and cons column.  If the pros of the new job far exceed the pros of the existing job, then your decision is made.  It's time to take a new .NET position.  If both pros and cons are about equal, then start looking for another opportunity until the pros outweigh the cons of your current position.  As a programmer you can even create a line of C# to help you with your decision making process:
if  ((prosNew > prosCurrent)  &&  (consCurrent > consNew))  LeaveJob(DateTime.Now);
Of course you would need to come up with an algorithm to weigh the different points, but you get the picture.
Leaving an existing job is never easy, but is such a relief if the job has weighed you down for a long time.  Do what is best for yourself.  Explore existing opportunities if you are unhappy in your current position.  Don't be afraid to test the waters, no one will fault you for it.
-Mike Gold 
(sorry for re blogging, just like what you have posted in the blog)