Full Guide: Learning Coding for Beginners - Start Your Programming Journey

Start Your Programming Journey


Mastering Code: Essential Insights for Aspiring Programmers – What I Wish I Knew Before Starting My Coding Journey

After four intense years immersed in the world of Computer Science, I find myself reflecting on the journey. It's been a rollercoaster of discoveries, challenges, and immense growth. Looking back, there are certainly things I wish I had known before I typed my first line of code. For anyone embarking on their own coding adventure or looking to refine their path, this article shares crucial insights that could make all the difference. Welcome back to my channel, and for those new here, I'm Savier Rapri! I’m currently a fourth-year undergraduate student at the Korea Advanced Institute of Science and Technology (KAIST), double majoring in Computer Science with a focus on data science and artificial intelligence (AI), and Business Technology Management.

So, let's dive right into the lessons I've learned and what I wish my past self knew before I started coding.

1. Cultivating the Right Coding Mindset

The first and arguably most crucial element for anyone looking to start coding is developing the right **coding mindset**. This is often overlooked, even by myself initially. What exactly is a "coding mindset"? For me, it's about fostering a **positive attitude** towards coding from the very beginning of your learning journey. Why is this so vital?

During high school, I took a class that involved coding. From the outset, I remember thinking, "Coding is hard," or "Coding is complicated." This ingrained belief—that coding was inherently difficult—held me back significantly. Until my second year of university, I genuinely believed I couldn't excel because I perceived coding as an insurmountable challenge. Coincidentally, my computer science grades in high school weren't as stellar as my biology grades, which only fueled my insecurity. I'd often wonder, "Why am I pursuing computer science when my grades aren't even that good?"

It turned out that this very mindset was the biggest barrier preventing me from developing my coding skills to the next level. It constantly pushed me to think, "No, it's too difficult; I'll just fail." This negative self-talk is incredibly detrimental when learning something as iterative and problem-solving-oriented as coding. Shifting your perspective from "it's hard" to "it's a challenge I can overcome" is a game-changer.

Another critical aspect of the coding mindset is embracing **consistency** and understanding that **nothing is instant**. Unlike, say, a memorization-based class where consistent studying might yield immediate results on an exam, coding demands a different approach. You can't just cram a few times and expect to become a proficient coder overnight. To truly master coding, you need to be consistent, constantly working on projects, and frequently applying what you learn. It's a journey, not a destination.

Personally, it took me over three years to feel truly comfortable with coding. And this is coming from someone who has been learning code for five years and whose academic major is computer science! Even with dedicated study and a formal education, achieving comfort takes time and persistent effort. So, don't get discouraged if you don't see instant results; progress in coding is often gradual but incredibly rewarding.

Finally, a crucial part of the coding mindset that I always keep in mind and wish I had known earlier is that in coding, programming, or computer science, you will encounter a significant amount of **error, trial, and error**. For those just starting, this might not be immediately apparent, but anyone deep into coding knows the constant battle with errors and bugs. There's a common saying that coding is only 20% of the journey; the remaining 80% is spent **debugging** or fixing the errors you encounter. This highlights the importance of consistency and resilience. You need a strong, tenacious mindset to truly learn coding effectively, as troubleshooting becomes a core part of your daily routine.

2. Defining Your Coding Goal: What Do You Actually Want to Learn or Build?

The second insight I wish I knew before I started coding is the importance of understanding: **"What do you actually want to learn from coding?"** Or, more precisely, "What do you want to achieve with coding?" I've compiled notes on my laptop about this because it's a question that frequently comes to mind, especially when I struggle with a course or feel like a particular field isn't the right fit for me.

Why do you want to learn coding or programming? If we consider the context of computer science and its application in various industries, there are numerous roles and divisions within the coding landscape. If you're unsure, still exploring what you want to gain from learning to code, or what you aspire to build, that's perfectly fine! My strong recommendation is to **educate yourself as much as possible until you find what truly fits you.**

For me, this exploration happened through university. Honestly, before entering college, I wasn't entirely sure which field within programming or computer science I wanted to pursue. It took time and exposure to different areas before I finally felt comfortable and passionate about data science and AI. (If you're interested in why I chose data science or AI, please let me know in the comments below!).

