Learning to Code | My Struggles

Something every developer has faced during their life. Learning to code and program isn’t an easy task, it can be difficult and really frustrating. From my experience I went through countless programming languages, tutorials and projects before I even considered myself at being proficient at coding. The reality is it’s a steep learning curve and the programming language is only half the battle, the concepts and techniques you learn with it are arguably more important than the language itself.
My first real experience of “coding” was doing my A Levels in school. We used Microsoft Access to build a database and used small snippets of SQL. However Access provides such a high quality GUI I rarely needed to implement my own SQL. Further to this we also made a website as apart of our A-Level project which was made through Dreamweaver, again a program which allowed you to design web pages by adding elements as opposed to coding the HTML yourself. This experiences left me frustrated as I wanted to understand and get a real grasp of what programming was.
I had spent time at Code Camps over the summer where we used MIT’s App Inventor. Although I managed to develop a decent Android App through this and became a finalist for the Code Camp. The drag and drop nature of App Inventor still felt to me like I wasn’t properly programming. Perhaps this was because I had a pre-built notion in my head that programming was writing out thousands of lines of code on a dark themed code editor. In reality these learning experiences were helping me learn a lot about the skills of programming. For example sequence control, logic and debugging were all concepts I learnt developing that app. I just never considered this at the time.

So what did I do?

I volunteered at a local code club called Coder Dojo which is a global volunteer-led community of free programming clubs. I used this experience not only to help young programmers to code using programs such as App Inventor, Game Maker and Scratch. It gave me access to speak to other people in industry and ask them what programming language I should learn. I got a different answer from each person which again left me frustrated and confused.
Eventually I ended up choosing C++ as I found a C++ programming book in a shop. This was a bad choice. Not only did I try learn programming like I would for other subject i.e taking lots of notes. This led me to not practicing coding as much as I really should have. It also got me to a point in learning of C++ using memory management and pointers which completely confused me. The reality was printing meaningless things out to the console and working with variables bored me when trying to learn the language. I wanted to build “cool” things and experiment.
I continued trying lots of languages such as HTML, Javascript and Java. Making progress to some extent and learning bits along the way. Even after my first year of University spending time learning Java for a full year did I feel that I had a true competency with the language. This was mainly down to the fact our programming assessments on Java were testing specific concepts we had spent time learning e.g Inheritance, Encapsulation, etc. This was useful but it was very “code this to show your competency in this programming concept”, which is fine and is important.
However it wasn’t until I spent the summer working for a company working with an Angular application did I start to feel I was getting the hang of this programming business. All the concepts I had spent learning over the past year were consolidated with real world examples of how they were useful. I could start to understand the importance of good variable naming conventions, clean code, making sure my code made sense and easy to read. For the first time I started feel I had a fluency to my programming and coding. I had an understanding and reasoning behind every piece of code I made. I can’t express enough the importance of real world experience in comparison to University teaching. The skills you learn are invaluable. It gave me confidence going in to my second year with a different mind-set. I knew what was good programming and bad to which I applied to my second year Android project.
To conclude having a pre-built notion of what programming is and how it should be done can hinder your progress. As long as you are doing something then you are on your way to learning programming. It’s not an easy thing to learn especially when there are an abundant of options out there and everyone will learn a different way. I hope shedding some light on my experience of learning to code can help someone else.

Comments