7 things that I learn in my process to become a software engineer
Your first step is always be the hardest
Who is come here to become a software engineer? One year ago, I also in your position and wanted to become a software engineer. I remember when I was looking for jobs in the market, almost 80 percent of them were software engineer positions. Back then, I didn’t have any experiences related to software development. I also didn’t graduate from computer science program or other programs related to that. But, I applied for all software engineer positions with very high confidence. Maybe you can predict how was it, it was a total failure. I thought the industry will welcome us, a future engineer that doesn’t have any previous experiences in the field. But I was wrong, they wanted you to have all of the skills, knew all of the fancy tools, and had strong track records. After 70+ different companies rejected me, finally I got one and it only took me one month to got that from my first rejection. So, what is the main secret of mine to do that, without any previous experiences in the field?
Follow the tutorials to create your own application
Right now, a lot of recruiter want to see your portfolios as a software engineer. A free resource like youtube is the easiest way to start building your own projects, because you can follow tutorials in youtube and create several modifications from that tutorials. We also have access to several online course providers, such as Udemy, Coursera, Udacity. But they usually only give us a detailed tutorial for one particular project for one particular purpose. Like I suggest before, we can follow it and modify that tutorials, so we can make our own unique project.
You need to learn from failures to success
I’m still remembering my first job rejection, they didn’t send me any rejection email or give me any notifications about it. I knew that when I checked again the job post and realised it was already closed. It’s quite hard to admit that because I used all of my day to fill all of the applications and submit it. But, the feeling became different when I got my ten rejection. I was getting used to rejection and I began to think less about it. Even though I behaved like that, I always learned from one failure to another and started to improve my applications. There are two things that I did to improve it. First, you need to review your CV and make it personalised to the job position that you applied. Second, you need to learn the company profile, so you can write about it in your cover letter or explain about in when interviewing.
Lowering your expectation a little bit
Sometimes people always want to be a software engineer in the best of the best startup with cool offices and a lot of perks. We cannot deny those desires because every body want to have a good career in top startups and companies. I wouldn’t say that you shouldn’t do it, but honestly speaking, their requirement bar is very high and it’s really hard to join them. For someone like me that didn’t have any experiences or educations related to software engineering, I think it’s okay to lowering your expectation and apply for other companies that will give you a better chance to get this job. The other strategy is applying for an intern position. if you can show your skills and capabilities during your internship period, after that, there will be a chance that they will make you a permanent employee. This is my true story, I started as an intern in my current company and then the management considered me to become their full-timer (I’m the oldest one among the other interns, but it’s fun because I can learn a lot).
It’s okay to say I don’t know
Congratulations you are accepted to join our company as a software engineer. But when you are step in to the industry, you will have a feeling that everybody are more smarter than you because you don’t know anything. The natural responses from your mind is I should be the smartest in the room and know about everything. But, who knows about everything? you would like to answer with “my senior, my lead, and my CTO knows everything”. Then I would like to ask again “Are they born with all of those knowledges inside their brain” the logical answer is no. They also have been in your position, say “I don’t know” and start asking for help from other people. The first step in the learning cycle is discovery (discover what you don’t know), so it’s okay if you don’t know and it’s okay to ask and ask about anything to your senior.
You don’t need to learn all of the fancy tools
Docker, Kubernetes, Graphql, Spark, Tensorflow, and many other tools for developers are used by different companies and startups. Should I learn that? the answer is maybe yes and maybe no. The best question maybe is “Are you use it in your daily development cycle?”. If the answer is yes, you would like to learn it because if there are issues related to that you know how to debug it. But if the answer is no, I would like to suggest you learn something else that you use right now or something that you would use in the future. It’s not like you are racing with these technologies and tools. There will be new frameworks, and tools in the future, so it will be never ending race.
Always go back to the fundamental
The last point is you need to know the fundamentals. Why coding interviewers want you to analyse your code Big O notation? your code readability? and your testing scenario? because those all the basics of software development. they are not asking you about how many frameworks that you learn, or how many languages that you can code. Because in the end it’s only tools for us to program our computer and create our software or web app. So for software engineer, it’s okay to go back to your CS101 class and learn again about those fundamentals. Because it will make you a better engineer who can give best solutions for different problems.