LearnKey Blog

Where to Start in Coding: Asking the Right Questions

My coding journey

A Texas Instruments TI-82 graphing calculator with a dark gray casing and a sliding cover partially removed to reveal the keypad and screen. The calculator features a large rectangular screen at the top and a variety of buttons below, including numerical keys and function buttons like 'SIN,' 'COS,' 'TAN,' a directional pad, and special keys for graphing functions such as 'Y=', 'WINDOW', 'ZOOM', 'TRACE', and 'GRAPH'.

Image courtesy YugCC 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:

  1. What skills do I need to develop for a sustainable career in coding?
  2. How can I identify my strengths and interests in programming?
  3. 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

A bright yellow rubber duck sits in front of a MacBook with an open code editor on the screen, displaying lines of code. The image captures the practice of 'rubber duck debugging,' where programmers explain their code to an inanimate object, like a rubber duck, to debug it more effectively. In the background, notes and another rubber duck are partially visible, indicating a collaborative or educational setting.

Rubber duck debugging in action. Image courtesy Tom MorrisCC 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.

Two individuals in an office setting, focusing on a large computer screen displaying colorful lines of code. One person is typing on a keyboard, while the other is pointing at a specific section of the code on the screen, suggesting a collaborative effort in coding or debugging. The workspace is bright and modern, with additional monitors, notepads, and a cup of coffee indicating a productive environment.

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

A professional in business attire is sketching a Business Process Model and Notation (BPMN) diagram on a transparent board with a marker. The BPMN diagram includes standard symbols such as diamonds for decision points and arrows for flow direction, illustrating the systematic planning of a business process flow, a technique commonly used in programming and project management to visualize and improve processes.

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!

A young Asian student is intently working on a laptop in a classroom setting. She is wearing a denim jumper over a long-sleeved shirt and is seated at a white desk. The background is softly focused, with educational posters visible on the wall and other students also working on laptops. The image conveys a sense of focus and concentration, typical of an academic or learning environment where technology and computers are integral tools.

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

A row of seven dice on a vibrant blue background. All are white with footprints in black, except for the fourth die, which is yellow and features a flag. This image symbolizes the achievement of a goal. This visual metaphorically suggests setting and accomplishing small, incremental goals in a process or journey.

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.


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.

MTA Introduction to Programming Using Java (98-388) Course Release!

Today, we are excited to announce the release of our MTA Introduction to Programming Using Java (98-388) course.

MTA Introduction to Programming Using Java (98-388)

The MTA Introduction to Programming Using Java (98-388) course is excellent for someone wanting to learn how to code in Java, a powerful object-oriented programming language. This course will also help students get ready to pass the MTA 98-388 exam and improve employability prospects for any software development position requiring Java coding skills. Specifically, this course covers Java fundamentals, data types and variables, flow control, object-oriented principles, and compiling and debugging code. These concepts are covered through simulating writing code for an online store, thus adding a real-life scenario to this course.

Our hope is that through our courseware we may provide learners with the guidance, preparation, and skills they need to succeed. For more information and to learn about additional LearnKey products visit our website.

Programming in HTML5 with JavaScript and CSS3 Specialist (70-480) Released!

Today, we are excited to announce the release of our Programming in HTML5 with JavaScript and CSS3 Specialist course.

Programming in HTML5 with JavaScript and CSS3 Specialist (70-480)

