Hindsight is 20/20
When you’re a first time developer, everything is exciting and scary at the same time. You look at your Senior Software Engineering counterparts and wonder if you’ll ever make it to that level. It takes a few years to understand the ins-and-outs of the business, but once you’re there you realize how hard on yourself you actually were. These are the 10 Programming Tips I wish someone told me.
1. You Can’t Learn Everything
You don’t know what you don’t know. It seems like you can just keep studying and you’ll know everything there is to know eventually. After a few years of a grueling work and study routine, you’ll finally realize that you now have accumulated 0.001% of the knowledge in programming. Instead of trying to memorizing everything, your learning-pattern will switch to learning the concepts; everything else can just be looked up.
2. The Imposter Syndrome is Real
Everyone seems to be killing it. How in the world did you land this position? Guess what? Everyone else is thinking the same thing. There are a rare few exceptions. These are the individuals that get into a framework and optimize it to the point that the framework creators are calling them and asking for assistance. However, 99% of developers in the same position as you will feel like they were hired and they didn’t deserve it. Ask yourself the following questions next time:
- Are you paid less than a senior developer? If you are, there’s a reason for it. The organization knows that it will take you more time to complete a task than someone more experienced.
- Are you completing the tasks? If you are able to get through the tasks that you’re assigned, you’re golden.
3. Work Politics Are There. Get Used to Them
You may not realize it yet, but you have to change the way you interact with the various different individuals within the organization. The amount of times I’ve heard “we don’t want to step on anyone’s toes” is countless. You’ll realize that some individuals are jealous of where you’re at; others will sabotage your career if you rub them the wrong way. Some are extremely protective of their title and will put you in place if you challenge it in any way. Learn who’s sensitive to what and know when to speak up and when to keep quiet. This is probably the single best way to advance your career.
4. Management Is Frequently Unqualified
You look up to your boss. This is where you want to be one day. If you keep learning the concepts you’ll get that type of job eventually. You start to notice that every time you speak to them, their responses are extremely shallow in depth. They answer questions from a 10,000 foot level. You brush it off since it seems like they know what they’re talking about. After a while, you realize that they barely know anything. How did they get this position with the extremely limited knowledge? Sometimes management doesn’t need to have the depth that you think they should have. More frequently than not, it’s who you know and not what you know.
5. It’s Better to Change Jobs Than Wait for a Raise
After a year of proving yourself, it’s time for a raise. A performance review is given and you receive your raise: a measly 3.1%. You know that you deserve more. What happened? Do they think you’ll work for this wage forever and just provide you with a 3.1% raise each year? It hardly seems fair.
Behind the scenes, it’s a little more complicated. Your title has a salary range that was defined. In order for you to make more money, you have to change titles. There’s also a yearly budget discussion. This year it was discussed that each employee can get up to a 3.1% cost-of-living raise based on performance. If your boss gives you more, they have to take a few percentage points away from someone else. It’s just easier to blanket give everyone their 3.1% and move on.
When you move to a different company, you can negotiate a much higher salary. I’ve seen developers change jobs yearly since they can get a 15–20% raise each time that they move. Makes more sense than working for 3.1% more.
6. Work On a Clear Work/Life Separation
If you’re not careful, you’ll fall into the work/work trap. You work all day and then you work on improving your software knowledge at night. While I know that most developers are passionate about development, it’s good to have other hobbies too. Go outside a little. Focus on your health. Catch-up with friends/family. There will always be more code. By having a life outside of work, you’re less likely to burn out and abandon development altogether.
7. It’s Better to Specialize Than to Know-It-All If You Want To Get a Job
Intuition will tell you to learn a little about every single programming language over focusing on one. It takes some truthful self-reflection to realize that this is not the case. If you’re a business owner, and you need to hire someone to work on your application, you’ll opt for someone that’s specialized in that language/framework over the jack-of-all-trades. If I’m looking through resumes, and I need a C# developer, I will discard every resume that doesn’t list C# on their resume first. Second, I will look at the number of years of C# experience and if their most recent work experience involved using C#.
8. MVP Is the Answer 99.9% of the Time
MVP, or Minimum Viable Product, is the answer most of the time. Unless you’re working for companies like Google or Amazon, your employer will value speed over code perfection. You’ll hate yourself for the sloppy code that you’ll write, but you’ll see that it’s going to help you further your career more than if you wrote perfect code each time. Mention MVP a few times in front of management and watch your career accelerate.
Interested in MVP? Read my article on MVP.
9. You Will Fail a Lot of Job Interviews
Whether it’s your first or your 10th job, you’ll have to go through the job interview process. The dreaded technical interview will test your knowledge from kindergarten to a few years beyond your current skillset. You’ll have to have all of those algorithms you learned in college memorized. It’s not that you’re not good enough, the job is just not right for you. Sometimes the interviewer wants to show off to you and their colleagues. Ego is rampant. The best thing to do is to constantly go through the interview process. Instead of absolutely wanting the job, treat the interview process like practice. Yes, practice interviewing in real interviews.
10. Eventually, You’ll Want a Life Beyond Programming
There will come a time when you’re ready to close the laptop and never write another line of code ever again. You dream of moving to a farm and disconnecting yourself from all forms of technology. This is when you should start looking for other jobs in your field that don’t require writing code. Most developers will naturally move up to become Lead Developers, Development Managers, Software Engineering Directors, IT Directors, and beyond. Others will transition to sales, project management, business analysis, technical writing, etc. You’ll have a new set of challenges, but you won’t write any more code, and you’ll actually be okay with that.
Bonus. Ask for Help, but Know When Not To
As a junior software developer, you’ll feel like asking for help will highlight your lack of knowledge. The opposite is true. Senior developers know how long a task should take. If you’re spending days on a task that should take hours, ask for help. Look around. You’ll see that senior developers always ask others for assistance. It’s better to be guided in the right direction than waste hundreds of hours each year trying to figure it out yourself. Nobody benefits from that. When the company feels like it’s losing money based on your work efficiency, that’s when it starts to hurt you. So, ask for help from someone more senior. They’re used to it and will actually be happy to guide you in the right direction.
This doesn’t mean that the senior developer is there to do your work for you. While they’re explaining the concept, ask any follow up questions and write down the details you’ll know that you’ll forget. Now that you have a great starting point it’s time to do your additional research. It’s not the time to go back with the exact same set of questions to the developer that just explained them to you. Everyone expects you to struggle a little, but not drown.