Is software engineering for you? (What I learned after working at 3 software startup)

Photo by Austin Distel on Unsplash

No Computer Science Degree

You might be surprised, but I don’t have a Computer Science or software engineering degree.

I am just an electrical engineering student.

Before you decide whether to trust me, allow me to introduce you a bit of my working experience in software engineering field (mostly internships during holiday).

My work experience at 3 small software startups

1st Job: Mobile App and Web developer (6 months)

2nd Job: PHP Backend Engineer (3 months)

3rd Job: Mobile App Developer (3 months)

All 3 companies I have worked for are smaller Malaysian software startup companies (10-60 employee).  

My experience will be biased towards this type of companies.

Opinion from friends at large multinational software company

To make this article more complete, I spent hours to consult my friends who have done internship at a large multinational software company in Switzerland. His opinion will be quoted in bold.

Now let’s jump into several important points for you to consider whether software engineering is for you.

1. Do Software Engineer have good salary?

Internship Salary

For internship of various type of degree in Malaysia, the allowance is normally in the range of Rm300 – Rm1000.

But I was offered a pay of RM2500/month as a software intern in my second job.

I have also heard that there are people who get offered RM3000/month for an internship position at multinational software company in Selangor.

Fresh Graduate Salary

For most fresh graduate of various different degree, the starting salary is usually about RM2700 – RM3000 in the job market.

However, my friend got offered RM4000/month for a role of backend software engineer, right after he graduated from a normal university in Sarawak.

I heard that in Singapore, software engineering fresh graduate can get offered 3000 SGD/month, which is Rm 9000++/month.

Salary may depends on individual capability, geographical region, company instead of industry

I have to stress that those figures are from my friends. It by no means reflect the actual average pay in the software engineering industries.

Some of my friends may be paid well because their capability is exceptional, not necessarily because they are in software engineering field.

Regardless of industries, people with exceptional capability are usually paid well anyway.

Also, salary is highly dependent on company and geographical region.

For example, my friend working at the large multinational company in Switzerland got a really high salary.

It is mainly because the company is really famous, and the exchange rate is high.

The company itself actually have very different payment schemes for software engineer in different geographical location.

Payment schemes in the US Silicon Valley is usually higher than other countries, but living cost is also higher there.

Photo by Burst from Pexels

Why salary is good?

Currently, the salary for software engineering is high, perhaps because there is a shortage in supply of IT talents.

Some companies have difficulties acquiring and retaining talents, so they have to increase the salary offered.

It is to prevent the competing companies from poaching away their workers.

There is why currently a lot of people want to go into software field.

We see that the supply of talent is increasing, and it is getting more competitive to get a software job.

If companies can easily hire talent in the next few years, the salary may not be as good as today.

Hence, it is risky if you choose to study Computer Science solely because of the good pay today.

This shouldn't be the sole deciding factor.

2.What kind of work to expect from a software engineering job?

For junior software engineer, most of the time is spent coding in front of a computer, and small amount of time in meetings with other team members and customers.

Long Working Hours and Tight Deadlines ?

My experience is limited mostly in smaller Malaysian startup companies (2-7 years old).

Working hours is flexible, and there is no punch card. Employee is tied by responsibility and deliverables.

Smaller companies such as startups in Malaysia tend to have longer working hours due to their need for agile product development.

In all 3 companies I have worked, everyone is assigned tasks with very tight deadlines.

It is quite common that software engineers here have to work extra hours frequently in order to complete the tasks before deadline.

Photo by Jordan Benton from Pexels

In some software companies, engineers are expected to work more than 8 hours a day, till late at night.