When applying coding skills in the industry, there are many common roles. For example, do you want to code to build your own personal projects, like a website? Or are you aiming to secure a job in the coding field? My advice is to **research different fields** to understand what sparks your interest and what each role entails. This way, you won't approach coding with a "blind eye."

After interning at an IT startup focused on AI in Korea, I observed several roles that are consistently in high demand within companies:

  • Frontend Engineer: Primarily focused on the user-facing side of applications, dealing with usability, aesthetics, UI (User Interface), and UX (User Experience). They ensure the visual and interactive elements are appealing and functional.
  • Backend Engineer: These professionals work on the "behind-the-scenes" aspects, such as server-side logic, databases, APIs, and network communication. They ensure the application's core functionality is robust and efficient.
  • Database Administrator/Developer: Handles the organization, storage, and retrieval of data, ensuring data integrity and accessibility for users and applications.
  • Mobile App Developer: Specializes in creating applications for mobile devices (e.g., iOS or Android), requiring distinct skill sets related to mobile operating systems and user experience.
  • Data Scientist: A rapidly growing field where individuals analyze vast amounts of data to extract meaningful insights, build predictive models, and support data-driven decision-making.
  • AI Engineer/Machine Learning Engineer: Focuses on designing, building, and deploying AI models and systems, often working closely with data scientists to implement their insights.

Each of these engineering roles requires a unique set of skills. In the industry, it's unrealistic to cover every single role effectively. I remember before I delved into data science, I spent time researching online, reading articles to understand what a data scientist actually does. While my summary above simplifies their complex scopes of work as a disclaimer, it's essential to grasp the core responsibilities.

Essential Skillsets for Any Developer

Despite the diverse roles and specialized skill sets, some foundational skills are universally essential for all developers, regardless of their chosen path:

  1. Problem-Solving and Mathematics: These are crucial foundational pillars for anyone wanting to dive into computer science or coding. Strong analytical and problem-solving abilities, coupled with a solid understanding of mathematical concepts, form the bedrock for effective coding. This includes logical reasoning, critical thinking, and the ability to break down complex problems into manageable parts.
  2. Data Structures and Algorithms: This involves understanding how to handle data efficiently and how to design effective algorithms. Learning about data structures (like arrays, linked lists, trees, graphs) and algorithms (like sorting, searching, dynamic programming) is fundamental. If you have a solid foundation in these two skill sets, it will be significantly easier for you to transition into any of the engineering roles I mentioned earlier that involve coding.

Once you've researched and identified a role or area that aligns with your interests, then you can delve deeper into the specific skill sets required for that particular path. This brings us to our next point...

3. Knowing Your Basic Coding Tools and Foundations

Why did I wait until the third point to discuss basic tools? Personally, I find it more motivating to first understand what I can *do* with coding in the industry. It's more comfortable to know what I might enjoy so that when I actually get to the execution phase, I'm already somewhat aligned, even if I end up switching roles later. So, let's get back to the third point: knowing the basic tools or foundations for coding.

Choosing Your First Programming Language

Whether you're interested in frontend, backend, databases, or anything else, the most essential first step is finding a **programming language that suits you**. Your first programming language significantly impacts your perception of coding itself. It's not about being proficient in *every* coding language. Instead, it's more beneficial to **master a few languages** that are commonly used within your chosen division. For example, if you're working with application development, you'll often use Kotlin for Android or Swift for iOS/Apple platforms.

From my internship experience, companies often prefer individuals who are truly expert in Kotlin or Android development, rather than someone who can do both but isn't particularly strong in either, or only has a superficial understanding. So, don't be discouraged if you feel you can't learn many programming languages. It's more important to master a specific division or a particular set of skills than to have a shallow understanding of all programming languages, even though knowing multiple languages is undeniably valuable.

Returning to my earlier point about the importance of your first language: some languages have **syntax that's harder to grasp or write** compared to others. Additionally, writing the same program in Language A versus Language B can result in different code lengths and development times, depending on the language itself. I started my programming journey with **Python**, and I believe Python is one of the **best or safest languages to start coding with**. I highly recommend Python due to its readability and versatility. However, if you're determined to dive straight into mobile programming and learn Kotlin, for instance, that's absolutely fine too! Choose what resonates with your immediate goals.

