From zero programming experience to a Full Stack Developer

Himath Perera

Full-Stack Software Engineer

Hey folks, I’m Himath Perera, a full-stack software engineer at Surge Global – and here’s how I became a software engineer without any prior engineering experience. (And mistakes I made along the way and how you can avoid them!)

After completing my GCE Advanced Level examinations, the last year of secondary school in Sri Lanka, I had a dream to start my career as a Software Engineer. To take the first step in my journey, I enrolled in SLIIT Academy to begin my computer science degree in 2018.

The first lesson in my degree program was about the basic concepts of coding, where we learned how to code in the C programming language. The variables and concept of arrays was difficult for me to grasp, as a beginner in the field. The other subjects were not difficult, and I completed my first semester with a general pass for ‘Introduction to programming’. My second semester explored more advanced topics, and was focused on data structures and OOP (Object Oriented Programming). The subject material was challenging to understand at first, as the lecturers started implementations using the Java programming language which I was not very familiar with. The experience made me feel a little overwhelmed! 

I was about to drop out of my degree program since I had been starting to feel frustrated, however, there was one small hope that kept me going — I started from scratch.

First I watched YouTube videos on basic HTML and CSS, and started implementing what I had learned on small web pages. At this phase of learning, I didn’t have a clear idea of what I would gain by implementing small web pages. Since my colleagues were so far ahead with programming, I started learning small JavaScript tricks to make animations and other functions with their help. This initial step got me really excited, because I realized that I really was able to learn how to program.

While I was learning HTML and JavaScript, one of my friends was talking about a library called React JS. I was curious and wanted to give it a try, so I started watching beginner tutorials. At first, it seemed super easy and I felt confident, so I slowly began to implement small web apps with the help of React JS. One day, I was stuck with application state management. To figure out the best way to overcome this, I contacted the friend who introduced me to React JS in the first place. His solution was to clean up the components tree and manage the state in the higher components. After a long tech term-filled conversation, I realized that my React JS and JavaScript knowledge were not as good as I had thought, and this was the cause of most of my problems.

Finally, I started learning JavaScript all over again. This time I downloaded a Udemy course (linked in the end!) on basic JavaScript coding and watched through the entirety of the course. I also completed the tasks and mock applications as the course progressed, which really helped me understand the bigger picture of programming. Though there were some unique concepts for JavaScript, the basics of programming apply to all the languages, and I found that working with React JS was more enjoyable and easier to understand after learning JavaScript. As a follow-up, I furthered my understanding by following a well-structured course to practice React JS.

In a nutshell, my experience in learning one programming language paved the way for easy learning of any framework, library, or other programming languages.

After overcoming the struggle I had with programming, I moved on to studying different frameworks and working with different languages. These included:

  1. NodeJS and Express Framework
  2. VueJS and Quasar Framework
  3. PHP and CodeIgniter
  4. Java as a service
  5. Rest API and GraphQl
  6. No SQL and SQL databases
  7. GIT (quick tip: learning git commands is a must as a beginner!)
A screenshot of one of my first mobile responsive application designs.

I began my internship during my final year of university since it was a requirement for my program. I felt confident with my JavaScript knowledge and was ready to take the first step in my professional career.

The internship required familiarity with VueJS. Though I have never used VueJS before, I was confident with my JavaScript knowledge, so I decided to apply and after three interviews, I got hired!

During my time as an intern, I worked with PHP, GraphQl, GIT, and VueJS while gaining a lot of exposure to CI/CD (Continuous Integration and Continuous Deployment) pipelines and experience with tight deadlines on projects.

Recently, MERN (MongoDB, Express, React JS, Node) stack has gained popularity, and beginners start to learn React JS and new frameworks without understanding the core concepts of JavaScript or programming. This could lead them to quit programming or will lead to bad practices because they don’t have a clear grasp of the fundamentals. The goal of this blog is to prevent others from making the same mistakes I did.

No one can guarantee a certain programming language will keep its popularity over time — the tech industry —including coding and programming as a whole— is always evolving. Career opportunities might change with new tech stacks, so isolating yourself in a certain tech stack may not be an enjoyable experience in the long run. It’s important to always explore new technologies and try to get as much exposure as possible.

I really enjoy sharing my story with the community. I’m still in the process of learning programming, and it’s a consistent journey of learning — I’m always open to suggestions to improve!

If you feel that your progress with programming is stuck for a long time, try going back to the basics and figure out if you have mastered the language or core concepts of programming. If not, it’s worth investing some time in the basic concepts.

Resources:

  1. JavaScript course
  2. The Net Ninja, Programming with Mosh, Dev Ed (For basic programming concepts)
  3. React JS course [Udemy]
  4. Node

Himath Perera

Full-Stack Software Engineer
Himath Perera is a full-stack software engineer at Surge Global. He enjoys coding and has a Bachelor of Science in software engineering from the University of Bedfordshire. Cycling is his hobby and he loves to paddle and explore new sights. Also, he never forgets to snap beautiful landscapes when he paddles. Himath has lots of experience working as a software engineer in large-scale applications and wants to share his knowledge with the community. He is a believer in making big changes with small steps.

Share this post

0 Comments

Submit a Comment

How can we help?

Talk to our experts today.