Over the course of my 15-year career I have found some things that I liked about jobs and other things that I did not like. It has taken me a while to figure things out, but most people will have one type of job and company that “fits”. Of course, the logical question to ask yourself is what type of job fits me? I have previously written some tips for finding your next software development job, and there is one paragraph that needs to be repeated here:
The first thing you need to do in your job search is determine what type of work you want to do. Do you want to go into consulting for a services firm? Do you want to go totally independent and freelance? Do you want to go into a big corporation or even smaller company of maybe 50 to 500 people? Do you want to go into a startup and work with maybe 10 people?
So, what do you need to consider?
- Autonomy: Please tell me what task to do next. If you really want to be given tasks, complete them, and get another task, then startups probably are not for you. Big corporations may be a better fit.
- Bureaucracy: I want to fill out forms and follow process. Some people really need to follow predefined processes in order to get things done. These people probably do not mind filling out forms to get things done. Other people avoid the processes on purpose, just to see how much they can get done without them.
- Stability: I want to know that I have a job tomorrow or next month. This is the biggest myth of job hunting. Basically, there is no stability anymore, just different types of instability. In a startup, the whole company could go under in the span of a month. In a large corporation, it would take years to close up completely but there would be several rounds of layoffs that you would need to survive.
- Generalization: I can write code in eight different languages. If you are looking to be just a Java coder, then a large company is for you. Startups typically require you to work in many different technologies. In really small companies, you may be asked to do some server administration (yuck) or even sales work (double-yuck).
- Durability: I want to work 9 to 5 with a 2 hour lunch. In software development, nobody works 9 to 5 anymore, and if they do they are also working at home after dinner. If the length of the day or typical working hours matter, this can greatly affect your choice of company.
- Growth: I want to be in middle management. Even if you are a software engineer now, you may want to take the management track. You could also go towards becoming an application architect or some other fancy sounding technical title. Some people stay as a software engineer for decades too.
- Functionality: I want to fix bugs all day. In software development there are various types of work that you can do. First, there are people who fix bugs all day. There are the consultants that generally do whatever work you want and you pay them money. You can build a product, or you can be more services oriented. There are also subcategories of these as well, like administrative/data entry applications, web applications, mobile applications, embedded systems, and several others.
- Benefits: I want wealth and health. Any discussion of the appropriate job would not be complete without looking at the compensation package. Obviously, your salary or pay rate is important, but what other benefits are there? Health insurance, prescription plans, 401K plans, tuition reimbursement and training are just a sampling of what companies may offer.
So, how do you know what type of job to get? Well, first you need to figure out how these concepts relate to many companies. Because this would take thousands of words to describe, I am going to give you a handy table. The table maps these concepts to different types and sizes of companies. I have not included “Functionality” as part of the table as all sorts of companies can build products or be services companies. I have also excluded “Benefits” because they change with each company and have no relationship to the type or size of a company. Please note that these are generalizations of a typical company of the given type and size. Obviously, your current company may be somewhat different.
|Tiny Startup||0 to 20||Very High||Very Low||Very Low||Very High||Very High||Low|
|Small Startup||21 to 100||Very High||Very Low||Low||Very High||High||Low|
|Medium Startup||101 to 300||High||Low||Medium||High||High||Medium|
|Large Startup||301 to 1000||Medium||Low||High||High||Medium||Medium|
|Small Corporation||200 to 1000||High||Low||Medium||High||Medium||Medium|
|Medium Corporation||1001 to 5000||Medium||Medium||High||Medium||Medium||High|
|Large Corporation||5001 to 20,000||Low||Very High||Very High||Medium||Low||Very High|
|Huge Corporation||Above 20,000||Low||Very High||Very High||Low||Low||Very High|
The values above range from Very Low -> Low -> Medium -> High -> Very High. In some cases, the value is the expected value, in others it is the required value. For example, you should expect a very high level of Autonomy at a small startup and working there will require a high level of durability as well as require a very high number of general skills.
There is probably a better way to display this information, but at least this gives a starting point of what you may want your future employer to look like. Are there other basic concepts that you look for in a company?