10 Advice from current engineers to students aiming to become software engineers



Software engineer Mensur Durakovic has summarized 10 important pieces of advice on his blog for students aiming to become software engineers when getting a job in software development.

10 hard-to-swallow truths they won't tell you about software engineer job
https://www.mensurdurakovic.com/hard-to-swallow-truths-they-wont-tell-you-about-software-engineer-job/

◆01: University does not provide the necessary preparation for work.
Mr. Durakovich says that the university will help him find a job, saying, ``Before entering the pool, they explain how to swim, make you memorize the movements, take a test, and never even touch the water, and after five years, you get a license to swim. He compares it to swimming, saying it's like issuing a student's certificate and then suddenly kicking the student into the pool.

Mr. Durakovic said, ``For a new graduate student who has started a software engineering job, the first six months are like struggling desperately to stay afloat.At university, you learn some basics. 'However, the content taught at most universities is far removed from everyday work. Many university professors are not good software engineers.' He argues that people should learn to code.



◆02: It is rare to launch and proceed with a project from scratch.
At universities and tech camps, students are often given assignments such as writing programs from scratch. However, when you actually get a job as a software engineer, you will most likely be working on existing projects.

At a company, you will not be working alone, but with multiple people, working on projects involving thousands of lines of code over a long period of time, ranging from six months to several years. You have to read someone else's code, fix just a few lines of code, or spend an entire week fixing a nasty bug. You may also talk to colleagues to exchange information about the project and ask your boss to approve the solution.

◆03: You don't have to be obsessed with writing clean code
Naturally, other project members and code reviewers expect you to write clean code, but Durakovich says that he is rarely praised for it. 'As a software engineer, your main job is to create value for your users, and writing code is just a means to achieving that goal,' Durakovich argues.

Durakovic added, ``I've seen a lot of graveyards of projects built on terrible legacy code, yet these projects succeed in their purpose of solving user problems. Users don't know what the code is, they just want to see what functionality the product provides. Don't get too obsessed with clean and elegant code. Let's focus on shipping on time and bug-free.'



◆04: Sometimes I work with incompetent people
Durakovich said there is a general bias that only smart and talented people work in the IT industry. However, just like in any other job, there are incompetent people in software development. Incompetent people waste time and create an unproductive and toxic environment. And this environment causes project delays and wastes a company's money and resources.

Durakovich offers the following advice:

-Strive to be as efficient and productive as possible, focusing on yourself and not others.
Try a solution that doesn't involve the person in the process.
- Document everything you do.
- If work is delayed because the person is not working, ask someone else to do it if possible.
- Communicate directly and professionally with incompetent people and tell them what and how they can improve without being mean. There's no need to be mean to them.

◆05: Get used to attending meetings for hours on end
Meetings are extremely important when proceeding with software development. Some of them are meaningful, while others are just a waste of time.

Durakovic says, ``Most regular meetings that are scheduled daily or weekly are almost the only job of the person organizing them, so they are forced to take place, even though they are not productive. It is nothing more than an empty protocol to prove its purpose.'

However, some meetings can be productive and meaningful. Although the majority of software engineers dislike meetings, they can also help you share information with team members, communicate proactively, and better understand the work of other teams.



◆06: Estimates are requested many times.
Numbers are important in business. All projects have costs, and managers must estimate costs and time. Software engineers themselves also need to estimate their own work.

◆07: Bugs will be your enemy for life
The more you code, the more you realize that bugs are hidden throughout your code. When you first start a job, you think that once you've coded something and it works, you're done, but in reality, there are many things that can cause bugs, such as third-party libraries, hardware failures, power issues, etc. are sleeping in countless numbers. So you have to assume that everything has bugs.



◆08: Anxiety is always with us
``In software development work, you almost always feel anxious, for example, you are not 100% sure that the work will go according to the estimate you gave in advance,'' Durakovic said. There are many other factors that make software engineers anxious, such as project changes, job changes, employment stability, technological advances, and bug reports close to deadlines. However, Durakovic says this anxiety can be a driving force to become a better software engineer.



◆09: It becomes almost impossible to take time away from work.
Software engineers are constantly thinking about their work, problems, and bugs. Mr. Durakovich also said that when he was dating his girlfriend, he got into arguments many times, asking, ``Why are you using Slack even though you're on a date?''

In order to keep a clear separation between work and private life, Durakovich says, ``Turn off your laptop after work,'' ``Set a time to check work emails on your cell phone,'' and ``Turn off Slack notifications after you leave work.'' ” ``When I find myself thinking too much about work, I tell myself to take a day off and relax.'' ``I go for a walk or play sports after work.'' ``I try to be as social and social as possible after work.'' It seems that they are trying to make it easier.



◆10: Good soft skills are more useful than good technical skills
Soft skills are personal abilities and characteristics, such as communication with others, teamwork, thinking about learning, time management skills, empathy, friendliness, and patience.

While technical skills like learning different programming languages and being able to handle different situations are certainly important for software engineers, these skills can be acquired with practice. However, improving soft skills requires a lot of mental strength.

Good soft skills will make you more likeable and increase your chances of getting a raise or promotion. If you are technically talented but not cooperative, your chances decrease slightly. Also, if you have good soft skills, people around you will appreciate you behind your back. They may recommend you for various jobs without you even realizing it.



In conclusion, Durakovic says, ``Software development is not a dream job. In most cases, software developers are forced to work long hours, have little work-life balance, and are glued to their PC screens. Having an online presence outside the home can lead to stress and restrictions on your personal life.However, software development fosters continuous innovation and is in high demand globally across a variety of industries. 'It's great to be able to work while you're away. With flexible work hours, you can sleep in without having to set an alarm in the morning. You don't have to waste precious time and money commuting.'

in Note, Posted by log1i_yk