Things I Wish I Knew Before Joining My First Software Engineering Job

A list of must-have tools to be better prepared on the first day of your first job as a Software Engineer.

Software Engineering role holds a vast scope of learning and growth for any individual, specially a new graduate freshly out of college stepping into the ‘real’ world for the first time.

The responsibilities of a Software Engineer do not end with writing code, surprisingly that’s a very minute(can’t emphasize enough) part of the whole job description. The journey has just begun when you land a job offer after rigourous interview rounds testing you in the domains of Problem Solving, Data Structures and Algorithms. Discussing the entirity of expectations that a Software Engineer needs to fulfill might not be in scope of this post! Here I’m going to pin point some of the bare essentials that I wish I had studied up before logging into the Day 1 of my first Software Engineering job.

The gap between what we get tested on in the interviews, and what we are expected to work on as Software Engineers is a wide one.

Getting a job offer right after college can be one of the most exhilirating feelings for a new graduate. It not only means that the years of hardwork we put in has paid off, but also reinstates our belief in our abilities to excel.

Unfortunately, for many such new graduates, falling into the grasps of the Imposter syndrome can burst a few bubbles. Most Tech-based companies, that we as graduates aim to land a job at, rely on a wide range of disparate and equally arcane technologies and tools. Also, to make matters worse, this domain of new technlologies is ever growing, with new and better solutions hitting the turfs everyday!

What can we do to avoid getting swamped with a load of tech jargon while simultaneously trying to figure out why no one is talking about concepts like, Arrays, Linked lists, Stacks and Queues that we spent our entire undergraduate years trying to wrap our heads around? The gap between what we get tested on in the interviews, and what we are expected to work on as Software Engineers is a wide one. However, there are a few things you can do to get prepared for bridging this gap in time for your first day.

Brush Up On CS Concepts

The foremost thing to start with is brushing up on your Computer Science concepts. This means getting re-acquainted with Database Management Systems, Operating Systems, Threads and Concurrency, Object Oriented Programming and Design, and Computer Networks. We all surely studied these topics in college, but this time the objective is not to get better grades but to gain better understanding of how these concepts impact real world systems.

The Ever So Powerful LINUX Commands

For most of us who have spent all our time working on Windows operating system, it might become a churn to even navigate effectively on LINUX based hosts. To avoid embrassing yourself by asking your mentor how to return to the parent directory (its cd ../ BTW :P), it is better to revisit the most commonly used LINUX commands that you might end up using everyday on the job.

Make Your Git Cheat Sheet

It can be scary for a new graduate with little experience in working with git repositories to navigate through the labyrinth of git commands. Fortunately, there are ample resources to refer and understand the most basic git commands (like git status) to the most powerful ones (like git cherry-pick or git rebase -i). Getting comfortable with using these commands everyday has its own learning curve, but making a cheat sheet to glance at everytime you forget the syntax can be a good start. Git is a surprisingly friendly tool and more often than not it would suggest you what commands you might need next, so atleast you have one friend on your side!

Familiarize Yourself With An IDE

All the development in companies happens on IDEs and most teams have a particular IDE that every member prefers and relys on. It might be Eclipse, IntelliJ, or VS Code to name a few. Most importantly these IDEs have features and shortcuts that can make your life as a developer easier while working on git repositories. It is a good idea to get hands-on experience on atleast one of the IDEs to become comfortable with the basic interface.

If you want to be absolutely sure which IDE to pick up, try communicating with a college senior placed at the same company that you are going to join and ask them what IDE is mostly used by the teams in the Organization.

Studying Up On Some New Concepts

After having gathered the above tools in your toolkit its time to go through some new but equally important concepts that are used not only in development tasks but also help build overall understanding of real world systems. You can read about concepts like Dependency Injection, Spring framework and Distributed Systems. Moreover, trying to gather a basic understanding of Service Oriented Architecture, Microservices and some of the important Design Patterns is definitely going to be helpful in the long run.

You can kick-start your preparation to make your Day 1 experience a little less overwhelming by using some (or all) of the above strategies. You never know, by using these tools you might end up asking some intelligent questions when you join your team and leave a lasting impression on your peers!

Thanks for reading my first post on Medium! Do leave a comment below to let me know if you found this post helpful and more importantly if there are pointers that can make it better.

A software engineer by profession I am here for nurturing my zeal to write and learn from a diverse community.