avatarDonovan So

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

2891

Abstract

oth came highly recommended to me by my peers. Now I shall pass you the baton.</p><p id="dd06"><i>Clean Code</i> dissects the craft of coding, from the high-level design of classes and functions, down to the meticulous placement of each space and line.</p><p id="f932">In contract, <i>The Pragmatic Programmer</i> provides more context on the soft skills needed by software engineers, such as how to plan and communicate effectively.</p><p id="c562">Both of these books will help any new software engineers tremendously, regardless of their role and discipline.</p><p id="5eb5">You don’t necessarily have to pick up these books (I’m not affiliated anyway), but do make it a habit to read and learn. Read other technical books. Pick up new languages and frameworks. Go to meetups. Talk to different people.</p><p id="281d">Admittedly, learning can get overwhelming and intimidating. There seems to be a never-ending list of technologies to learn.</p><p id="4f37">To address the problem, personal-development experts recommend acquiring knowledge in the “T” shape. That means try to learn a decent amount about one subject (like down-stroke in the letter), but also a tiny bit across a broad range of other fields (like the horizontal stroke).</p><p id="05fd">The “T-shape rule” not only applies to you as a software engineer. Occasionally, try picking up something that’s not O’Reilly. Read something that’s outside your expertise. Psychology, philosophy, economics, movies, history, music, bread making… anything.</p><p id="cd01">These are investments that pay dividends when you least expect them to. Say, when a new job opportunity arises. Or when your company puts you on a new project. Or when you are finally building that startup with your friend.</p><p id="dd1d">Or at the very least, it makes you a less boring person.</p><h1 id="3482">Common Sense Advice Is Still Good Advice</h1><p id="59fe">Our education has taught us to work with code, but not with people. People think “soft skills” are common sense.</p><p id="779d">But sometimes, you get overwhelmed with work. Sometimes, your brain just wanders off to the weekend. Sometimes, you simply forget. The following are actually drawn from the mistakes I made.</p><p id="6f1d">If you promised someone you’ll get back to them, make sure you do.</p><p id="b9f7">If you plan on doing something that affects someone else, be it changing someone else’s code, or taking a vacation, make sure you give people sufficient notice.</p><p id="8a44">If you are on a task, keep people (e.g. managers, teammates, users) posted on your progress. CC them in email communications (not <i>reply all</i>).</p><p id="5fd6">Tag your tasks (e.g. JIRA tickets, GitLab issues) appropriately, so people know who’s working on them and what the tasks are about. Keep people in the loop.</p><p id="b652">If you don’t understand, ask. Ask about the tech, the cod

Options

ebase, the infrastructure, the business logic, the people, everything.</p><p id="65ee">Don’t be afraid to look stupid. I once read a Japanese saying that says: “Ask and be embarrassed for a moment, not ask and be ashamed for life.” This still serves me well.</p><p id="aef7">If someone asks you to do something unreasonable, say no. Too often, fresh graduates like us are just seen as free labor. You get asked to design posters, organize events, schedule dinners, and other ridiculous things that are unrelated to your role.</p><p id="ca73">They take up a significant chunk of your working hours, distract you from your actual work, and cause you to stay late.</p><p id="d1af">If you find yourself caught up in miscellaneous tasks, voice your concerns. Set expectations and boundaries. Keep in mind what you’re hired for.</p><h1 id="4e71">There Will Be Good Days and Bad Days</h1><p id="6259">There will be days when you will fly through tasks. You will feel like Jeff Dean reincarnated. There will also be days when progress stagnates. You will be chasing down the same bug for days. Impostor syndrome will start to kick in.</p><p id="cd8d">Learn to understand that it’s all part of the process. Productivity is not linear. The hours you put in do not correlate to your output. Like exercising, there are good workouts and bad workouts. Like football teams, there are good seasons and bad seasons.</p><p id="14ae">In spite of what your Scrum master tells you, it’s a marathon, not a sprint. Constantly stressing about progress burns you out fast. There’s nothing wrong with taking time out.</p><h1 id="dd5b">Summing Up</h1><p id="e864">Software engineering is an extremely rewarding career. I still remember the day when my first project was released into production. And the first time I got to meet my users. And when they told me: “Your application helps us so much, you have no idea.”</p><p id="0295">That feeling is what gets me out of bed. To know that your work has an impact. To know that you made a difference.</p><p id="3356">Inevitably, your days will consist of ups and downs. Cherish the ups and learn from the downs. Bad things can happen. They may or may not be your fault. But like Mark Manson says: “It’s not always your fault, but it’s always your responsibility.” It’s up to you to dig yourself out of every bad situation.</p><p id="83f4">Keep learning. Knowledge opens up opportunities. Knowledge gives you leverage. Knowledge gives you autonomy. Also, learning something new every day is a part of what makes this job exciting.</p><p id="a5af">Finally, software engineering is a versatile career. You can work 9-to-5 for large corporations or freelance from a beach in Bali. You can work in any conceivable industry — finance, gaming, tech, media, advertising, retail… The possibilities are endless.</p><p id="58eb">That’s it from me. Best of luck!</p></article></body>

Lessons From My First Six Months as a Software Engineer

How to settle in, a few book recommendations, and other work advice

Photo by Lauren Mancke on Unsplash

In 2019, I graduated with a bachelor’s degree in computer engineering. Shortly after, I joined a company in Hong Kong as a software engineer. I have now been in this position for around six months.

Now that I have had time to collect my thoughts, I’d like to share with you my experience thus far. I hope it will be helpful to any new or aspiring software engineers.

