The thought “how to go from coding tutorials to building apps?” is extremely common and indicative of someone stuck in tutorial hell. Tutorial hell is where someone has been doing tutorials one after the other and when they finally want to independently build something, they still have no idea where to start or what to do.
We have all been there and if you’re learning to code for the first time, it’s common to end up there.
The key to going from coding tutorials to building apps is to stop doing tutorials. What? But how will I know how to do anything? Yes I know, hear me out.
Instead, you start independently solving problems you’re interested in, that are initially very small and easy, without a tutorial guiding you. With each question you solve, you slowly gain more experience, skills and troubleshooting prowess. This prepares you to solve the next harder and larger problem.
Ultimately, you’ll grind to a point where you can independently build an app without a tutorial. I believe this is preferable to trying to build an app straight after learning a programming language and being overwhelmed into submission.
- You’re unlikely to remember anything a week afterwards. Often I would finish watching a 6-hour tutorial and still have no idea how to build what the instructor built without re-watching the video. A week passes, those 6 hours might have been better spent sleeping as I’ve already forgotten everything. I find this to be true even if you go beyond just copying the instructor’s code line-by-line by changing/adding features along the way.
- You emulate the coding style and biases of the instructor instead of developing your own. The techniques, patterns and choice of methods, libraries, frameworks, etc. you saw may work best for them in the context of that particular tutorial but it may not be the best for you on a project you want to work on later on.
- It teaches you to independently learn only what is needed. Remember cramming a textbook into your head for a school exam, only for the exam to test 1% of what you learnt then you forgot 100% soon after. No more of that!
- Any developer will tell you they have learnt significantly more by solving problems they were interested in then by going through tens of hours of courses (and they had a lot more fun and sense of achievement too).
Before any problem solving without a tutorial can be done, you should at least learn the following basic elements of any programming language:
- Setting up a programming/development environment and code-editor.
- Data types (e.g. int, string)
- Keywords (e.g. const, new, break)
- Logical and arithmetical operators
- If else conditions
- Input and Output operations.
- For object-orientated languages, it would be useful but not necessary to learn classes.
This is where the real learning, fun and challenge begins. I have compiled a list of popular websites below that offer large question banks for most popular languages.
General List of Questions:
Good for the absolute beginner:
Play Games (Single and Multi-Player) by solving problems:
Use one of the websites above or find a similar website and slowly work through the problems in your local development environment. With a problem of any size and difficulty you should be able to:
- Attempt to solve it first by yourself.
- If you cannot, look through the following avenues to help solve the problem (I generally look in this order); Google, Stack Overflow, Official Documentation, YouTube, ask a friend/colleague, etc. The first few page results that appear after Googling “How to …”, “Why is …”, will most likely help you find the answer.
- If you get an error, reading the error messages in your code editor from top to bottom will tell you what is wrong (e.g. missing semi-colon on line 42). These error messages are called a Stack Trace.
- If you cannot fix an error just from reading the stack trace, try copy and pasting the top error message into Google to find a fix or hints to a fix.
Eventually, you will grow tired of solving generic problems and want to start building apps. When this happens, brainstorm a list of problems you have/could have and a possible way to solve it using code.
For example, the start of your list of ideas could be:
- I need to entertain young family members, I could do this by building a choose your own adventure word text game.
- I struggle to convert cooking measurements (e.g. ounces to tbsp), I could build a cooking measurement converter.
- I have trouble remembering important dates such as birthdays, I could write a program that sends an email to me on the morning of an important date. The program could be executed daily using an automated scheduler (e.g. Windows Task Scheduler, Linux cron jobs, etc.) that would send the email only if today’s date is a particular date.
These projects are ideal for beginners because they can be created using only one language and a code editor. They are essentially apps with a terminal acting as the front-end which is sufficient to enable user-input & output functionality for a lot of basic programs.
You won’t be winning any UX awards with this but it’s good enough for a start.
- Start your list with what you think is easiest then gradually increase the difficulty.
- An idea could be to just replicate an existing solution and optionally add a slight tweak or new feature (e.g. building a calculator app with additional specialized functions).
- The goal should be to brain-dump a lot, worry about feasibility later when you start working through the list.
- Do not confine your ideas to those with a terminal frontend, be brave and write what you want to do. If it requires a proper frontend/graphical-user-interface, database and/or web hosting solution to share with others, write it down.
- Even if it requires specialized knowledge of machine learning (e.g. music-recommendation app), deep-learning (e.g. facial recognition app), and blockchain (e.g. P2P rideshare app), write it down. When you get to it, you can then learn what you need to build it.
- All subject matter experts started in your current position with significantly less publicly available documentation, tools and example code to help them learn. If they did it, you have no excuse to not even try.
- More complex ideas should align with your long-term coding goals (e.g. a website to become a web developer, music-recommendation app to become an AI developer, etc.).
A VCS can save a record of the current state of source code, like a save point in a game or a backup of a computer file. When a mistake is made, developers can revert their code to the last saved working record. They can also compare differences between earlier and current code to help fix mistakes.
Set up git inside ALL your project directories BEFORE you start coding to avoid a lot of wasted time and pain when (not if) the bugs show up. Don’t risk it (seriously). Use git.
For the first idea on your list:
- Set-up your development environment.
- Open your code editor.
- Create a project folder.
- Set up git inside.
- Make a rough plan on how you will write the program.
- Code away!
- Run through the following troubleshooting avenues when you run into errors: Google, Stack Overflow, Official Documentation, YouTube, ask a colleague/friend, etc.
There are infinite problems you can solve with code even when you just know the basics.
So how to go from coding tutorials to building apps? It is simply a matter of:
- Learning the basics
- Tackling tiny generic problems to get your hands dirty
- Brainstorming practical problems to solve.
- Protecting yourself with Git.
For the record, I am not against ever doing tutorials/courses. I believe they’re the last resort for if you’re still unsure of what to do AFTER you do all the above 5 steps.