How to Become a Self‑Taught Programmer: A Practical Roadmap for Beginners
This guide outlines a comprehensive learning strategy for new programmers, covering what to study, effective study methods, specialization, practical coding practice, sharing knowledge, and staying updated with industry trends to accelerate career growth.
If you are a fresh graduate entering a company without a mentor, or you feel hesitant to ask a designated mentor every question, this article offers a structured approach to improve your programming skills and become a competent, continuously improving developer.
What to Learn?
Programming fields include Windows desktop development, Linux server development, web front‑end development, databases, game server and client development, RIA (Flash, Silverlight), mobile development (Android, iOS), embedded systems, and industry‑specific software. Regardless of specialization, fundamentals such as data structures, basic algorithms, and operating systems are essential.
Classifying by language alone is limiting; for example, a C programmer typically works on Linux servers or embedded devices, while a PHP developer should understand both front‑end and back‑end web development.
Programming requires lifelong learning; stagnation leads to obsolescence, which is why few programmers remain active past age 50. Becoming an architect without coding is merely a façade.
How to Learn?
A strong command of English—reading, writing, listening, and speaking—is crucial for accessing global resources.
Practice English daily by listening to news podcasts (e.g., CNN Student News, Nightly News) or subscribing to free podcasts on iTunes.
Specialization
To become an expert, focus on a niche, such as Windows Visual C++ development, which combines Windows programming, Visual C++ IDE usage, and C++ language skills.
Learning Steps
1) Listen/Watch : Use video tutorials to quickly grasp concepts; platforms like VeryCD, Youku, YouTube, and Microsoft’s free videos provide abundant material.
2) Read : Choose the right books (e.g., from Turing, Electronic Industry Press, Mechanical Industry Press, Tsinghua University Press, Southeast University Press). Keep a notebook, highlight key points, and periodically summarize notes online or in a digital document.
Set up the appropriate development environment (e.g., .NET/Mono for C#, JDK for Java, gcc for C) before experimenting with sample code.
Read thoroughly, complete exercises, and re‑implement example code to deepen understanding. Compare Chinese and English versions when possible.
Read documentation and papers for newer topics that lack books.
Read classic source code (e.g., Microsoft C# examples, high‑scoring CodeProject articles) and run/debug it to observe behavior.
After mastering basics, explore classic open‑source projects in your language of choice.
3) Write : Apply what you have learned to real projects, no matter how small. Building personal utilities (e.g., a novel‑reading browser, stock data collector, screen‑capture tool) reinforces skills.
If you struggle to find a project, revisit your reading material, re‑implement examples, or choose a simpler idea.
4) Share : Present your knowledge through talks, PPTs, or local user‑group meetups. Teaching reveals gaps in your understanding and builds credibility.
Sharing also promotes technologies you favor within your organization, increasing your visibility.
Broadening Knowledge
A well‑rounded programmer should also study software engineering, architecture, and stay current with industry trends.
Read classic books such as "The Pragmatic Programmer", "Design Patterns", "Code Complete", "Computer Systems: A Programmer's Perspective", "Rapid Development", "The Art of Unix Programming", and "Programming Pearls".
Follow influential blogs (e.g., antirez’s Redis blog), RSS feeds from InfoQ, Reddit’s r/programming, DZone, Delicious tags, and Hacker News. Allocate 20‑30 minutes daily to skim headlines and dive into topics of interest.
Subscribe to high‑quality blogs and follow experts on Twitter for timely discussions. Participate in mailing lists like python‑cn or top‑language for deeper technical conversations.
By combining focused specialization with broad exposure, you can continuously improve and adapt to evolving technologies.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
21CTO
21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
