Overcoming the Coding Grind: How I Went from Novice to Software Engineer with These 5 Tips

Jhury Kevin
6 min readJul 11, 2024

--

a javascript code manipulating the DOM
Photo by Pankaj Patel on Unsplash

I still vividly remember the time when I was still starting out my coding journey. It was at times frustrating, but every bit of it was exciting and worth it.

I didn’t have a mentor or anyone to guide me. However, I had the drive to pursue a career in software engineering and the consistency to solve problems on a daily basis. In this article, I will briefly discuss my roadmap, habits, and some of the things I learned during my journey as a student up until becoming a level 2 software engineer working for international clients even before I graduated from college.

Software Engineering and my Background

I was studying a major in Computer Engineering at our local university. The curriculum is heavily based on low-level computer architecture, microprocessors, and embedded systems. These courses were sort of my foundation, but I already knew that modern applications development and software engineering itself is an entirely different animal.

Most of my knowledge is self-taught outside of what I learned from school. My degree program supports my skillset in a way that I can easily understand the inner workings of how my applications work, down to the hardware level.

1. Save Yourself from Tutorial Hell

YouTube and other free online courses provide good material when starting out with a framework. The problem I’ve seen on a lot of beginners is not the material they are watching, but on the habit they are building with regards to learning based solely on what YouTube videos provide.

Real-world software development involves reading lots of documentation, understanding a certain feature’s acceptance criteria, and creating your own algorithms. Tutorial videos are good, but they are also detrimental to your growth when you rely on them for everything. These videos are not allowing you to step out of your comfort zone and debug problems on your own.

Once you're done with a course, build a project on your own based on what you’ve learned. Use the codebase as a reference and build something on top of it. Add a new API, create new features, or modify the thing entirely to fit your specific use-case or problem.

2. Consistency

Once you’ve started to understand what you’re studying, the hardest part is to motivate yourself on being consistent. You can’t learn something today and set things aside for weeks.

Even for me, everyday wasn’t always a day where I was motivated to code and learn new things. I also took occasional breaks, but I always reminded myself on why I started on what I was doing in the first place.

Professional athletes weren’t gifted with their current abilities when they were born. It took hours and years of constant practice just to reach the current skillset that they have right now. The same principle applies to learning any new skill, including coding and software engineering.

3. Embracing Failure

To err is human. It is completely normal to fail at something. Committing mistakes are proof that you are growing and learning. Not having them is paramount to not challenging yourself enough.

If you are not making mistakes, you might be staying within your comfort zone and not pushing the boundaries of your capabilities. Failure provides valuable lessons and insights that success often cannot.

I myself, have failed a lot of times both personally and professionally at work. I have been rejected at a lot of companies, and I have sometimes failed to meet the expectations of my colleagues. You have to remember that these experiences are not something that lowers your value and ability to be a software engineer. Rather, they are a testament that you still have a lot of things to learn and improve within yourself to become better.

In conjunction, you can’t learn and absorb a huge chunk of information in the span of a week or even months. You can’t jump from a junior-level developer to a senior-level dev in just 2 weeks. It is also important to set realistic goals on how you want to improve. This not only makes the learning process less overwhelming but also gives you a sense of accomplishment as you complete each task.

4. Teaching and Networking

As technology moves forward and as more people are getting into studying tech, now is the perfect time to join organizations and become active in your local tech community. Networking opportunities can provide mentorships from industry professionals who are already experts in the field. You can talk with like-minded people, exchange ideas, and share your insights about what you’re currently working on. Networking events can also provide you with job opportunities to land your first dream job!

Teaching on the other hand is very close to my heart. With teaching, I can reinforce a lot of the concepts I have learned and help other people on their own learning journeys. When you teach, you are not only solidifying your own understanding but also contributing to the growth of the community.

By explaining complex concepts in simpler terms, you deepen your own knowledge, uncover any gaps in your understanding, and even improve your soft skills and communication skills. In my opinion, although tech-skills are the lifeline of this work, it is rare to find developers who can accurately express their thoughts professionally, and even personally.

5. Internships and Industry work

As developers, I hate to admit, we are biased with the code we write. As such, internships and industry work provide opportunities for you to have someone else review your work. This external perspective is invaluable as it helps identify areas for improvement and introduces you to best practices that you might not have considered.

Industry work also enforces you to adhere to standards which may vary from company to company. Internships allow you to deal with real-world problems, deadlines, and fulfilling your role within a team of professionals. This helps you develop strong collaboration and communication skills, which are crucial in any professional setting.

Closing Remarks

Before I end this article, I would like to share a bit of my roadmap before I graduated and the projects I did throughout approximately 2 years from my sophomore year to my Senior year in college.

2022 (2nd half)

  • Learned JavaScript through solving 2–3 challenges a day in 3 weeks using codewars.com (Reached 4th Kyu)
  • Learned React.js, react-router and Firebase as a BaaS (Created a hotel booking application as a personal project)
  • Applied to an internship at a local tech company where I developed React.js applications
  • Learned full-stack develop using the MERN stack. This included jwt authentication, express APIs, middlewares, etc.

2023

  • Joined competitions, hackathons, and ideathons to improve my ability to solve real-world problems at a broader scale.
  • Learned Next.js 12, Next.js 13, Prisma, and Supabase. Created rapid prototypes of different ideas me and my friends would think about.
  • Learned GraphQL and acquired the Apollo Graph Developer — Associate certification
  • Landed an intermediate-level role at a local company working for international clients where I developed custom systems using Next.js, GraphQL, Nest.js, and Laravel.
  • Developed a machine learning for object detection using detectron2 and Faster RCNN to detect microplastic found in sediments within the local region.

2024

  • Landed a new role at a US-based company where I am part of the core-team developing enterprise products.
  • Learned cybersecurity and intrusion detection methods as a foundation for my master's degree in Seoul.

I hope you learned something from my article. If you have questions, feel free to reach out at my socials and I wish you the best of luck in your journey to become a professional in the tech-industry. Kudos!

--

--

Jhury Kevin

Hi! I'm a Software Engineer with a passion for helping others