Become a Software Developer. Part 2 — Learning Resources: Strategies and Communities
Alejandro Rodríguez ?
Empowering individuals to get the most out of tech. Information Technology Specialist | Arduino Developer | Maker. Promoting Cybersecurity Awareness · Open Source · STEAM Education
Welcome to Your Guide to Programming and Software Development! A comprehensive three-part series designed to provide you with practical tips, valuable insights, and a clear roadmap to becoming a software developer. Whether you're a beginner in tech or someone looking to sharpen your skills.
In this section, you'll explore great resources to learn programming online. Whether you're going to college, learning on your own, or joining a coding bootcamp, having a good plan and the right tools is important. We'll cover learning strategies, practice platforms, and the benefits of joining developer communities. Let's get started!
Learn programming
College, self-taught or coding bootcamps? When it comes to learning programming, there are several options: college, self-taught education, or coding bootcamps. Each with its own strategies and resources. They are not mutually exclusive and, in fact, complement. So you can explore as many as you wish.
Enroll into college
Going to college for a Computer Science or Software Engineering degree provides a structured environment and provices you access to valuable on campus and online resources. You'll get a deep understanding of Computer Science and Engineering principles. That is, you will learn more topics more than just programming.
Studying in college has several advanges that allow you to support your learning. You'll be able to attend professors office hours. Experienced educators can provide you guidance, answer questions and offer insights. Libraries with extensive collections of books and lab facilities. Mentorship, networking and peer collaboration opportunities. Workshops and seminars, career services and intership programs.
These resources can be invaluable for your learning experience and your personal and professional development. But it can be quite expensive and might take several years to complete. Don't let that discourage you! Let's explore alternative options to choose from.
Programming bootcamp
Programming bootcamps offer a focused and immersive learning experience, often covering a broad range of programming languages and technologies in a condensed timeframe. Some bootcamps offer flexible scheduling for students, including part-time scheduling and online formats, which may have synchronous, asynchronous or hybrid components.
Bootcamps tailor their curriculum to meet current industry needs, focusing on in-demand programming languages, frameworks, and tools. They emphasize hands-on projects and real-world applications to build practical skills. Some of them might even include courses on essential skills (also known as soft skills) offer job placement assistance, networking opportunities, and resume review workshops to help graduates transition into tech roles. The bootcamps which go beyond teaching technical skills are the ones you should look for.
There are several caveats to consider, though. Some bootcamps may have high tuition costs, making them inaccessible to certain individuals. Additionally, the fast-paced nature of bootcamps may not suit everyone, as it requires a lot of dedication and the ability to learn quickly. Content and instructors quality can also differ between bootcamps. Consider the ones you can find alumni reviews. Specially if the bootcamp helped them to get jobs.
Self-directed learning
Self-taught learning also offers advantages, allowing individuals to study at their own pace, according to their unique schedules. Unlike college lectures, where some students can feel left behind or they are not advancing fast enough according to their capabilities.
Self-taught learning empowers learners to explore deeper into subjects of interest without the constraints of a predetermined curriculum. This approach supports a more personalized learning experience. Where individuals can focus on areas they find most challenging or intriguing, maximizing comprehension.
It's important to keep in mind learners might face some challenges: lack of a structured guidance, potential isolation from peers and instructors, and difficulty on assessing their own progress accurately. Moreover, learners must manage their time effectively without external deadlines or accountability.
Despite these challenges, self-taught learning promotes independence, encourages lifelong learning habits, and allows individuals to tailor their education to their specific interests.
Learning strategies
Tips for starting your learning journey
Set clear, achievable goals. Start by defining what you want to learn and why. Clear goals help you stay focused and motivated. Use the SMART framework for goal setting: Specific, Measurable, Achievable, Relevant, and Time-bound. For example, instead of just wanting to "learn to code," set a goal like "complete a Python beginner course in two months.
A common mistake beginners make is not breaking down their goals into objectives. Goals define what you want to achieve in a broad sense, while objectives break down those goals. Let's say: I want to become a web developer. This is a monumental task that is by no means achievable in a short time frame. Such an ambiguous goal lacks clear direction and can leave you feeling overwhelmed and unsure where to start. Instead, set an objective to complete the basics of HTML and CSS within one month or two.
Every person is different and has unique circumstances. While one person might be able to dedicate two hours per day to learning, another person has only one hour. To determine a reasonable timeframe for completing your objectives, look for a course syllabus. Take the total course hours and divide them by the number of hours per week you can dedicate to studying. This will give you a realistic timeline for achieving your learning goals.
According to Free Code Camp (??): Each certification should take approximately 300 hours to complete and includes 5 required projects, while the other challenges are optional.
Study and practice schedules. Plan your study time and make it a routine. Set aside specific hours each day or week for learning. A consistent schedule helps you build good habits and makes it easier to track your progress. Practicing what you learn is key to understanding reinforce concepts and remembering new information. Try coding exercises, work on small projects, or participate in coding challenges. Regular practice helps reinforce concepts and improve your skills over time.
Additionally, consider using spaced repetition as a learning technique. Spaced repetition involves reviewing material at increasing intervals to enhance long-term retention. By revisiting concepts periodically, you reinforce your understanding and ensure that the knowledge stays fresh. Combining spaced repetition with regular practice and a well-structured study schedule can significantly boost your learning efficiency and retention.
"Learning How to Learn" by Barbara Oakley on Coursera is a great course that teaches effective learning techniques based on cognitive science principles. It covers strategies like chunking, which involves breaking down complex information into manageable pieces, and spaced repetition. The course also offers insights on common learning obstacles, managing procrastination, and improving focus. Reddit user meflou published an awesome summary.
Develop logical thinking skills first
Developing logical thinking skills is essential for anyone starting their programming journey. Logical thinking helps you understand how to approach problems systematically and break them down into smaller, manageable parts. Before diving into coding, it's important to first practice problem-solving techniques, such as flowcharting and algorithm design. These skills will form a strong foundation, enabling you to write more efficient and effective code.
Logical thinking also helps you debug and troubleshoot your code more effectively. By understanding the logical flow of your program, you can identify where things might be going wrong and how to fix them. Exercises like puzzles, brainteasers, and logic games can also help sharpen these skills. Investing time in developing logical thinking early on will make learning programming languages easier and enhance your overall ability to tackle complex coding challenges.
Further in your programming journey, include mastering tools like UML (Unified Modeling Language) for visualizing and planning software architecture, and learning debuggers to identify and resolve issues in code efficiently. UML diagrams help developers conceptualize complex systems through visual representation. Meanwhile, debuggers enable step-by-step execution of code, allowing programmers to track variables, identify errors, and validate logic, therefore enhancing code quality and problem-solving skills.
Another effective learning strategy involves practicing programming by writing short pieces of code on paper. This method encourages you to think through the logic and execution flow of your program step-by-step before testing it on a computer. Use boxes or sections to write down and update variable values as the program (on your mind) progresses
Flowgorithm is a free beginner's programming language that is based on graphical flowcharts. Available for Windows. You might need a virtual machine for other systems. PSeInt is a flowchart and pseudocode interpreter (in Spanish).
Leverage the power of AI! After careful thought, place your pseudocode as prompt in any AI LLM (ChatGPT, Copilot, Claude) to see what results you get and compare with yours. Then tell the AI to convert it into the target language (Javascript, Java, Python).
As a beginner, be aware of potential errors from AI. Do not assume its responses are always correct. Think of this strategy as a fun exercise driven by curiosity. You could even ask AI for small pieces of simple code with errors for you to correct.
Importance of sticking with one language
Sticking with one programming language allows beginners to build a strong foundation in coding principles and syntax. Mastery of one language helps learners understand better fundamental concepts such as variables, loops, conditionals, and functions more deeply. By focusing on a single language, beginners avoid the confusion that can arise from switching between different syntax rules and programming paradigms too early.
This approach not only solidifies understanding but also prepares learners to transfer their skills to other languages more effectively in the future. Additionally, becoming proficient in one language before branching out can lead to quicker mastery overall, as concepts learned often apply broadly across different programming languages and technologies.
Learn to explore language documentation
Learning to explore the programming language documentation is a critical skill that is often overlooked by beginners. Documentation provides detailed explanations on how a specific component work, like objects and functions. And information on the possible inputs and the expected outputs. Making it an indispensable resource for developers at all levels.
While documentation is essential, it can be dense and technical, making it difficult to grasp concepts without additional context. Documentation explains language features in-depth but it's not a step by step guide. Look for companion resources such as books, tutorials, blog articles and courses. These provide guided explanations, practical examples and exercises.
Unlike tutorials that may become outdated, documentation provides the most current and comprehensive information, empowering developers to troubleshoot issues independently, optimize code, and ensure compatibility with the latest standards. With documentation you get to know the latests features and also deprecated ones. When dealing with legacy code, characterized by being outdated, you will refer to the documentation version accordingly.
The Mozilla Developer Network is an example of documentation and references on web technologies for developers. You can find it at https://developer.mozilla.org/en-US/docs/Web
领英推荐
The importance of software versioning
Version control eliminates the frustration of losing work due to accidental deletions or overwrites, as each change is logged and reversible. Beginners often face challenges managing multiple versions of their code or collaborating with teachers, classmates and team members without a structured system in place.
Without version control, you'll find yourself using control commands (like Ctrl + Z), and losing clipboard contents a lot. And sending pieces of code through email or messaging applications. Those strategies are error prone and too much of a hassle.
Platforms like GitHub and GitLab provide centralized repositories where you can store your code, track issues, and review changes made by collaborators. SVN offers a similar capability, emphasizing centralized version control and facilitating team collaboration.
By integrating version control parallel to your learning journey early on, not only you will be able to safeguard your work but also develop essential skills for software development and collaborative coding projects in a professional setting.
Learning resources
There are many online platforms that offer courses, tutorials, and projects to help you learn new skills and improve your programming knowledge. Throughout this section you'll have an introduction to some of the most popular learning resources, including MOOCs.
Massive Open Online Courses (MOOCs) are online classes that anyone can take, regardless of their location or background. These courses cover a wide range of subjects and are often offered by top universities and institutions. MOOCs provide an accessible and flexible way to learn new skills, with video lectures, readings, and interactive assignments. They are a great resource for beginners looking to gain knowledge and advance their skills.
If you are starting from zero
In my previous article, I suggested you if you are a complete beginner with no previous exposure to the technology field, a good starting point are block-based languages. These languages use visual blocks that snap together, allowing you to create programs without writing any text-based code. They are designed to make learning to code easy and fun.
Block languages are especially great for beginners because they help you understand the basic concepts of programming, such as loops, conditionals, and variables, in a simple and interactive way. By starting with these languages, you can build a strong foundation before moving on to more complex text-based programming languages.
Blockly is a visual programming language developed by Google that uses a drag-and-drop interface with colorful blocks that represent different programming functions and control structures. Each block corresponds to a piece of code, and when combined, they create a complete program. Blockly is designed to be intuitive and user-friendly, making it an excellent tool for beginners to learn the fundamental concepts of programming. It’s widely used in educational settings to introduce children and newcomers to coding.
Some popular platforms based on Blocky include MIT Scratch, MIT AppInventor, Code.org , Makeblock mBlock, Snap! from 美国加州大学伯克利分校 , which is an extended reimplementation of Scratch, and 微软 MakeCode for the micro:bit platform. More platforms are listed under the Google Developers Blocky page — Trusted by Developers.
Honorable mention: 欧特克 Tinkercad. An online 3D design and modeling tool that is user-friendly and perfect for beginners. Additionally, Tinkercad offers features for circuit design and code blocks, making it a versatile platform for learning and experimenting with various aspects of design and engineering.
If you are curious about electronics this is the perfect platform to get started as a beginner. You will work on a safe, simulated online environment to build and program prototypes for the Arduino development board. Moreover, code created with Tinkercad can be used for projects on the real hardware.
Popular e-learning platforms
Coursera is a leading online learning platform offering courses, specializations, and degrees from top universities and institutions worldwide. Coursera provides a wide range of courses in various disciplines, including computer science, data science, business, and more. Learners benefit from high-quality video lectures, interactive quizzes, and assignments, often with the option to earn certificates or even complete full degrees. Coursera's partnerships with universities ensure that courses are up-to-date and taught by experts in their fields, making it a valuable resource for both career advancement and personal enrichment.
Udacity specializes in tech education, offering courses and nanodegree programs designed in collaboration with industry leaders such as Google, Microsoft, and IBM. Known for its focus on practical skills and project-based learning, Udacity's programs cover cutting-edge topics like artificial intelligence, autonomous systems, and digital marketing. Udacity's nanodegree programs are particularly popular among professionals seeking to acquire specialized skills and advance their careers in tech-related fields. You are able to filter its course catalof by pricing, skill or school. They have free courses on programming and software development, which I filtered for you. Available on https://go.arguez.tech/ucode
LinkedIn Learning (formerly Lynda.com) is an online learning platform offering courses taught by industry experts across business, technology, and creative fields. Acquired by LinkedIn, the platform integrates seamlessly with LinkedIn profiles, allowing users to display completed courses and certifications directly on their profiles. LinkedIn Learning provides personalized recommendations based on career interests. Its learning paths are a valuable resource for professionals seeking to enhance their skills. You can get a free month trial.
Free Code Camp (??) is nonprofit organization dedicated to teaching coding skills through interactive challenges and projects. Beyond its interactive platform, freeCodeCamp offers an extensive content of YouTube videos covering various technologies and coding topics. Every aspect of freeCodeCamp is 100% free: the courses, projects, and certifications.
Frontend Masters is an online platform that provides high quality training courses and workshops focused on web app engineering skills. It is known for its expert-led content by developers from top companies. And hands-on learning approach, for both beginners and experienced developers. Its generous free plan offers access to 8 courses and more. They also have a course on Scratch which you might be interested on.
Technical and interactive guides
Roadmap.sh is a website that provides visual guides and roadmaps for developers to help them understand the learning paths and technologies required for various roles in the tech industry. These roadmaps are structured to give you a clear guidance on what skills and knowledge are necessary for different positions. The site is especially useful for beginners and those looking to transition into new areas of software development.
Alternatively, you can check the TechGuide.sh website from Alura , an online learning platform primarily focused on providing courses and educational content in Portuguese. This website is particularly focused on encouraging T-shaped individuals. "Professionals who, in addition to their specialty (deep part of the T), also have generalist knowledge in other areas (horizontal part of the T) that can facilitate their own work or working in a team".
The Google Technical Development Guide is a resource provided by Google to help aspiring software engineers and developers enhance their technical skills. It includes content such as tutorials, best practices, code samples, and guidelines for developing high-quality software.
The URL https://techdevguide.withgoogle.com/ displays a newer version of the technical guide, though the older websited provided a structured list of recommendations with free online high-quality learning resources. Fortunately the user GustavBertram grabbed the old site from The Internet Archive and compiled the information in organized form on GitHub.
Practice platforms
Practice platforms like HackerRank , LeetCode , Exercism, and Project Euler are invaluable resources for enhancing programming skills and problem-solving abilities. HackerRank and LeetCode offer a variety of coding challenges and algorithmic problems that range in difficulty, allowing programmers to practice and improve their coding proficiency.
Exercism focuses on code review and mentorship, providing real-world exercises in multiple programming languages to encourage collaborative learning and code improvement. Meanwhile, Project Euler challenges users with mathematical and computational problems, fostering logical thinking and algorithm design skills.
These platforms not only provide opportunities to tackle complex problems but also help programmers sharpen their coding techniques, optimize performance, and prepare for technical interviews in the software industry.
{Dev} Communities
Developer communities are very important for helping programmers learn and grow. Websites like DEV Community, Hashnode , and CodeNewbie let developers share tips, ask questions, and talk about software development. DEV.to is a place where you can write and read articles about programming. Hashnode helps you build your personal blog and connect with other developers. CodeNewbie is great for beginners, offering podcasts and forums to help new programmers find their way.
For live chatting and quick help, Reddit (/r/learnprogramming) and Discord or Slack groups are very useful. In these places, you can ask questions, share helpful links, and join events or coding challenges. Talking with other developers in real-time helps you get quick answers, work together on projects, and stay updated. Joining these communities helps you learn faster, feel supported, and stay motivated in your programming journey.
Virtual Coffee is an online community designed to support developers at all stages of their careers through regular meetups, events, and resources. The community provides a welcoming environment where members can share knowledge, collaborate on projects, and offer mutual support. Newcomers must fill the waitlist form.
Conclusion
Deciding on the best educational path isn't about finding a single correct choice. Instead, it's about selecting the option that aligns most closely with your goals, preferences, and circumstances. The right path is the one that suits your individual needs and helps you reach your desired outcomes effectively.
College gives you a structured learning environment with lots of resources and a focus on theory. Self-directed learning lets you study at your own pace and explore subjects that interest you. Programming bootcamps offer fast training in practical skills needed for jobs in technology. Each learning method has its own benefits. Pick the option that matches your goals, your learning style and your scheduling preferences.
Cover picture courtesy of Nicole Wolf on Unsplash.