I'm nearing the end of my 7th month working professionally as a software engineer, and in that time, I've learned a lot about working in the industry. Here are some of the things my CS degree didn't directly prepare me for.
(Folks who have already been pros for a couple years likely know all this already, but as a recent grad, I think this will be helpful for people who are still in undergrad.)
You have to attend lots of meetings.
This is not exactly a secret. This is also not necessarily a bad thing (I don't mind meetings). However, if you're not used to meetings, it can take some getting used to. Personally, I don't have that many to attend just yet, but I'm sure the amount will increase over time. Some people gravitate towards programming jobs because they think they "won't have to talk to people," but that's far from the truth. You don't need to be the world's biggest extrovert, but just know that there's more to the job than just coding.
Communication is important.
Communication skills in general, but I'll get more specific. Knowing how to properly communicate can save you lots of time, and prevent lots of problems. But at the same time, don't stress about it too heavily. At entry level, especially during a work-from-home period, don't expect to do everything perfectly when it comes to proper communication. Just don't be a jerk.
At this point, the solution to many of your problems will just come down to being able to communicate the problem. Here are some things I was nervous about before starting, that so far have just turned out to be about not being afraid to ask questions.
- How to ask the right questions of your team leader and other colleagues (just ask!)
- How to know what people expect of you (ask!)
- How to effectively communicate with other teams (ask them!)
Also, if you don't quite understand something during a meeting, don't be afraid to ask for clarification. After all, you're an engineer - gathering all information necessary is part of your job.
How to ramp up on existing code that has been there for years before you
Most likely, you are not the first programmer to work at your company. It can honestly be pretty intimidating to try to tackle the existing code. My suggestion is that, instead of going about it completely alone, ask your teammates for an overview about the codebase, and take note of the most important pieces. You won't grok it all immediately, but that's fine. The more exposure you get to the code, the better you will eventually understand it.
At an entry level, you will likely be doing "boring" tasks for some time.
If you have the passion for software, this is not a problem. Just be patient. But generally, don't expect to be working on necessarily the flashiest thing right away. Even if you do work on a team like that, you still have to ramp up. This process always takes time, so if you're a junior engineer, it'll probably be a while before you're ready to have a little more say in your work.
Time management is critical.
At the end of the day, nobody is going to do the work for you. And nobody is going to hold your hand to tell you exactly what to do, and when. If promotion is your goal, optimize for that. If you fly by the seat of your pants, you might just be wasting your own time.
Especially if you are working from home, it's easy to get distracted when you work at a computer. I've personally found success with the Pomodoro technique and time blocking, but your mileage may vary. If you, like many other people (myself included), struggled with time management in university, don't stress. You have time to figure out.
The easiest way to get started is to just pay attention to deadlines, and when you have meetings. If I find myself working on a task beyond the date I expected to finish by, it's usually a sign that I could have managed my time better. Likewise, if I head into a 1:1 meeting with my team leader and have nothing to talk about or give updates on, I could likely be managing my time better.
Things from your degree that will help
- Data structures and algorithms knowledge, obviously
- Knowing how to test and debug code. You will eventually make a mistake. It's okay.
- Math, for calculating your salary (just kidding)
- Documenting your thought process before tackling a problem.
It's ok to figure it out as you go!
These are ultimately things you will have to learn from experience. Books and videos can help, but at some point you're just going to have to wing it, and that's ok.
Leave a comment on this post!
I went through several drafts of this, since TBH I wasn't sure whether people would like it. Was this valuable information to you? Should I post more things like this? Thanks.