My Journey in Programming So Far ; 16months of Programming

My Journey in Programming So Far ; 16months of Programming

ยท

9 min read

"Computer programming is the process of writing code that instructs how a computer, application or software program performs or behave. At its most basic, computer programming is a set of instructions to facilitate specific actions. If you're wondering what a computer programmer is, it's a professional that creates instructions for a computer to execute by writing and testing code that enables applications and software programs to operate successfully. -- snhu.edu/about-us/newsroom/2018/06/what-is-.."

Getting Started

My interest in programming started many years before I actually took the step to start learning. Unfortunately, I hadn't taken the step to start learning because I somehow had the notion that it was far too complex for me to understand and that only people with the highest IQs could do it.

I come from and currently live in Ghana, a peaceful and serene place considered a "third-world" country. I lived and grew up in London, before relocating back home in my teens. My journey to teach myself programming started 16 months ago, at a point where the world looked bleak and lost due to Covid. I came across a video on YouTube talking about "Bug Bounty" and thought it was pretty awesome. I further researched on how best one could get into "Bug Bounty" which is essentially Ethical Hacking (White Hat); though being able to code wasn't a must but rather considered a benefit. My research from various resources(blogs, YouTube, tweets etc.) showed that being able to program would help in writing my own scripts to automate some processes and make me a better PenTester; studying the basics of Networking was another prerequisite. Fueled by this information I decided to take the leap of faith.

"At this point, I had been through University to study BSc Admin, Banking & Finance (Major) and had no interest in pursuing a career in this field"

Deciding on The Programming Language to Learn First

Now that I had decided to take the leap of faith, all that I needed to do was decide what programming language to start with. At this point I didn't know what path I wanted to pursue even though Ethical Hacking was what motivated me to start initially; I just wanted to learn a programming language. The next headache which I believe every beginner has experienced would be deciding what programming language was best for me. Research on this caused more headaches as I quickly realized it seemed like a war of opinions going on between lovers of the various languages. Nonetheless, I decided to go with Python simply due to its general purpose nature. Python is used for web development, AI, machine learning, operating systems, mobile application development, and video games and also, its easy readability and likeness to English.

Once I began and had written my first program, helloworld.py. I had instant gratification and I knew the more complex the things I was able to do through coding got, the better that would make me feel. I pushed on learning and practicing through the Covid lockdown. The months that followed saw me getting new interest in various technologies and still staying on track so I didn't deviate. I moved to programming on Linux, specifically Kali Linux which is a Debian-derived Linux distribution. I did this because I wanted to add Linux commands and how the OS worked to my skillsets, while also being able to improve upon Web App PenTesting(Ethical Hacking). I began web development and freelancing for friends, family and clients I met through networking with people to build my skills; something I did using Python's Django Web Framework. I also picked up on HTML, CSS, JavaScript and jQuery to make me a better web developer. In order not to cluster my brain too much I held off on getting into any JavaScript Frameworks I also learned from interacting with seasoned JavaScript developers that, working with JavaScript at its low level and particularly JS DOM manipulation. Currently, I consider myself a complete newbie in REACT JS as I only just started the basics.

"I felt overwhelmed, sometimes thought I was just wasting my time and just wasn't as good as all the developers I see online. This feeling was something I hated; a feeling I soon came to know as "Imposter Syndrome".

