Coding Chronicles: My Journey and the Roadmap
by Charles Acosta
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program. - Linus Torvalds
In my opinion, learning to program isn't an easy feat, but once you get it, it becomes second nature, and a career. As for myself, I aim to be a full-stack developer once I finish my college journey. Today I am going to talk about how I started from the bottom to all the way where I am now.
Early Beginnings
Prior to college, I had no interest in programming or computer science in general, and I was uncertain about my future career path. In my sophomore year of high school, I took an introductory Java class "for fun," which was my first exposure to programming. I enjoyed it and earned a B by the end of the year. The following year, I enrolled in an Advanced Placement Computer Science course and was excited about it until the pandemic hit in 2021. The pandemic made it hard to stay motivated as we were confined to our homes for months. By then, I was unsure about my major heading into college.
However, by my senior year, I reconsidered programming. I reached out to my former Java teacher, and we discussed different programming languages and career paths within computer science. Although I still wasn't sure what to specialize in, I decided to give programming another try and get back into the grind.
Going into College
Starting college was pretty straightforward for me, as I was able to adjust easily into the workflow. In regards to programming, the real beginning of my journey is through Java, a static programming language. In particular, the early parts of the course were a breeze as I was able to grasp fundamental concepts of it (OOP, loops, arrays, conditionals, etc...). However I struggled in deeper concepts that I wasn't exposed to before, namely file I/O, generics.
In the risk of failing, I decided to dig deeper through the world of online courses, and I am very thankful that they exist for all of us students to learn and improve upon. As I took these online courses, I became very confident in tackling these concepts and easily pass my class. The first semester I finished pretty decently. Soon followed the second part of the class, and it delved into more project based assignments that heavily utilized on what we learned before, and again, I was able to get a good grade through it.
Challenge Accepted
One of the most fundamental courses as a Computer Science major is Data Structures and Algorithms, and it was not an easy task to tackle. The previous two classes are vital to succeeding in this class, as it heavily relies on OOP concepts and often generics. The beginning of the course was manageable as we delved into the concept of a Linked List, which itself would become crucial as we progressed further into the course. We then moved on to stacks, queues, sorting, and binary trees. We didn't just use Java's built-in classes for them; instead, we were given pre-made code with a linked list implementation, along with additional methods for some challenge problems provided by our professor.
Maps, heaps, and graphs were the last data structures I tackled, and they were very challenging to understand and implement in code. These topics required an in-depth knowledge of not just the data structures themselves but also the algorithms that operate on them. For example, implementing Dijkstra's algorithm for finding the shortest path in a graph was particularly demanding. It wasn't just about coding; it was about understanding the theory and logic behind the algorithm and then translating that understanding into efficient, functional code.
Despite the challenges, this course was incredibly rewarding, and made me program better in general. It solidified my understanding of essential concepts and gave me the confidence to tackle more complex problems. It also reinforced the importance of problem-solving skills and persistence. By the end of the course, I felt more confident in tackling advanced topics in computer science and more capable of applying these concepts in real-world scenarios.
A New Chapter
Into my 4th semester, despite finishing data structures on a high note, I still didn't know what I would do as a career. My only knowledge so far was primarily Java and that was it. I needed to specialize in a field so I can develop a new career path onto the major I desired.
Initially I thought of software engineering, primarily with Spring Boot because it utilized Java, but unfortunately I wanted to do something different and specialize into something more interactive. And I thought of web development, primarily front-end development, thinking that it would be great for me to specialize. As for myself, I am amused in making static sites, and one day develop my own website for future employers to see my work, and so I started the journey.
The Roadmap
Based off my experience, I would recommend the following platforms for learning front-end development:
I started my web development journey with the YouTuber Bro Code. He provides easy-to-understand tutorials on web development fundamentals such as HTML, CSS, and JavaScript. I highly recommend his 2023 HTML and CSS tutorial linked here, and once you get the fundamentals, move on to his most recent JavaScript course to learn the basic and core concepts of JavaScript (my favorite language :D).
Once you have mastered the core languages of web development, you can move on to iCodeThis to put your skills to the test. In it, you try to recreate the UI designs as close as possible, and if necessary, sprinkle some JavaScript in your submissions for the "iCoders" to see. In my experience, this site really helped me get better with my HTML, CSS, and JavaScript skills, and you can use Tailwind CSS as well, which is how I learned it in the first place (I'll dig deeper into iCodeThis in a future article).
Next up I would recommend is Scrimba's Learn React course conducted by Bob Ziroll. First, register for an account on Scrimba, and once registered, there are tons of courses to choose from, and most of them are free. In the React course, Bob effectively explains the core fundamentals of the framework and provides mini challenges to get hands-on experience. This is the course where I was first exposed to React, and it definitely improved my JavaScript skills further. As a developer, learning React is vital for entering the job market.
The Result
After building a strong foundation in front-end development, I decided to undertake more ambitious projects. This led me to explore Next.js, a meta-framework built on top of React, and TypeScript, a superset of JavaScript that includes static types and catches errors at compile time.
By working on more complex projects with Next.js and TypeScript, I was able to apply my front-end development skills alongside some back-end development. One notable project was a full-stack application for my college's club, which we developed as a course sniper application to benefit the university.
Building applications requires time and organized planning regarding the features and functionalities. During the development process, encountering errors is inevitable. However, the satisfaction of overcoming these challenges and completing a project is very rewarding. It is important to acknowledge and celebrate these achievements as milestones in one's development journey.
Final Thoughts
Reflecting on my journey, I realize that learning to program is challenging but incredibly rewarding. From my initial exposure to Java in high school to mastering complex frameworks like Next.js and TypeScript, each step has been a testament to perseverance and growth. As I aim to become a full-stack developer, I am excited about the opportunities in the tech world. Embracing continuous learning, problem-solving, and persistence has shaped my path, and I look forward to the future opportunities and challenges that will further refine my skills and career.