Effective Coding Learning Strategies

Aug 5, 2024

How to Learn Coding Effectively

Background

  • Speaker works at Microsoft and has done six internships across three countries.
  • Started coding in grade 11 with Scratch (basic game development for children).
  • Attended Waterloo, learned various languages: Racket, C, C++, HTML, CSS, TCL, Python, Java, JavaScript, and C Sharp.

Languages and Their Purposes

  • Racket: Recursion
  • C: Memory management
  • C++: Object-oriented design
  • HTML/CSS: Web development (markup languages)
  • TCL: Internship experience, deemed useless
  • Python: Side projects
  • Java/JavaScript: Backend and frontend web development
  • C Sharp: Full-time job, similar to Java

Key Learnings

  • C and C++: Very useful, considered ancestors of many modern languages.
  • Learning these can be intensive and demotivating if starting out.
  • Machine Learning: Advanced and involves complex math, not ideal for beginners.
  • Coding vs Programming:
    • Coding: Writing code to solve computer science problems (math problems).
    • Programming: Using coding to make programs that solve real problems.

Recommended Starting Point

  • Start with a language that is easy yet practical.
  • Python: Easy to read, good for learning basics (variables, functions, data structures, control flow, classes).
  • JavaScript: Another good option, especially because it can be used for both backend and frontend development.

Steps to Learn

  1. Learn Basics: Focus on basics like variables, functions, control flow, and data structures.
  2. Build a Simple Website: Includes backend, frontend, and database aspects.
    • Backend: Use high-level languages like Python (Django, Flask) or JavaScript (ExpressJS).
    • Frontend: Use JavaScript, HTML, CSS (React for JavaScript).
    • Database: Use MongoDB.
  3. Create Useful Projects: Build something useful yet simple, e.g., a currency converter or Spotify to YouTube MP3 converter.
  4. Follow Tutorials: Use tutorials but create a unique project to avoid copying code.

Advanced Learning

  • C and C++: Learn after mastering basics; prepares you for long-term and other languages.
  • Important Concepts: Understanding HTTP methods, interacting with databases, and using frameworks.

Psychological Aspects

  • Be aware of the Dunning-Kruger effect (overconfidence followed by awareness of limitations).
  • Experience hackathons to learn and build projects quickly; they can be fun and educational.

Final Advice

  • Balance between coding and programming.
  • Build practical projects to keep motivation high.
  • Engage with the community and participate in events like hackathons.
  • Continually practice and expand your skill set.