How I Would Have Approached Software Engineering if I Were To Start Afresh

Ampofo Amoh - Gyebi
5 min readJan 5, 2022

--

Photo by Andrea De Santis on Unsplash

After many bitter regrets I have decided to write this article. I hope it reaches you well. Let us dive in.

Follow the Money

A blogger created a meme of all the skill requirements on a LinkedIn job board and captioned it: “Employers please this is not a Full-Stack developer this is an entire IT department.” Someone commented under it “then I am an entire IT department”

There is a way you go about things that you know you are going to sell and there is a way you go about things that you have no intention of selling. If you are approaching software engineering as a profitable career, you will go about things differently from how someone, who is into it for the amazement from creating working applications goes about things.

One notable thing that will separate the two of you is the time it will take the person to become a professional software engineer — yes, those that are into it for fun will also one day, want to get paid for their skills. The one who right from the beginning thought of being paid for it will take less time to become a software engineer than the one who approached it as a hobby. One day, he too will become a paid engineer but that will take a longer time. Simply because he doesn’t know what the job market wants

Software engineering involves a lot of studies, a lot of interconnected languages and technologies will have to be studied before you can get a good job, some of which you might not use frequently but are important in various ways. Learning haphazardly or learning things if you think they are interesting, won’t get you there faster.

Learning many languages/technologies that are not connected too, won’t help you to become a professional software engineer.

Going the professional way first will let you know a plethora of skills that are related, which the job market wants and will take you a shorter period of time to learn them compared to someone who jumps from one language or technology to another without learning the boring and interesting parts of it before moving on. He will soon find himself going back and back again for languages and skills he skipped, and thought was not useful at the moment.
First, follow the money, you will have employable skills that will both make you desirable and mobile. After that, if you want to give away your skills for free, whatever you give, will be something, whoever you give it to will appreciate nice and well.

A former Google recruiter was asked to say one thing to people seeking to work for Google. She said that they should go to the Google careers page and read what the minimum and desired requirements are for a job and see if they are a good fit for the job.

Conclusion

Go search for in-demand skills, high paying skills, on job boards. Read what the minimum requirements and the desired requirements are, go and learn them. That is how you become a successful software engineer.

Learn Popular languages/technologies

Popular technologies are popular for two reasons: One, people like them, and Two, they are useful. They can’t be popular if they only had one and not the other. Do you think, if people liked them and they weren’t useful, that they would have been able to maintain their popularity, for long?

Because of their popularity, they will be posted as most job requirements, some of them will even be indispensable. Let’s say you want to study Python for web development or PHP, you will need to know JavaScript (ECMAScript), and for every web application project that there will be, there will always be JavaScript, always.

For popular technologies, which are technologies related to your language, it will be taken for granted that you already know them. Everybody, you meet on the street or behind the interview desk will expect you to already know them. For instance, if you apply for a Python job, they will expert you to know Django, Data Science and Machine learning.

For a beginner I wouldn’t advice you to learn a least known language. For a beginner, in my opinion, I think the pros outweigh the cons.

Pros:

1 — May offer higher wages. But sometimes not higher than the sexiest jobs out there.

2 — Relatively fewer people via for a job on a job market, not much unless of course the language is really old

3 — You could teach it as a job since, learning resources are scarce.

Cons:

1 — Resources to study are scattered and difficult to come by, and those that you will find are often outdated and are in the form of references. References are the most loosely connected form of documentation we have.

2 — You will be expected to be an expert. Not only will the work be demanding, they will have it listed on the job market that they are looking for an expert. So this is off limits to a beginner. The time it will take you to be an expect in that language can better be used elsewhere.

Conclusion

Learn Popular languages, they will always be required. Don’t be a Java developer without learning Android development, don’t be a python developer without learning Django, Data Science, and Machine Learning. If you don’t know these technologies, the regrets that you even bothered with the language will be many. Also avoid least popular languages if you are a beginner.

Heed to the Advice

There will be many. There is a reason. Anybody that has regrets, that has made a bitter error, will advise you, either in writing or in person.

There is an adage by the Ghanaians, it goes like this:

An advice will not change a man, but an accident will.

I can’t count the number of times and in different ways, developers told us to use the python Tuple type instead of the List type, but I ignored the advice didn’t think it was necessary. Now I have a project that needs to be re-written because of the avoidable List type that I used from the beginning.

Conclusion

Don’t be a person that ignores a good advice. There is a reason why the advice came. Apply it!

This article is born out of a book with the same title. Read it on Amazon

--

--