Essential Coding Editors and Environments

Once you've chosen a programming language you like, your next step is to select a **coding editor**. A coding editor is a dedicated program designed to help you write, run, and manage your code. I personally use **Visual Studio Code** (not sponsored, by the way!). It's incredibly versatile and supports a vast array of programming languages simultaneously. However, there are also code editors specifically tailored for certain languages, like PyCharm, which is dedicated to Python development.

After you've found a comfortable coding editor, I recommend familiarizing yourself with the **Terminal**. The Terminal is already built into your computer; you don't need to download it. Just search for "Terminal" on your computer, and it will appear. Essentially, the Terminal is a command-line tool. You type instructions, and it executes them. How does it differ from a code editor? The Terminal is directly linked to your computer's operating system. For example, on a Mac, you can type "cd Documents" to navigate into your Documents folder or "open something" to open a file. Instead of using your mouse to click and open, you can type commands or instructions directly into the Terminal, which can significantly speed up your workflow.

Once you're comfortable with the Terminal, I suggest exploring **GitHub (or Git)**. GitHub is a web-based platform that allows you to collaborate on coding projects with others. For instance, if you want to build a website, it often requires several people with different skill sets—like a frontend developer, a backend developer, and a database expert. How do you connect these three individuals with their diverse skills to create a cohesive, functional website? You use GitHub (or similar platforms). GitHub essentially provides a centralized place where you can manage and organize your team's coding contributions, ensuring everyone's work integrates seamlessly into a complete product. It's a fundamental tool for version control and collaborative development in modern software engineering.

4. Practice Through Projects: Learning by Doing

My fourth and crucial point is the importance of **practicing through projects**. One of my biggest regrets when I first started coding was spending too much time memorizing algorithms and theories without actually coding. As a result, when I was in my third year of university and looking for internships, I realized my project experience was severely lacking. This made securing opportunities much harder.

So, here's my advice: once you have a general idea of what you want to achieve with your coding skills, have found a suitable programming language, and are comfortable with your environment (coding editor, Terminal, etc.), **jump straight into projects!** Try to **learn by doing**. You might be thinking, "But I want to build a website by myself first; do I really need to find people to collaborate with right away?" Not necessarily!

There are countless online tutorials available today that teach you how to build a website from scratch. These resources allow you to learn the basic skills of a frontend developer, a backend developer, or a database administrator hands-on. I highly recommend diving in and trying to build applications. For example, if you want to learn iOS development, Apple offers excellent Swift lessons that guide you through creating Apple applications. Similarly, there are numerous online resources for building Android apps. You can find projects ranging from simple timers to more complex applications with interactive features.

I genuinely recommend that you immediately immerse yourself in **practical project exercises**, starting with simple ones and gradually progressing to more complex ones. For those like me who are more interested in data science and AI, I highly recommend checking out **Kaggle**. Kaggle hosts many competitions related to data science and AI, where you can apply your skills to real-world datasets and even get ranked and evaluated.

Recommended Online Learning Resources

Based on my university experience, here are some online tutorial recommendations for learning:

  • Programming with Mosh: I really like his explanations. They are clear, concise, and don't overcomplicate things, making the learning process very smooth.
  • freeCodeCamp.org: An excellent resource offering structured courses and certifications in various programming domains.
  • Kaggle: As mentioned, for AI and machine learning practice, Kaggle is incredibly useful for hands-on experience with data challenges.
  • Ivy League and Top University Open Courses: Many prestigious universities like Stanford and MIT offer their courses for free online (e.g., MIT OpenCourseWare, Stanford Online). These are often the very same materials used to teach their own students and provide a rigorous, high-quality learning experience.

Beyond personal projects and online tutorials, I also strongly recommend participating in **hackathons**. Hackathons are typically coding competitions, often in collaboration with companies, where participants work intensively (sometimes for 2-3 days) to develop a project that can be applied in the real world. Think of it as a coding sprint. I genuinely wish my past self had participated in more hackathons and worked on more personal projects. Truly, if you want to elevate your coding skills, hands-on project experience is incredibly helpful and often indispensable for practical application.

