First, congratulations and welcome. You’re in for a fun ride. Many opportunities to explore your potential are waiting for you. Yes, there are terrible bosses in this domain too, but the demand for competent programmers is high enough for you to pick and choose.
Your first job will unlikely be joining your dream company, but you must start somewhere. Whatever your first job, be a sponge, listen more, talk less, and don’t outshine your coworkers. You’re there to reach a common goal, not to gain praise. If you do things right, the praise will be a side effect.
If you’re fresh out of college, know that computer science differs from software engineering. I recommend two books to advance your software engineering craft — The Pragmatic Programmer and Refactoring.
Find something that will be challenging but not too challenging. You should know what value you bring and your realistic hourly rate. When you reach a point where you feel your compensation doesn’t match your abilities, ask for a raise or switch companies. No point in staying somewhere you don’t like. You’ll start to feel resentful, which is not good for you or the company.
The job interview is not a formality. It’s a two-way negotiation, so only settle on things you’re ok with. Being too indulgent is not a virtue. How can you defend the company’s interests if you cannot defend yourself? Recommended reading — Salary Negotiation and a list of questions to ask on a job interview.
Almost every company is looking for great people, even if they’re not actively hiring. Reach out; you have nothing to lose. As most people do, don’t write a generic cover letter with your CV attached. Put some effort into it. Visit their website, and get familiar with what they do, what problems they’re trying to solve, their goals, and how you will help achieve them. Rather than saying what they can do for you, say what you can do for them. Give reasonable justifications for what a waste it would be for them not to have you.
Think of yourself as not a software developer but a problem solver. When you reach a certain level of expertise, your responsibilities include mentoring, interviewing job candidates, planning, designing APIs, researching technologies that fit requirements, and many more. Thinking of yourself as a problem solver, you can fit any role.
Asking stupid questions is ok. Nobody expects you to be perfect. We all screw up. If you make a mistake, say you made a mistake, what you learned, and how you will fix it. People don’t get fired for making mistakes; they get fired for making mistakes and being quiet about them.
Be bold and ask questions, but don’t go the easy route by outsourcing the thinking part to your teammates. If you get stuck (which you will), isolate the problem, describe it, what you tried, the possible reasons, and potential solutions in as few words as possible while still being understandable. Own your mistakes.
There’s going to be a lot of communication. A lot. Learn how to write. If you’re able to write well, you’re able to think well. Also, know that not all people communicate the same. Some people prefer to be direct, while others don’t mind you asking them how their day is. Oh, and don’t just say “hello” when contacting someone and then putting them on hold.
Having the title of senior developer means nothing. Nobody believes you’re a senior developer just by having “senior” written in the title of your LinkedIn profile. You’ll have to prove it at each interview.
Usually, for junior developers, a senior developer is someone coding for, say, five years. Time is a factor but not the only one. Senior developer has excellent technical skills, owns their shit, adds to the conversation when they have something meaningful to say, is not afraid to challenge ideas, is aware of how their part fits into the big picture, knows there are mundane tasks to do as well, and thinks about improving things beyond their scope of work. If you have these qualities, you won’t have to ask for more responsibilities; responsibilities will come to you.
Best of luck! 💪