Your First Days

Relax. Your company probably already has a list of to-dos for you. Things like setting up your bank account, going through training, getting access to computers and doors…

When you finally arrive at your desk, you should get access to your team’s code repositories, servers, and databases. Sometimes, the endpoints and credentials may not be well documented, in that case, you’ll need to proactively ask for them.

Get to know your way around the servers and databases. Learn how to read the logs, restart the services, and patch the data. You don’t want to be caught panicking when the server is down, people are screaming at you, and you’re the only one in the office.

Do not stress too much about not being able to contribute immediately. It took me weeks before I was able to commit my first piece of code. I was pretty stressed at that time until I realized it was the same for other new joiners.

Settling in takes time, especially if you have to struggle through legacy code with outdated (or nonexistent) documentation. If possible, pair program with someone experienced. You will learn the ins-and-outs of the codebase much more effectively than working alone.

We pair program a lot in our company because it allows new joiners and existing engineers alike to learn from each other. Definitely give it a try.

Book Recommendations and Personal Development

Two of my favorite software engineering books are Clean Code by Robert C. Martin and The Pragmatic Programmer by Andrew Hunt and David Thomas. They both came highly recommended to me by my peers. Now I shall pass you the baton.

Clean Code dissects the craft of coding, from the high-level design of classes and functions, down to the meticulous placement of each space and line.

In contract, The Pragmatic Programmer provides more context on the soft skills needed by software engineers, such as how to plan and communicate effectively.

Both of these books will help any new software engineers tremendously, regardless of their role and discipline.

You don’t necessarily have to pick up these books (I’m not affiliated anyway), but do make it a habit to read and learn. Read other technical books. Pick up new languages and frameworks. Go to meetups. Talk to different people.

Admittedly, learning can get overwhelming and intimidating. There seems to be a never-ending list of technologies to learn.

To address the problem, personal-development experts recommend acquiring knowledge in the “T” shape. That means try to learn a decent amount about one subject (like down-stroke in the letter), but also a tiny bit across a broad range of other fields (like the horizontal stroke).

The “T-shape rule” not only applies to you as a software engineer. Occasionally, try picking up something that’s not O’Reilly. Read something that’s outside your expertise. Psychology, philosophy, economics, movies, history, music, bread making… anything.

These are investments that pay dividends when you least expect them to. Say, when a new job opportunity arises. Or when your company puts you on a new project. Or when you are finally building that startup with your friend.

Or at the very least, it makes you a less boring person.

Common Sense Advice Is Still Good Advice

Our education has taught us to work with code, but not with people. People think “soft skills” are common sense.

But sometimes, you get overwhelmed with work. Sometimes, your brain just wanders off to the weekend. Sometimes, you simply forget. The following are actually drawn from the mistakes I made.

If you promised someone you’ll get back to them, make sure you do.

If you plan on doing something that affects someone else, be it changing someone else’s code, or taking a vacation, make sure you give people sufficient notice.

If you are on a task, keep people (e.g. managers, teammates, users) posted on your progress. CC them in email communications (not reply all).

Tag your tasks (e.g. JIRA tickets, GitLab issues) appropriately, so people know who’s working on them and what the tasks are about. Keep people in the loop.

If you don’t understand, ask. Ask about the tech, the codebase, the infrastructure, the business logic, the people, everything.

Don’t be afraid to look stupid. I once read a Japanese saying that says: “Ask and be embarrassed for a moment, not ask and be ashamed for life.” This still serves me well.

If someone asks you to do something unreasonable, say no. Too often, fresh graduates like us are just seen as free labor. You get asked to design posters, organize events, schedule dinners, and other ridiculous things that are unrelated to your role.

They take up a significant chunk of your working hours, distract you from your actual work, and cause you to stay late.

If you find yourself caught up in miscellaneous tasks, voice your concerns. Set expectations and boundaries. Keep in mind what you’re hired for.

There Will Be Good Days and Bad Days

There will be days when you will fly through tasks. You will feel like Jeff Dean reincarnated. There will also be days when progress stagnates. You will be chasing down the same bug for days. Impostor syndrome will start to kick in.

Learn to understand that it’s all part of the process. Productivity is not linear. The hours you put in do not correlate to your output. Like exercising, there are good workouts and bad workouts. Like football teams, there are good seasons and bad seasons.

In spite of what your Scrum master tells you, it’s a marathon, not a sprint. Constantly stressing about progress burns you out fast. There’s nothing wrong with taking time out.

Summing Up

Software engineering is an extremely rewarding career. I still remember the day when my first project was released into production. And the first time I got to meet my users. And when they told me: “Your application helps us so much, you have no idea.”

That feeling is what gets me out of bed. To know that your work has an impact. To know that you made a difference.

Inevitably, your days will consist of ups and downs. Cherish the ups and learn from the downs. Bad things can happen. They may or may not be your fault. But like Mark Manson says: “It’s not always your fault, but it’s always your responsibility.” It’s up to you to dig yourself out of every bad situation.

Keep learning. Knowledge opens up opportunities. Knowledge gives you leverage. Knowledge gives you autonomy. Also, learning something new every day is a part of what makes this job exciting.

Finally, software engineering is a versatile career. You can work 9-to-5 for large corporations or freelance from a beach in Bali. You can work in any conceivable industry — finance, gaming, tech, media, advertising, retail… The possibilities are endless.

That’s it from me. Best of luck!

Technology
Software Engineering
Software Development
Programming
Career Advice
Recommended from ReadMedium