I have gone for an interview at a software company before. And they have explicitly warned applicants that long working hours should be expected in an email. ( I didn't work there)

Screenshot of interview invitation email

Luckily in the companies I have worked, the things mentioned above did not happen.

Extra hours are required on some days, but it is not so terrible until sustaining for several weeks.

Also, the management will provide free dinner for the software engineers whenever they have to stay back to work overtime.

Work extra hours during Weekends?

In all 3 companies, I have experienced that either the management or the customer have contacted me beyond working hours (weekends etc.) to do some tasks.   

There are several times where I received the customers’ messages 10pm at night, when I was about to go to bed.

I am totally fine to answer some questions for them. What I fear most is when the customer reports a bug/mistake on my end.

I am the type of person who cannot easily sleep with pending issues.

I felt very obligated to fix the issue immediately before I can go sleep soundly.

At that time, I really felt like completely muting off my phone notifications. So that I can pretend that I don’t know anything to drag on until next day to fix the issue.

Photo by Jamie Street on Unsplash

All in all, you can expect to work incredibly hard in a fast-paced environment in most small IT/software companies. It shouldn’t come as a surprise for anyone intending to enter this industry.

This perhaps is because the software/internet market is changing very rapidly. Software products that are not delivered quick enough will be outdated and worthless.

But I have to stress that all situations mentioned above are not unique to the software industries. For example, working as an auditor at the Big Four also have a very long working hours, but rewarded with very high salary.

Above is all limited to my personal experience at small company.

My friend working at the large multinational software company claimed that the working hours there are no different compared to the other job.

People who are not interested should not be a software engineer

This is the reason I cannot recommend people who don’t have an interest for it to become a software engineer.

Because the job will consume an extremely big portion of your life. Sitting in front of the computer to code for long hours can be quite boring and lonely.

It required a lot of mental energy to stay focus and think for a long period of time. People who don’t like it may find it miserable.

3. Environment of software engineering job

Younger employee (20-30 years old)

In my past work experience, most of the software engineer at startup software companies are very young people (fresh graduate or just graduated from Uni few years ago, 20-30 years old).

You seldom see people above 30 years old, except in the more managerial position.

Some may view it as a plus point. If you are a young person, it is always easier to communicate with colleagues of your age, compared to older (40+ years old) people.

In larger multinational software company, my friend saw that the majority of software engineer is young people, but there is still a healthy mix of people from different age group.

Flat organizational structure

Small software startup also has a flat organizational structure and less hierarchy, as opposed to larger company.

This means everyone is treated equally with respect, whether you are a CEO or you are a normal worker.

My friend that have done internship at a large multinational food company have shared with me that there are more hierarchy and “level” in the traditional corporate.

For example, employee that just entered the company, and those that have worked for 6 months have to  wear uniform with different colors.

Office facilities and environment

Office environment of IT companies are usually quite comfortable, with free flow of biscuits and drinks.

Some even have facilities like Play Station 4 console, Snooker, Bean Bag, Ping Pong in the office for employee to have fun.

Image by Jan Vašek from Pixabay

The whole idea of making the office environment very comfortable is such that employee are willing to work overtime for longer hours voluntarily.

The reality is, normally software engineers don’t really play with the facilities that much as they are racing against time to complete tasks before deadline.

4. Long term career prospects

Coding knowledge can get outdated, require constant learning

In my opinion, coding is a skill-based job not unlike being a technician or a chef.

The main difference for coding skill is it requires constant learning because the technology is changing so fast, so whatever knowledge you learn can get outdated quickly.

For example, a chef may need to spend a lot of effort to master the skill on how to cook a fish dish. He may be able to apply the same techniques for 10 years or more. The fish dish don’t get outdated so soon.

Photo by ELEVATE from Pexels

However, in software, frameworks and tooling get updated more frequently.

Every year, iPhone have a new model and a new version of operating system(iOS) with new features.

Sometimes, the same app that works well on old iOS version, do not work on the latest version.

It requires developer to learn about the latest changes and upgrade the app to make it work.

Personally, I had felt this frustration when coding the mobile app at an internship for 3 months. When I just started the job, I have spent a lot of effort to learn to code out certain features.

At the end of the 3 months, there is a major upgrade in the software framework. All the code I have written for the previous version immediately become outdated. Now I have to relearned how to code those features with newer version of the framework.

So every software engineer have no choice but to constantly learn new technology to keep themselves relevant.

Can people still do coding job as they grow older?

Some people said that it is difficult for older people to keep up with younger people in software engineering industries. Because young people have a lot of energy to work long hours and keep on learning new things.

While the older people who have a family, may find it more challenging to stay focus to learn and code. They have to spend more time taking care of their family and kids.  

There is also a soft limit to where the programmer technical skill can grow. For example, a senior programmer may get 10 times salary of a junior programmer. But the senior programmer may not be able to output code 10 times faster.

From the management perspective, it may be more worthwhile to hire more young junior programmers at a lower salary, compare to retaining the senior programmer with a high salary.

There may be some truth in the statement. I can see that the majority of employee in software company are very young people.

Sometimes I wonder, where have all the older software engineers gone??

The deep fear among programmers

There is a deep fear among the software engineers as they grow older.

Can they still learn as fast to catch up with new technology when they grow older?

Can they still allocate so much time for work and learn new technology, when they have a family and children?

How do they compete with the young fresh graduate right out of college, that is capable to learn new things very fast and full of energy?

This is perhaps why senior software engineers will begin to code less.

They are involved in more managerial and leadership position, like dealing with customer requirement, writing documentation, distributing tasks and guiding junior engineers. Instead of coding, they start to take on other tasks where junior software engineer cannot handle.

My friends have a slightly different perspective in this. He claimed that there are still senior programmers focus on working on difficult technical problem instead of managerial type of work in large multinational software company.

Image by Pexels from Pixabay

5. Prerequisites to get a coding job

Coding job is skilled based and more on meritocracy.

This means for people who have the skill, a Computer Science or Software Engineering degree may not be strictly required to get some of programming jobs, at least in web and mobile app development space.

In my first job, the senior programmer can code extremely well although he took a BioTech degree, instead of CS.

A lot of my colleagues come from backgrounds other than Computer Science. There are people is from Business degree, and there are also people without degree. Note that all of them can do the job very well even without a CS background.

In my second and third job, I started to see more peculiar stuffs. A lot of the senior software engineer in the managerial position have an Electrical Engineering background instead of a Computer Science background.

I consulted a few directors of the companies about it. Here is what they told me:

Regardless of their degree, a person can be good at coding as long as they are interested to constantly practice and learn it. Even a person without a degree can do the job well if he is interested.

That said, he told me he still preferred to hire people with Science related degrees (engineering etc.), as they normally have better problem-solving skills essential for the coding job.

For people who want to apply for a coding job, smaller companies normally hire by looking the past projects they have done. This is to determine if the person have the interest and ability in coding.

So that a good portfolio of past projects to demonstrate is important for any people intending to apply for an entry level coding jobs.

Conclusion

This is a long article, thank you so much for your patience for reading till the end.

Lastly, I want to emphasize again that everything written is my opinion based on very limited work experience at small software companies.

It is likely to be biased in some way. Because different type of companies had very different type of culture and ways.

You may not experience similar things as me if you enter the software industry.

If you would like to discuss with me about software engineering, feel free to message me. You can find me in the WhatsApp group or WeChat group below.

If you like to get more information about further study, feel free to join After SPM WhatsApp group or WeChat group (230++ students have joined).

WhatsApp Join Link:

https://chat.whatsapp.com/GxlWbNl81c62tm6FvnGp37

To join WeChat group add: skyletian97, will add you into group.

Message Us