My Journey From Novice To Software Engineer: Lessons Learned in Learning to Code

My Journey From Novice to Software Engineer: Lessons Learned in Learning to Code

My first day at work on the 21st of September 2020 was revolutionary. I walked into the office, sat at my desk, and had the world washed over me. Just an hour prior, I had been handed the honor of becoming a software engineer, a title I had never even dared to imagine for myself. The office was reminiscent of a classroom, socially distanced colleagues in masks, and me fumbling with a Java tutorial. Imposter syndrome and regret had already set in, whispering in my ear, 'What have I done?'

Challenges in Learning to Code

Fast forward six months, and the same restless anxieties still plagued me. The reality of my skill level was a stark contrast to the expectations placed upon me. The senior developers in the team were far ahead of where I stood, and this realization cut deep. This emphasizes the importance of setting realistic expectations for any new skill, especially a cognitively demanding one like coding. Understanding your learning style is crucial to making progress in this area.

Classroom-style training was what I was used to, and unfortunately, I found online lectures to be ineffective. Your learning style is a crucial factor in determining your best mode of instruction. If you thrive on structured, in-person learning, online lectures might not be the best choice for you. Practical-based coding tutorials, such as Hyperskill, Codeacademy, and FreeCodeCamp, are highly effective for beginners.

The Journey to Proficiency

Learning to code is a tiered process, not a binary outcome. It involves exposure, experience, and proficiency. Exposure is when you can read the syntax of a language but need extensive reference materials and practice to become comfortable. Experience is when you can perform basic operations and be productive with the language with some reference materials and a fair amount of time. Proficiency is when you can do most work related to your role without reference materials and can handle common tasks with ease.

During the exposure phase, I relied on Pluralsight, but found the instructors too boring to retain the information. Practical-based platforms excel in providing hands-on learning. They ensure you practice what you've learned and test your code before moving on. This method is invaluable for beginners as it fosters a deeper understanding of the concepts and encourages frequent application.

The Value of Practice and Patience

Extrapolating from my experience, it became clear that practice is key. Your brain only retains what it deems useful. When you're learning to code, practice is not just beneficial but essential. Setting up your own project environment and applying what you've learned to create small applications can be extremely effective.

Consistency and patience are also vital. As a junior developer, these were the two things that held me back the most. Patience with yourself and consistency in your approach can significantly enhance your learning curve. Be gentle with yourself and progress steadily. Remember, Rome wasn't built in a day, and neither was your coding journey.

Conclusion

Learning to code is a challenging yet rewarding journey. Setting realistic expectations, understanding your learning style, and choosing the right resources can make a significant difference. Patience and consistency are your most powerful allies. By putting in the effort and maintaining a balanced approach, you can turn the tides and transform from a novice to a proficient software engineer. Embrace the challenges and keep pushing forward.