5. Finding Your Niche: It's Okay to Not Be a Master of Everything

This point is something I wish someone had told me when I was feeling incredibly down about coding, to the point where I questioned if I was even suited for computer science. Just like programming languages, the divisions or fields within computer science and coding skills are vast and diverse. You might be learning mobile app development, but perhaps you're struggling to make progress despite dedicated effort. It's entirely possible that **you're simply not a good fit for that particular area.**

I experienced this myself. I remember studying operating systems or system programming, and I felt incredibly slow compared to my peers. I was disheartened and on the verge of giving up until I tried another field: data science. To my surprise, I absolutely loved data science. It felt like the perfect fit for me, something I was genuinely passionate about.

So, my advice is: **don't get discouraged** if you're learning something new, finding it tough, and not seeing much progress after a long time. It might simply mean you haven't yet found the field that truly resonates with you. The world of coding is vast, and there's a niche for everyone. Keep exploring until you find what clicks.

6. The Power of Feedback, Support, and Mentorship

The final point, which I believe is incredibly important, is the significance of **feedback and support from friends and mentors.**

The Importance of Peer Support

Why is support from friends so crucial? There was a time when I was truly struggling. I was taking a project-based class at KAIST with a friend, and my code simply wouldn't run. I was on the verge of giving up and dropping the class. But my friend told me, "Vira, this kind of thing is really hard. It takes days. The fact that you've managed to solve one problem in two days is already amazing." While it might seem trivial to outsiders, that single word of encouragement from my friend was instrumental. If it weren't for her, I don't think I'd be as passionate about continuing to code and pursuing this challenging path today.

The Value of a Great Mentor

And why is a mentor so important? I believe a **great mentor is everything**. There was a point when I felt disheartened after learning a lot of coding, trying to take it to the next level, and looking for internships at big companies without success. Even during my internship at a startup (though not a large corporation), my mentor was exceptional. I truly believe that a good mentor will have a profound impact on your journey to becoming a skilled developer or programmer.

They provide guidance, share their experience, offer constructive criticism, and can open doors you might not have found on your own. A mentor can help you navigate challenges, avoid common pitfalls, and even discover new areas of interest. Their insights can save you countless hours of frustration and accelerate your learning curve significantly. Look for opportunities to connect with experienced professionals, whether through networking events, online communities, or even cold outreach. The right mentor can transform your learning experience and career trajectory.

Key Takeaways from My Four-Year Coding Journey

So, those are the six things I wish my past self, Vira, knew before I started coding:

  1. The absolute importance of cultivating the right **coding mindset**. Embrace positivity, consistency, and resilience when facing errors.
  2. Clearly define **what you want to learn or achieve from coding**. Understand that different roles in the industry require different coding skill sets. Research and find your niche.
  3. Familiarize yourself with the **basic coding foundations or tools**.
    • Find a **programming language that suits your goals and comfort level**, but don't be afraid to explore others. Python is often a great starting point.
    • Choose a **coding editor** that feels comfortable for you, as it will be your primary workspace throughout your programming journey.
    • Learn to use the **Terminal** for command-line operations.
    • Master **GitHub (or Git)** for collaborative projects and version control.
  4. Embrace **learning by practicing and doing**. Don't get stuck in theory; jump into projects, build things, and learn from online courses and platforms like Kaggle.
  5. Understand that **it's okay if a particular coding field isn't the right fit** for you. The world of computer science is vast, and you can always explore different areas until you find what truly resonates.
  6. Recognize the vital importance of **feedback and support from your friends and peers**, as well as the invaluable guidance of a **good mentor**.

I genuinely don't want you guys to suffer the way I did initially. I want your journey to be smoother, more straightforward, and more enjoyable. Please note that these insights are what I found effective for myself and what I wish I had done better before. If you're interested in more videos related to careers, coding, data science, AI, or even my internship experience at an IT company in Korea, please don't hesitate to comment below. I'll do my best to make it happen!


Post a Comment

Previous Post Next Post