Author: Ben Lee
Where to Start in Coding: Asking the Right Questions
My coding journey
Image courtesy Yug, CC BY-SA 3.0 DEED, via Wikimedia Commons.
When I was 13, my dad brought home a TI-82 graphing calculator and manual that had been abandoned at his workplace. I stared at the huge 9,024-pixel screen and giant array of 50 buttons and felt an overwhelming combination of curiosity and confusion. 27 of these buttons were a complete mystery to me. “What the heck is a COS?” I wondered, “And what does it have to do with sinning, tanning, and abs? And how do you even turn this thing off?”
I started experimenting. Most of those “extra” buttons caused errors or did things I didn’t understand. The calculator’s manual, the TI-82 Graphics Calculator Guidebook, was 300 pages long. I was frustrated with my lack of knowledge, but I knew I could find some answers if I were patient. My patience paid off when I learned from the manual that adding a random number after COS would return a long decimal number. This was exciting to me, even though I still had no idea what a cosine was. I followed the examples in the manual to learn how to use many of the other keys.
After a while, one button stood out above the rest: on the seventh row up was a button marked PRGM. I had heard of programming before, but I didn’t know what it meant.
As I tried the code snippets in the guidebook, I wondered how I could use each feature to create fun or useful things. Eventually, I coded card games, board games, a ping pong and snake game, a cash register program, and many other programs to help me with my schoolwork and personal projects . . . all in the Texas Instruments flavor of the BASIC programming language.
This experience launched my fascination with and use of coding. I pursued other languages in high school and took programming courses in college. I started a career in IT and began using coding to create business applications to help others.
Asking productive questions when searching for an organic entry point
My journey in programming stemmed from natural curiosity, without preconceived expectations or the need to bring in a salary. However, as a programming tutor and IT professional, I have seen many adult learners struggle to find an organic entry point into coding. In my experience, there are some common questions beginning developers have:
- Which development environment (IDE) should I use?
- Which language should I learn first?
- Should I learn front-end (what users interact with), back-end (server-side processes), or full-stack (both front-end and back-end)?
- What application should I code first?
- How soon can I make money programming?
You can find a variety of conflicting, strongly worded answers to these questions online. Some would-be programmers quickly develop resource fatigue and become discouraged before they even start. If you’re spending a lot of time on these questions or if you feel confused about how to begin, this post is for you.
Remember: confusion is often the first step in learning something new.
While the questions I mentioned are common among beginners, they often lead to a narrow view of what programming entails. I hope to answer those questions by exploring a smaller, more productive set of questions:
- What skills do I need to develop for a sustainable career in coding?
- How can I identify my strengths and interests in programming?
- What can I do to avoid burnout while building practical coding skills?
These questions can guide you toward becoming a proficient coder and help you understand broader, often overlooked aspects of programming. I hope to share some of the concepts that I have learned from both my personal experiences and my professional interactions, and I hope they will help guide you through the early stages of your coding adventure.
1. What skills do I need to develop for a sustainable career in coding?
While technical skills are essential in coding, life skills like communication, problem-solving, patience, and persistence are equally important. These skills often go underestimated but significantly affect a coder’s efficiency and ability to handle complex projects.
Learn effective communication and documentation
Rubber duck debugging in action. Image courtesy Tom Morris, CC BY-SA 3.0 DEED, via Wikimedia Commons.
In programming, explaining complex code to a rubber duck is a humorous yet effective way to find solutions to problems by clarifying your thoughts.
In my experience, the best way to increase your efficiency as a programmer is to learn to communicate clearly and succinctly. Effective communication is vital in programming, not just in writing code but also in documenting your work and collaborating with others. I can’t tell you how many times I have written important code, put it in a production environment, and then had to completely reverse engineer it months or years later to fix a simple problem when, if I had spent a little extra time documenting my rationale, I could have saved a lot of stress and time overall.
Although the ideal scenario is to write code that is intuitive and self-explanatory, I try to prepare for the worst-case scenario. In my practice, I often write almost as many lines of comments as I do of code, preparing for scenarios where the code’s purpose isn’t immediately clear. This approach ensures clear and comprehensive documentation, which is important for internal use and also establishes trust and usability in the wider developer community. Whether you comment inline or with whitepapers or knowledge bases, well-documented code enhances collaboration, boosts your reputation for quality, and reflects a commitment to professionalism and transparency. Future you and your coworkers will greatly appreciate this level of detail, especially when revisiting complex code later.
Popular media often portrays coders as enigmatic figures, crafting cryptic walls of code decipherable only by machines or other “coding wizards.” This portrayal, while dramatic, isn’t accurate or helpful. In reality, the best programmers prioritize clarity and accessibility in their code. Code isn’t just about instructing a computer; it’s a form of communication with others, including our future selves.
Gain basic computing skills
Familiarity with basic computing concepts is a prerequisite for diving into programming. You will need to know how to manage directories, open files, browse the web efficiently, and perform fundamental operations like copying and pasting. The IC3 courseware from LearnKey offers comprehensive training in computing fundamentals, key applications, and living online, providing a strong foundation for aspiring programmers.
For comprehensive training in essential computing skills, consider LearnKey’s Information Technology Specialist Courseware, an excellent starting point for your programming journey.
Develop logical thinking and mind mapping
Developing logical thinking skills is vital for efficient problem-solving and debugging.
I mean formal logic—not common sense, and not even mathematics. Probably half of the bug fixes I have experienced have had to do with faulty logic. Learn how to identify formal fallacies—non-sequiturs—and practice over and over again. While knowledge of upper math is helpful in certain areas, many programming tasks require logical thinking more than advanced arithmetic.
Alongside logical thinking, learning visual mind-mapping techniques can significantly help you organize and plan your projects. You will need to be able to split a project into its main requirements and then split those requirements into the considerations that go along with each requirement. At least learn the following visual mind-mapping languages:
- ERD (entity–relationship diagrams)—a standardized visual language for data structures.
- BPMN (Business Process Model and Notation)—a standardized visual language for procedural flowcharts.
- Gantt charts—a project management bar chart for organizing task dependencies.
Practice modular engineering
It is important to learn modular design and solid software engineering principles. Think of programming like building a car: each component, like the bolts in an engine, must meet certain standards and work effectively on its own before it can contribute to the larger system. You don’t have to build an engine to determine whether the bolts will work or not. Similarly, each part of your code should serve a specific purpose and be testable independently. This approach may not always be glamorous, and while there will be times that code flows from your fingertips, you will spend much of your time prototyping, retooling, refactoring, and testing. Understanding sound development principles will help you easily navigate complex programming tasks and enable you to create efficient, scalable code.
Read and research
Finally, learn to read patiently and spend a lot of time with official documentation. Programming languages are usually well-documented and sometimes in multiple places, but learning which source works for you in your current programming journey can take time. W3Schools and Stack Overflow are great starting places and quick daily resources for many languages, but you will inevitably need to read whitepapers and the developers’ specifications. Learning where these are sooner rather than later will save you a lot of time.
Start today
You can begin honing these skills today:
- Write out detailed steps for completing tasks to enhance your logical thinking.
- Engage in daily writing to improve communication skills and typing speed.
- Play logic puzzles and strategy games to sharpen your problem-solving ability.
- Practice mind-mapping on topics you enjoy to get accustomed to organizing complex information.
- Take an eLearning course to see if that mode of learning works for you. May I suggest one of the courses at LearnKey’s Information Technology Specialist Courseware or LearnKey’s Certiport – IC3 Courseware?
By incorporating these tools and practices, you will enhance your coding efficiency and develop a well-rounded skillset, which will be essential for a successful programming career.
2. How can I identify my strengths and interests in programming?
Many beginners hope that they will have a perfect programming journey—that their first programming language will be perfect for everything they want to do, that they’ll find a dream job right away, that they’ll stay up late at night coding because they love it so much, and that they’ll single-handedly write code that changes the world. The reality is that no programming language is perfect, most beginning coders don’t make huge salaries, most good code is written by teams, and many good programs never see the light of day. But that doesn’t mean that the journey isn’t worth it. In programming, curiosity is its own reward—and the more you learn, the more likely you are to find something you love.
Delay specialization
Many beginning programmers get lost in the weeds worrying about whether to learn front-end, back-end, or full-stack. Others spend too much time figuring out what development environment (IDE) or language to use. Whether you use Visual Studio Code or Notepad++, C++ or JavaScript, the key is to start experimenting. Most of the time, your choice of IDE or language is similar to your choice of clothing—it should suit your use, but if you obsess too much over it, you will never get out the door. Beginners can benefit from simpler environments or text editors, focusing on learning the language without the complexity of advanced tools. You can always switch to different IDEs and languages as your skills and needs evolve. The key is not which language you start with but how thoroughly you grasp that language’s concepts. Remember, the principles you learn in one language usually apply to others, preventing you from becoming just a “script kiddy” who only follows examples without understanding them.
Explore, explore, explore!
Begin by understanding the fundamentals of how the web works. This knowledge is foundational, regardless of your eventual specialization. Get acquainted with both front-end and back-end concepts. Once you get the basic concepts of one language under your belt, expand your repertoire to include a variety of other languages. This broad base will inform your later choices and provide a well-rounded understanding of web development.
As you explore different languages and technologies, pay attention to what excites you and positively challenges you. Do you enjoy creating visually appealing webpages, or are you more intrigued by the logic and data processing on the server side? Experimenting with various aspects of programming will naturally lead you to discover your strengths and interests.
There’s no rush to specialize, but don’t be afraid to hyperfocus on one aspect if it catches your attention. The field of programming is vast and varied. Permit yourself to explore different paths—front-end, back-end, full-stack, data science, or any other area that piques your interest. Over time, your preferences and strengths will become more apparent, guiding you toward your programming niche.
Cultivate your unique coding path
- Stay curious and engage with the subject.
- Read lots of code from different authors. Analyze it until you understand exactly what it does.
- Choose a beginner-friendly language. For web coding, start with HTML and JavaScript. For data manipulation, Python is a great choice. LearnKey courses provide excellent foundations in these languages: LearnKey’s Information Technology Specialist Courseware
- Enroll in a good introductory programming course. LearnKey’s Introduction to Programming Concepts course is ideal for beginners, covering the basics of programming logic and structure. For a more in-depth guide, try LearnKey’s Software Development
By following these steps, you’ll establish a solid base in programming, enabling you to confidently explore more complex concepts and languages and discover your talents and interests.
3. What can I do to avoid burnout while building practical coding skills?
Whether you’re a beginner or an advanced coder, a sustainable programming career requires pacing yourself to avoid burnout. Regularly updating and improving your skills is critical to staying employable and avoiding the pitfalls of rushing your learning journey.
Set limits
The sheer volume of learning resources available can be overwhelming, leading to indecision about where to start. Rather than getting lost in the sea of options, select a few well-reviewed resources and dedicate daily efforts to thoroughly understanding them. Diving deep into one or two quality resources is more effective than skimming through a multitude of them.
Set small goals
Many beginning programmers start their journey filled with enthusiasm and big dreams. It’s common to envision creating groundbreaking software like a new operating system, a replacement for Google, or an intricate game right from the start. This ambition, while admirable, often overshadows the practical realities of learning to code. The excitement can lead to overestimating your capabilities. Beginners might not yet fully grasp the complexity and skills required for large-scale projects.
Begin with small, manageable projects that are within your current skill level. Choose something your life does not depend on but is useful or fun, like a calculator, a single-screen game, or a time-saver for a frequent manual process. These types of projects are achievable and provide a sense of accomplishment and a solid base for learning.
Having clear, specific objectives is key to staying focused and making progress. Aim to complete small projects that challenge you enough to learn but are not so daunting that they lead to frustration. Each completed project will build your confidence and skills.
Practice Modularity
Big projects can always be broken into smaller projects. This concept is the foundation of modular design or modularity. Modular design not only helps you learn to code but also sets the stage for effective programming and troubleshooting practices. For example, if you’re interested in building a web application, start by thinking about one application component, such as a web form or a simple database interaction. Then ask questions to break it down even further until you have reached one of the most basic elements of that page or interaction. How do you even collect user input? How can you interact with a database? If you treat each part of a program as a self-contained building block, you will be practicing modularity.
Consider enrolling in project-based courses that provide a structured approach to learning. Instruction like LearnKey’s Python v2 course puts modular design in practice, introducing small, manageable modules that could build up to a larger project.
Build your portfolio before seeking a job
One of the best ways to reduce the chances of burnout is to only take jobs for which you are prepared.
Before actively seeking coding jobs, developing a strong coding portfolio is essential. This portfolio should showcase your best work and demonstrate your coding proficiency. Jumping into the job market too early—without a solid grasp of programming languages or a substantial portfolio—can be counterproductive. Consider securing an alternative income source while building your programming skills and portfolio.
Conclusion
My early experiences with a TI-82 calculator sparked a journey of discovery and learning in programming. Your path can also be filled with growth and exploration. Starting with foundational skills and gradually building up to more complex projects is key to a sustainable career in programming. From understanding basic computing concepts to building a robust coding portfolio, every step you take should be well-paced and guided by curiosity, practicality, and a willingness to grow. Resources like LearnKey’s courses can provide the guidance and structure needed. Nevertheless, your personal journey starts with the press of a button, the writing of a line of code, and the willingness to explore the vast and evolving programming landscape.