Please Adjust your Personal Expectation Meter
A developer's expectations should be to grow their worth instead of expecting a high-paying job as soon as they learn a new language or when they graduate from college.
While working in the software industry, every once in a while you come across junior developers or college students who expect a senior or architect position. Notice how I said "expect."
Over the past five years, there have been a number of developers (college graduates and fresh/junior developers) who believe that since they've gone to college for four years, that they will be immediately hired into a senior, architect, or management position.
Let's go through some discussions I've had with some individuals to show my reasoning why this wouldn't happen.
Welcome to Ground Zero
After talking with a recent college student for a while about their particular classes and their thoughts on what to expect in the real-world, it was brought up that they were shooting for a Web Architect position that would pay this person over 6 figures.
I mentioned to this person that when you first graduate from college, you are starting from ground zero in the workforce. Period!
"Whoa, whoa, whoa, I just graduated from college! I have 4 years of experience! I don't need to start from ground zero. Any company would jump at the chance to have my skills." was this person's reply.
"No," I said, "You have 4 years of knowledge, not experience."
The college student looked at me like I had three heads and proceeded to ask me, "What's the difference?"
Immediately, two things scared me:
- They didn't know the difference between knowledge and experience.
- They thought that since I was an older guy who, as my mother would say, just fell off the turnip truck and didn't know what I was talking about.
My first point is that most college students have 'college knowledge'. Once you apply that knowledge in the workforce (the "real-world"), then it's considered to be your experience. It's one thing to study about some new technology or idea, but it's another thing to create something from that knowledge for your resume.
To drill the point home, let's say I wanted to learn AngularJS. I can read tons of material about it until it comes out of my ears, but until I apply that knowledge and create something with AngularJS, I have no experience with Angular. I have knowledge, but no experience. Got it?
"Well, I will still get a senior-level position when I graduate."
I hate to be the bearer of bad news, but whatever company hires you, they won't hire you as a senior or architect level position fresh out of college. If they do, I may question the values of the company.
As an example, I doubt that Jeff, the senior architect at the company who has been there for 10 years, will be happy with Billy coming in fresh from college and having a brand new title of senior architect.
Maybe it's my age showing through, but I start getting a twitch when I hear about a college graduate who just got hired as an architect. In my opinion, titles are related to experience. If you are working for a startup, I can understand that you need to base the titles off of who has the most experience with the product or service and that it's a cultural thing.
However, in a corporate environment, the titles are there for a reason. Titles are created based on that person's experience level, not how much knowledge they have accumulated, but how they've used that knowledge to provide value in their career.
You have to show the company some kind of value, whether that value is in a startup or a corporate company. If you personally developed something and it's solid enough to be a standalone product, guess what? You have something of value.
When you first get hired into a company, guess what? You have no value.
"I have value. It's the salary that they are willing to pay me."
The salary you receive is merely the exchange of your time and experience for a set range of money to help the company grow. You haven't built anything yet. Depending on your salary, the company will have certain expectations of you as well as your expectations of the company. It is a two-way street.
My third point is that your value is your personal stock. How can you make your personal stock go up? What can you build/contribute/exchange to make your personal stock grow?
Finally, I've had a couple of developers ask me if I've changed technologies recently. The reason they asked was that one or two developers who changed their primary language of choice for another wanted to be a senior or architect in that language.
For example, this one developer specialized in Java and the company was changing over to .NET development. When this switch occurred, the junior Java developer wanted to become a senior .NET developer in the company.
Do you think they should be given the title of senior .NET developer in a new language that they haven't even used on the job yet? How about after a year of using the language? Most companies say that you need at least 5 years of experience (some 10 years) before you become a senior- or architect-level developer.
While talking to these developers, I kept mentioning the following phrase:
You cannot cheat experience with knowledge. Apply that knowledge to grow your experience.
I guess I should also mention that in the past, I've said that a language is a language is a language, but with each new language learned, each one has it's own nuances and differences that will slow down developers in the initial learning stages. It will take a while to learn how to compile, how to unit test, what tools do I need for this language, how do I deploy, etc. While learning the syntax of a language is one part, the environment is another monster altogether.
After listening to developers carry on about not being promoted to a mid-to-senior level position after graduating or learning a different language, they expect to be given a big (or better) salary with huge benefits because they have knowledge of a language with no experience.
<sarcasm>Because we all know that when we graduated from college, we were all showered with job opportunities and huge salaries. It was easy for us to get a job back then.</sarcasm>
For those college students out there accumulating knowledge (translating: still in school), I would recommend building something of value, or even contributing to an open-source project where you are applying your knowledge to get your feet wet or contribute to a non-profit to get experience.
Back when I started programming ("ehhh...back in my day!"), I knew the world didn't owe me anything because I set my expectations relatively low. When something didn't go my way, my expectations of the situation were low enough where it didn't affect me as much as other people.
If you set your expectation to a reasonable level, you'll understand that your value is based on your experience, not how much knowledge you've accumulated.
So please adjust your expectations accordingly.
Also, a great follow-up post is over at Lifehacker.com called The Difference Between Knowledge and Experience.