9 min read

Essentials for New Software Engineers

Table of Contents

Essentials

1. There are no dumb questions

This one goes out to all the juniors or those whoā€™ve recently switched out of their existing role and joined a new company. It might be daunting to go about asking questions about things that you might feel necessary to have known the answers to before-hand. But, remember, when you first join any company, you get what I refer to the ā€œnewbieā€ buffer ā€” which is a period of time where it is completely acceptable to ask any and all types of questions, even ones that you might think are ā€œdumbā€ in your head.

Bonus points if you work at a company with a good cultureĀ ā€” what Iā€™ve found is that oftentimes when I end up asking a question that seemed dumb to me, turns out to be something thatā€™s been on at least one other persons mind at the very least. Iā€™ve had folks thank me in my DMs for asking something that they equally felt dumb about, but didnā€™t muster up the courage to do so.

Why have inner turmoil if you know you can demonstrate to the other person that youā€™re human. Over the course of your tenure, there will be bits and pieces you will forget about systems youā€™ve not touched in recent times. Our brains can be seen more like an LFU cache rather than a hashmap šŸ˜‰

While these rules apply to such specific scenarios, remember itā€™s not an excuse to be annoying. The easiest way to become annoying is to ask the same question in different ways when theyā€™ve already given you the answer.

To avoid becoming annoying:

  • listen carefully when an answer is being provided to you, document it if necessary
  • learn how to fish ā€” thereā€™s the old adage ā€œgive a man a fish heā€™ll eat a day, teach him and heā€™ll eat a life-timeā€, so yes, demonstrate your ability to get your own answers as soon as possible

2. Writing Software is a Team Effort

While you were busy grinding out datastructures and algorithms, itā€™s important to realize that the real job is a team-sport and is a lot more about sharing and collaboration, committing to your teamā€™s codebase, not your private repository.

Give everything time, and donā€™t rush learning a code-base and jumping to start your contributions. If it takes time to learn a code-base, then so be it! Remember, some of these repos have been around longer than you, or I, or both of our ages combined potentially šŸ˜‚

3. Learn how to prioritize and measure progress

In order to prioritize and measure your own progress at your pace, the key ingredint is knowing what is expected of you at the level you are hired. This will vary from company to company, but it is usually documented somewhere in a Confluence doc, or is something that your manager should outline to you on your very first day. If not, take the initiative to ask your manager about your expectations as question zero!

Some teams may expect raw output, some are okay with low amount of high-quality changes, some might focus on velocity as per the burn-down chart, others might focus on operations and ability to deliver independently. The only way you go wrong here is if you have a misunderstanding of the expected outcome from your day-to-day work. Once you have a good understanding of your expectations, you will be able to have a clear idea of what deserves your priority and attention and does not.

4. Run your own race

When you look for a job, things are competitive and you need to find key differentiators that will highlight you as a strong candidate and get you hired over the other person. However, once you are inside an organization, you need to remember to run your own race. Scope, titles, promotions are not a zero-sum game. Companies would simply do more if they had more SWEs being grown internally into seniors.

Competition within a team environment is terrible for the team leading to negative behaviours like withholding information, politics, talking trash behind peopleā€™s backs, jealousy and other unproductive drama

If a test is graded on a curve, you still want to do your best and not put efforts into sabotaging other people.

5. Become an IC as quickly as possible

The rate at which you are able to operate with autonomy is what makes you stand out vs what you deliver. The things you may be assigned might be artificially scoped down, so the one unique skill to focus on to make yourself look like a star is to start contributing independently, tackling challenges by yourself, unblocking other members via pairing, driving the conversations that lead to high-impact work and making small but incremental changes that you can highlight via architectural decision records and documentation, based on guidelines and with all trade-offs considered.

6. Comparison is the thief of joy

This is similar to point number 4, but itā€™s important to highlight that while running your own race, if you stumble into peers who are exceptional ā€” surround yourself with them. Do not feel jealous, or wonder how someone your age ended up two levels higher. If someone your age is killing it, donā€™t be a hater!

Instead, build a rapport with them. Maybe ask them how they managed to do so ā€” you might end up getting tips and tricks and perhaps also a peek into some company secrets šŸ˜‰

7. Success is a combination of luck and skill

If you are doing everything right on your end, then remember to take some down-time to your own. Take care of yourself ā€” hit the gym šŸ‹ļø, pick up and instrument šŸŽø, perform some self-care/soothing rituals šŸŒ± to remind you that life isnā€™t just about chasing success, but chasing the journey to excellence and finding joy in the things we do!

Donā€™t be hard on yourself and remember that success is always a combination of having your hard-work down pat, and then some luck/timing to get you through to the results you want to see!

You canā€™t control the luck part, but you CAN control the skills, so always focus on giving your best. Also steer away from focusing on results too much and instead, use them as guidelines. You shouldnā€™t care if you came first, second, or last in a race, but instead focus on whether or not you gave your all or not, because at the end of the day, thatā€™s all we can really do ā€” give our all!

8. Focus on things you can control

This is building off the previous point where you donā€™t really want to put any energy into places where thereā€™s no positive net gain for you. For instance, thereā€™s tons of fear mongering about the macro-economic situation ā€” layoffs from top companies, new articles coming out in droves talking about rising mortgage rates, inflation, and so on and so forth.

These things are out of your control and the best thing you can do at this very moment is to tune everything out and just focus on how to navigate around these situations if they were to arrive.

9. To go fast, go slow

I often hear folks wanting to get promotions as soon as possible. For that, you will definitely need to learn to crawl first, before you learn to walk. No infant immediately gets up and heads to the olympics running championship. Similarly, donā€™t try to jump ahead of things without putting in your dues. Part of the criteria to achieving success in domains is years of experience. There is a trap where people try to optimize for the outcome two steps ahead, but donā€™t meet the expectations of today.

Remember YAGNI from code? Apply that for real life as well!

10. Understand your support structures

Some teams will not have good support structures for new joiners and you may feel like youā€™re being hung out to dry. When speaking with your manager, make sure that in addition to understanding your expectations, you go over the details of the support structure. If the support isntā€™ there, then ask what they are doing to put that support structure in place for you, or how your expectations can be reset on said basis.

Check for dysfunction ā€” some teams are high performance, and some are not-so-high performance šŸ˜… rife with backstabbing politics, cult coworkers, unreasonable deadlines, terrible spaghetti code-base, and a toxic or ineffective manager with no support structure. If you are new, none of this can be flagged because you donā€™t even know what you donā€™t know.

None of this becomes apparent until ~6mos in and in such cases thereā€™s not much to do other than finding a new team within the company, or to find a new job at a new company if you get into this position.

11. Be picky if you have options

If you have multiple offers, be picky and NEGOTIATE!

Not just the salary, but take a good look into the teams and settings as well if possible. Bad managers would tend to lack tenure on the team and will often lose their senior/most-effective staff as a result. A good question to ask during interviews is to find out how long a manager has been on the team and how long have the seniors reported to them.

Managerā€™s been there for 6 mos and all the seniors left, you might want to avoid that team āŒ

vs

Manager whoā€™s been there for 5 yrs, and senior devs who have stuck with them āœ