The Programming in HTML5 with JavaScript and CSS3 Specialist (70-480) course readies one for the Microsoft 70-480 exam and will increase employability prospects for anyone looking to get into a web design and web development career. The course covers document structures and objects, program flow, accessing and securing data, and the use of Cascading Style Sheets in applications. This exam (or the 70-483 exam for Programming in C#) plus the 70-486 exam (for developing ASP.NET applications) earns one an MCSA for App Development.

Our hope is that through our courseware we may provide learners with the guidance, preparation, and skills they need to succeed. For more information and to learn about additional LearnKey products visit our website.

MTA Introduction to Programming Using JavaScript Released Today!

Today, we are excited to announce the release of our MTA Introduction to Programming Using JavaScript course.

MTA Introduction to Programming Using JavaScript (98-382)

The MTA Introduction to Programming Using JavaScript (98-382) course is an excellent course for those looking to gain valuable introductory JavaScript skills. Topics covered include: learning about JavaScript operators, keywords, and methods, using variables, data types, and functions, implementing decisions and loops, interacting with the DOM (Document Object Model), and interacting with forms. In all of these topics, students will clearly see how JavaScript is used to enhance existing webpages. Furthermore, this course covers the material on the MTA 98-382 exam, and will help anyone looking to improve their employability prospects in the areas of designing and building webpages.

Our hope is that through our courseware we may provide learners with the guidance, preparation, and skills they need to succeed. For more information and to learn about additional LearnKey products visit our website.

MTA Introduction to Programming Using Python Released Today!

Today, we are excited to announce the release of our MTA Introduction to Programming Using Python course.

MTA Introduction to Programming Using Python (98-381)

LearnKey’s MTA Introduction to Programming Using Python (98-381) course covers Python, a very versatile programming language which can be used to power websites, build games, and even program hardware. This course is also an excellent course for someone new to programming, as many of the topics covered are basic programming topics which carry over well to other programming languages. Specifically, this course covers data types and operators, decisions and loops, input and output, code documentation and structure, troubleshooting, and modules and tools. The course topics directly map to the MTA 98-381 exam and will help anyone looking to improve their employability prospects in Python and for programming jobs in general.

Our hope is that through our courseware we may provide learners with the guidance, preparation, and skills they need to succeed. For more information and to learn about additional LearnKey products visit our website.

Programming in C# Course Released!

Today, we are excited to announce the release of our Programming in C# course.

Programming in C# (70-483)

LearnKey’s Programming in C# course is geared toward those who have some programming experience and are looking to improve their employability prospects for jobs requiring intermediate C# knowledge. The course is also geared toward those looking to take and pass exam 70-483, a Microsoft Certified Professional-level exam. 70-483 is one exam that leads toward the MCSA: App Builder certification. Specifically, this C# course covers managing program flow, creating and using types, debugging applications, implementing security, and implementing data access.

Our hope is that through our courseware we may provide learners with the guidance, preparation, and skills they need to succeed. For more information and to learn about additional LearnKey products visit our website.

Next Up on the Programming Track: Programming in C#

Greetings, one and all. Every once in a while, I’ll step on a golf course that says, “recommended handicap of 15 or lower for the championship tees.” For you non-golfers, this means that one should have decent skills before taking on the challenge of playing a golf course from a challenging set of tees. Those who aren’t quite there should play from the regular tees, as this will (in theory) make their day more enjoyable.

In some respects, this metaphor applies to our upcoming Programming in C# course, which ties to the Microsoft 70-483 exam, Programming in C#. A lot of what we do for courses is geared toward the MTA certifications, which are terrific for first-level certifications. This course isn’t one of them. This and other MCP (Microsoft Certified Professional) courses assume you have some programming experience, or the equivalent therein. Does that mean that if you are brand new to programming, you shouldn’t take this course? Absolutely not. But, you should take the Introduction to Programming course and maybe the Introduction to Programming using Python course (also coming out soon) to get some experience working with a programming language. Oh, by the way, that language I said in the Introduction to Programming course we use that I wouldn’t reveal then? It’s C#. So that course is helpful for C# knowledge as well.

In this Programming in C# course, there are four main topics:

  • Managing Program Flow
  • Creating and Using Types
  • Debugging Applications and Implementing Security
  • Implementing Data Access

Not only do these map to the 70-483 exam, these are topics that are essential for improving your employability prospects in the programming field. You can take what you learn here and apply it to other programming languages as well. So, for those of you who have a little experience and are looking to take your skills to the next level, this will be a good spot for you indeed.

As to whether my golf game is good enough for those signs that tell you what tees to play from, well, my handicap number isn’t for public consumption, but I’ll just say I usually play from the championship tees. I like a good challenge.