Advice for Beginners and What has Worked for Me

  1. Don't get caught up in what the best programming language to learn first is. From my experience I have found that once you learn the basics of one language, learning or adding another to your skillset is easy. This is primarily due to the fact that the fundamentals of programming are the same no matter what language it is; the major difference being their individual Syntax. In addition, I've ended up working and using different languages beside Python, such as JavaScript and C# as well as the various array of libraries and frameworks that complement each of those languages. Of course HTML and CSS have also been a part of my journey as I consider myself a Full Stack Developer.

  2. Setting dates and timelines. Depending on whether you want to freelance or work for a tech company, setting goals that are date specific are important. This will allow you to easily track your progress and help you measure your development. Furthermore, deciding how many hours a week you'll set to learn to program and practice is important, coupled with taking regular breaks and getting enough rest.

  3. Don't doubt yourself, especially when you hit a block. There have been times when I struggle to get the code to work as intended and of course I turn to every programmers best friend, Google. I would subsequently go through the suggested resources and see various answers or similar questions. I am sometimes blown away by the wealth of knowledge that people have concerning a topic or about a language in general. In the early stages, this would put me down and make me feel as though I had not learnt enough or would make me feel like I wasn't cut out for this. Lucky for me, I knew this was essentially what many called "Imposter Syndrome" and that was not a feeling I enjoyed having. Don't get me wrong, I still experience that sometimes but I don't let it overwhelm me. Most recently I was practicing on Codewars and after solving a challenge that took me quite sometime to solve and gave me headaches, I went through the solutions and I saw that people had been able to solve the problem in one line of code. I didn't feel dumb or lost, I just simply understood that there were so many ways to solve each problem. The built in Python Method which enabled them to write the solution in one line, was what I had essentially written as my function. This built my confidence because I knew if I was able to write my own function to work exactly as a built-in Method, then I must be improving. A positive was that I had added a new Python Method to my arsenal.

  4. Do coding Challenges and start using Git and GitHub early. Coding challenges are very important since they help you stay well versed in your programming language and teaches how to solve problems using it. There are many resources out there and solving one coding challenge a day will improve your knowledge vastly. These resources shouldn't be used only when preparing for job interviews. Some of these resources are: Codewars, LeetCode, HackerRank, TopCoder, Codeforces, Coderbyte and freeCodeCamp. Early use of GitHub is important as you will get used to Git commands which are essential for contributing to projects and working with other developers.

  5. Don't try to memorize Syntax and don't overwork yourself with trying to write the "cleanest code". This is a sure fired way to discourage yourself and give Imposter Syndrome room to grow. The best way to improve your skills would be to code regularly and not to take practicing for granted. You cannot memorize the whole Syntax for a programming language and when you come short or don't remember something, no matter how basic you may think it is; there is no shame in using Google to find your answer. This over time I've learnt has made me better because I spend less time searching for what I want since I know what I'm looking for when I search and how to search for it.

  6. Avoiding Tutorial Hell - Stick to project based learning. The first step in actually starting your own project may be hard and potentially confusing. You may feel like you've learnt enough after going through a tutorial to build a project but get lost when you try to do it on your own. This I think is because most tutorials start of by showing the finished product (a demo) of what they'll guide you to build and often just jump straight into starting the project build; essentially skipping the first step, which is planning the project. This may include designing/drafting the wireframes for the frontend, noting the features the project needs to complete the build, its usability on the various devices and formulating a schedule to keep you on track and know what to build next. By doing this you will have a great start to building a project on your own and getting out of "Tutorial Hell". Now, building a project on your own doesn't mean you don't ask questions or research how to implement features. I suggest you follow the plan you've made and research on how to create features that you don't know how to build on your own and after a while you'd realize you're more confident when starting and most importantly finishing projects.

  7. Google Dorking. This has helped me to find information on any topic that I struggle to get an answer to when I'm solving a problem. Although I first came across this term through learning Web App PenTesting, I have used it to help me solve programming challenges, while developing or just trying to get more insight on a topic of interest.

Conclusion

I consider myself to be a self taught programmer, with interest in Full Stack Web Development, Web App PenTesting and Open Source technology(something I'm completely new at and still figuring out how to be effective in terms of contributing to it). The journey has been full of ups and downs; one I've enjoyed and glad I began. Reading other peoples blogs on various topics has lead me to start blogging and cataloging my progress. Future blogs will cover numerous topics including projects I've worked on and other technical knowledge I want to share.

This is the first of many, please like this article and follow me on Twitter and LinkedIn

Cheers ๐Ÿ™Œ

ย