Coding is an incredibly sought-after skill, and although it may be very daunting and abstract, what if you could begin learning in 5 steps?
Today, that dream can become a reality.
Video Format
This guide is available in video format if it’s easier for you. However, if you’re looking for more depth, this thread provides additional information that was omitted from the video version.
Preface
This guide tackles the topic of learning how to code from a broad enough perspective that the fundamentals of each step can be applied to other aspects of your life when learning other skills.
Ever since I learned the basis of coding with Roblox Lua, I felt that something was missing within the sphere of “Learn to Code” / “How to Code” guides. Although there’s a variety of written and video resources that enables a wider audience to begin learning, I never came across one that emphasized the importance of Metacognition, Meta Learning, and the processes around learning itself, which could help considerably with eliminating ineffective learning practices and habits from affecting their progression.
However, I understand that this guide will not be ideal for everyone. Even if you determine that this is not what you are looking for, remember that there’s a variety of other resources that may be better suited for your approach. It’s completely fine if you prefer a different format/style/etc. for these kinds of resources, as the structure and content contained here is atypical in comparison to the average “Learn to Script” / “How to Script” tutorial.
While I still appreciate the format that most of these guides are based on, I believe it’s a necessity to demonstrate that more can be done prior to and during the learning process to make it a smoother experience than it might be otherwise.
Note: Because there are some complex terminology/words that might be confusing, I’ll be adding definitions/simpler ways of saying the same thing next to it (with a / or inside of parentheses) when necessary.
Click on each image to be brought to the section!
I hope you find this useful!
Please let me know if you have any feedback
Creating a list of useful resources is something I’d recommend to anyone, regardless of skill level. Some benefits of consolidating your resources include the following:
-
Increased workflow efficacy – Quicker & easier to access important information, including instances (moments) where you need to share it with others.
-
Easy to scale & modify – Need to add/remove resources over time? No problem! Prevents you from having a collection of unorganized bookmarks. Totally hasn’t happened to me before…
-
Very Customizable – You’re only limited to your own imagination! Whether it’s a simple Google Document or a graphic organizer, it can be created however you’d like.
-
And more! – This will make it much easier in the long-term to remain organized so you know exactly where you could go for help.
Before outlining the various resources I’d recommend, here’s an example Resource List. It doesn’t have to be super fancy, just something that works for you.
Example – Google Document
If you’re confused why this is labeled as the first step when learning how to code, it’s structured this way as a result of common beginner roadblocks.
When learning something extensive such as coding, the process can be made easier by utilizing (using) various outlets/resources to garner (gain) a solid understanding of the fundamentals. If you don’t know where important information can be found, learning will not be as straight-forward.
Furthermore, by spending time to prepare yourself for the learning process, you’re building a foundation that potentially reduces the amount of skill-level plateaus (moments where you feel like you can’t learn anymore) that you encounter along the way.
Recommended Resources
-
Programming in Lua books - Provides detailed explanations and “tutorials” about many aspects of the Lua language. The first version of the book (which focuses on Lua version 5.0) can be viewed for free personal use on the same website.
1a. Lua 5.1’s Official Reference Manual - Official documentation of the Lua coding language.
-
Although Roblox has greatly built upon Lua 5.1, evolving into Luau, the official reference manual contains incredible information about the base language!
-
Using these resources may allow you to have a better fundamental understanding of the language, which may accelerate the learning process when using Roblox Lua.
- Although the description of the Programming in Lua series states that the books are written for people with some programming experience, keep in mind that “it does not assume any prior knowledge about Lua or other scripting languages.” This could be a fantastic book to cross-reference while learning from more Roblox-focused/Luau-based resources!
-
-
Creator Documentation - Education Content [NEW as of September, 2022] - Contains dozens of detailed guides with relatable examples.
-
Code Fundamentals Series with 30 individual guides
-
Has reliable and valuable information
-
Projects that allow you to apply various coding concepts in realistic scenarios
-
NOTE: This was originally found on the Roblox Education website but it has since been moved over to the Creator Documentation site.
-
- Roblox Creator Documentation - This is the home of the API Reference! (Also contains many detailed tutorials)
-
NOTE (October, 2022):
- The Roblox Developer Hub has now been replaced by the new Creator Documentation site. Learn more about this change on its announcement topic.
-
API Reference - This has documentation and explanations for various elements of coding. Example: This page explains what a ProximityPrompt is, in addition to the functionality of each of its properties.
-
Short-form articles can be found here too! Let’s say the documentation for the ProximityPrompt wasn’t enough for you to understand how it works. Well, in this case, there’s also an article that provides a starter project and visual explanations to set it up.
-
Roblox Developer Forum - Thousands of user-made threads can be found here!
-
This is a place to share ideas & learn alongside others
-
Tons of useful information can be found here. For example, if you have a question that wasn’t answered from the other resources, you can utilize the search feature to see if your question has any answers before asking for yourself.
-
A variety of incredible resources can be found here, ranging from Elttob’s Vanilla Roblox Studio Icons to EgoMoose’s Gravity Controller, and loleris’ ProfileService DataStore Module, there’s plenty of fantastic creations by the community!
-
-
Roblox Lua Style Guide GitHub - Recommended coding practices are demonstrated here
-
Prevent bad habits from forming by using this resource! – This is an incredible resource that is not often talked about. I didn’t know about this until the end of 2020 and I wish I knew about it sooner.
-
Following the practices outlined in this resource will make your code more legible, making it easier to modify and debug over time.
-
-
Lua Learning - A hands-on learning Roblox Game made by @boatbomber!
-
Interactive learning w/user-made guides – Because it’s a more familiar environment, it might be easier to learn from this resource for certain topics
-
Over time, there might be a full collection of lessons in this game that cover the fundamentals
-
- Roblox Build It, Play It! Challenges - A collection of interactive, step-by-step tutorials created by Roblox.
-
YouTube - Contains a conglomeration (a looooot) of resources that span a chasm (a variety) of development topics
-
DO NOT rely off of YouTube for ALL of your learning – Although it may be easier to consume content in this format, it’s oftentimes better to make YouTube a supplementary resource/visual aid for learning. This is because practicing with the coding language on your own will allow you to experience and understand how different coding concept work together.
-
Regardless, four channels that I greatly recommend (aside from my own) include AlvinBlox, okeanskiy, B Ricey, and GnomeCode. all of which I admire greatly for their approaches toward development and content creation.
-
Edit April 6th, 2021: Added B Ricey to the list of recommended channels – I stumbled across their channel shortly after finishing this project so I didn’t get to recommend their content in the video!
Edit December 22nd, 2021: Added GnomeCode to the list of recommended channels. I first watched one of GnomeCode’s videos a month after creating this tutorial/guide but I forgot to include their channel here until December of 2021!
Take note of these resources in a place that you can easily find whenever you want. Over time, add anything that helps you learn onto this list. From here, you’re ready for the next step in the learning process.
Note: Because learning how to code requires you to take action on an individual level, remember that it’s your responsibility to utilize the resources at your disposal (resources that you have access to). As a person who creates tutorials, it’s not necessarily my job to make you understand certain concepts. Instead, I’m in a position to facilitate the learning process (make the learning process easier) and pave a pathway for you to discover what works best for you.
Even if you have all the resources you need, it’s crucial (very important) to ensure that you’re able to learn from them effectively. By optimizing your learning environment, you’ll be making it easier to learn in a shorter span of time.
A great way to begin optimizing how you learn could begin with taking notes of key information from the resources you’re using. This will allow you to focus on the fundamentals that make up different concepts, decreasing the likelihood that something overwhelms you.
Example
Furthermore, because taking useful notes requires a greater amount of focus and effort alongside that which is invested into the consumption of content, successfully doing so could allow you to retain the information in a way that’s more coherent and accessible for you in the long-term.
Sometimes these strategies can get boring, leading to a lack of motivation. Rather than relying solely on your desire to improve your development skills, you could motivate yourself to continue learning by taking inspiration from things that interest you and trying your best to use your current knowledge to create something related to it.
However, hoping that your motivation is strong enough to get work done is not an optimal strategy, as it’s not always possible to maintain high levels of motivation every single day. In order to prevent this from being an inhibitor to your learning (something that prevents you from learning), here are some potential strategies you can use.
Strategy #1: Path of Least Resistance
The Path of Least Resistance is a general term that can describe the easiest decision to make. An example of this could be playing video games before starting homework. Because homework tends to be demanding and requires a lot of focus, you might resist starting it until later on. In this case, the path of least resistance would be playing video games first because it oftentimes doesn’t take as much discipline in comparison to the other choice. However, this can be modified over time to make it easier to choose one over the other.
If you’re adamant about learning how to script on Roblox (very sure you want to learn), I’d advise you to make small adjustments to your environment that prevent any distractions. For instance, if you check your phone a lot when it isn’t necessary, you can move it to another room or place it somewhere that takes slightly more effort to get to. This means that it might take a stronger urge in order to convince yourself to go get it, which could slowly prevent that action from being the path of least resistance.
This strategy can be extremely powerful due to the fact that it has the potential of saving you a lot of energy that would’ve been invested into resisting urges that had become a habit. By making it easier to begin more demanding tasks, you’ll have more willpower to spare that could push you the extra mile when learning something new.
Strategy #2: Taking Breaks – “15 to 5 Rule” & the “2 Day Rule”
Breaks are an essential aspect within the learning process as a result of its ability to “refresh” your perspective of the task at hand. While a typical break could involve taking an hour or two off, there’s alternative ways of doing this that could improve your efficiency immensely.
15 to 5 Rule
The first of which involves the 15 to 5 Rule. The basis of the 15 to 5 rule is that you should spend 15 minutes of time working on something, with 5 minute breaks afterward before repeating the process. This self-imposed rule requires you to be disciplined, as you should be trying your best to maintain complete focus on the task at hand for the entire duration of time until you begin your break. You can always scale or change the amount of time to suit your needs, but make sure the duration of your break is shorter than the amount of time focusing on work.
2 Day Rule
While the 15 to 5 Rule can be applied on a day-to-day basis in shorter increments of time, the 2 Day Rule is something that can be implemented on a much larger scale.
In short, the 2 Day Rule limits you from taking more than 2 entire days off from doing something in a row. For example, if I work on a game today and decide that I want to take a break from development, I could take 2 days off in a row. On the third day, however, I’d need to start working on the project again.
This concept balances the idea of “taking a day off” while maintaining consistency on a long-term basis. If you ever say “I’ll just do that later”, and completely forget about it until a few days or weeks down the road, this could be something that you try to apply to your workflow.
Image Courtesy of Matt D’Avella – He has a fantastic video that covers the 2 Day Rule, which is where I first learned about it (The video is linked with a timestamp to 4:14 in the video. You can watch from that timestamp to 4:50 for the main idea).
Outside of these specific rules, taking regular breaks is important to maintain a healthy balance between different aspects of your life, especially when preventing burnout. If you ever reach the point of burnout, evaluate the distribution of your time (how you balance your time) into working hard versus working smart, since consistently working 8 hours a day on something in an inefficient way may lead to worse results than working on something 1 hour a day in a very efficient manner.
In order to ensure that your optimizations allow you to continue learning in the best way possible, consider the realisticness of the expectations and goals that you have established. Compare the following goals for a beginner, as an example:
Create a front page Roblox game
-
Takes a lot more time to create (generally) – oftentimes more appealing
-
However, not as achievable for a beginner
-
Bad coding habits could compound over time if mismanaged
Or
Create a small project
-
Takes less time to create
-
More easily attainable for a beginner
-
Highlights strengths and weaknesses more easily, making it easier to know what you need to work on
If the goal is something extraordinary and out of reach, such as making a front-page Roblox game, progression might feel slower and you may be more likely to lose track of the journey that you’re enduring. On the other hand, being mindful and spending an adequate amount of time focused on individual concepts may enable you to to combine each new concept with other aspects of scripting more easily in the long term.
By setting your goals closer, for example, learning how to change the color of an object when something specific happens in your game, it’ll be much easier to keep track of your progression and maintain a pace that’s right for you.
Learning how to code can be like learning a language in many different ways. For example, the order of words in a sentence is important to make sure that other people understand what you are saying. Similarly, when coding in Roblox, you need to make sure that you arrange certain keywords and phrases in the right order so the game will know what it needs to do.
The following image demonstrates this similarity/difference when figuring out when someone joins a game. (The top is how you might ask someone, while the bottom is how you would tell the game.)
The amount of time it takes to garner (obtain) a solid understanding of coding syntax can be mitigated, or reduced, by learning from a variety of perspectives.
In order to understand why this is important, let’s explore the concepts of Self-Directed Learning and Self-Regulated Learning.
Self-Directed & Self-Regulated Learning
To start, Self-Directed learning revolves around the bigger picture of establishing your learning trajectory and understanding the general steps that are required to accomplish your goals (1A).
On the other hand, Self-Regulated learning takes place on a smaller scale, dealing with the planning, optimization, and evaluation of how you perform specific tasks inside of the overarching trajectory (1A).
As an example, imagine you want to create a large game on Roblox for the first time. If you utilize Self-Directed Learning, you might first decide what the end goal of the project is going to be. Whether it’s to create a game that earns you money or to simply learn how to work on a large-scale project, this is the baseline that determines your learning trajectory.
Afterward, you might consider hiring other developers in order to fulfill the goal that you have created.
An aspect of Self-Regulated learning during this process could include figuring out the best way to recruit developers for your project. As an example, you might plan this out by creating a document that explains what roles are needed (such as programmers, builders, etc.), templates that others will fill out in order to apply for the job, in addition to the place that the recruitment post will be published, which could be the Roblox Developer Forum.
While the macro-level processes (big picture) involved in creating that game started with figuring out what you wanted to learn and if you needed other people to help along the way, the individual steps on the micro-level (smaller scale) that dealt with optimizing the recruitment process demonstrated specific processes that are important to ensure that everything goes smoothly.
From a glance, it might seem extremely basic to simply analyze the bigger picture and the processes involved in task execution. However, doing so will allow you to not only gain an understanding of what you would like to achieve and how to make sure you get there, but also to improve your ability to learn independently.
The importance of those general concepts are supported by a well-renowned Professor of Educational Psychology, Barry J. Zimmerman, who was a large proponent of Self-Regulated Learning. He determined that self-regulation enables the learner to utilize feedback loops in order to improve their future performance during certain tasks because they are able to see how their preparation and actions contributed toward the end result (1B).
(Image Courtesy of reference 1B in the Works Cited)
Asking Questions
Now that we have a general understanding of these concepts, let’s move on to some ideas that you’re more likely to remember. The first of which involves asking questions when something isn’t working as expected. What kind of questions(?), you might be wondering. Well, that depends on each scenario; and no, this doesn’t mean always asking “why doesn’t this work” every time you encounter something that didn’t go as planned, since that doesn’t diagnose the problem.
More effective questions could be “what part of the script isn’t working properly?”, or “what could I do to solve this issue?”. Being more specific with your questions increases the chances of narrowing down what is causing something to happen in addition to the steps that are needed to resolve it, especially if you created a list of useful resources during the first step.
By treating these situations as a learning opportunity rather than a roadblock, you’re enabling yourself to adopt more open-minded approaches when encountering future issues as you continue learning what kinds of questions are the most effective.
Practicing
If you’ve spent a lot of time practicing or learning something, such as the lyrics of a song, how to play an instrument, or even the best strategies to win more often in a game, you probably understand the amount of effort it takes to learn something new. Eventually you might reach the point where most of the process is subconscious from muscle memory.
This same concept applies with scripting, which is why it’s important to consistently work on and incorporate the fundamentals, or basics, into the projects that you take on. This allows you to continue familiarizing yourself with scripting to improve your understanding of it to a level where you won’t have to spend as much time individually working on it in the future.
Remember that this doesn’t mean you could necessarily “memorize” how certain elements of code work and not have to worry about it again, because you still need to have the experience in conjunction with it to truly understand why it works.
Mistakes
During this process, don’t be afraid of making mistakes and asking questions when you need help, as that is a natural part of learning. As long as you’re aware of your weaknesses and attempt to improve upon them over time, you are actively learning more. No matter the skill level of a developer, mistakes will be made, questions will be asked, and solutions will eventually be found.
On a similar note, this idea is supported by a fantastic talk from a well-respected developer and long-time member of the Roblox community, crazyman32, now known as sleitnick, who expanded upon the uses of procedural generation at RDC 2019. (Note: I bring this up not because of any “mistakes” with Procedural Generation, rather, as a result of the idea that even after many years, there’s always more questions we can ask that can lead to solutions/improvements and innovations, which ties into the next paragraph.)
(I originally planned on referencing this Development Discussion post from crazyman32 / sleitnick to highlight the idea of “no matter how much we know, we’ll always be learning more”, but I realized that only members of the Developer Forum would be able to view the post, and as far as I can remember, technically it’s not allowed to directly quote content from non-public categories.)
To add onto this, it’s crucial to understand that no matter if you know something now, it doesn’t mean that you’ll have the same understanding of it given a week’s time. If you’re really comfortable with something such as creating functions, remember that there’s always more you can learn.
Exploring something that you are unfamiliar with can be a very daunting task once you get started. As an example, here’s a box (the video below should be used as a reference point). The image on the bottom left corner of the box represents the skill of a novice, and the image at the top right of the box represents the level of understanding they think they need to reach to know it all. As they get closer to that point, the level of understanding they believed they needed to reach gets further and further away. This process continues, and over time it becomes clear that the mountain they tried to climb was steeper than it seemed.
Despite the novice potentially feeling unsatisfied that they do not “know everything”, their constant drive to continue chasing the next goal by exploring the realms of something that was previously out of their reach is important to understand. Not only does this demonstrate outsider and or beginner ignorance, where we sometimes underestimate the complexity involved when learning certain skills, but it also accentuates the power of intrinsic motivation, which is essentially when you’re doing something without regard for external factors, such as someone else telling you to do something.
Note: Extrinsic motivation, which is the exact opposite of intrinsic motivation, is still completely valid! For example, those who have game development as a job will likely have a lot of extrinsic motivation from wanting to sustain themselves/make a living off of it. They can still have intrinsic motivation if they really love game development, so remember that these two can mix to create a cohesive motivator.
Locus of Control
In order to explain why this is important, briefly covering the related concept of Locus of Control can bring it all together. Locus of Control is an element of psychologist Julian B. Rotter’s social learning theory of personality which determines whether someone believes what happens to them in life is more reliant on themselves and their own abilities (an internal locus of control) or if outside influences have more control over them (an external locus of control) (2A).
Under the assumption that an individual who possesses an internal locus of control takes part in activities due to intrinsic motivation, that individual is approaching the task in a manner that is extremely optimized to learn something extensive such as coding. This is because of how your mindset influences the decisions that you make, especially when exploring the unknown.
Real-World Example
Take the RB Battles events as an example. The organizers behind the events are not Roblox employees; they’re just a couple of YouTubers that wanted to try something new, have fun, and explore uncharted territory while they were at it. This is especially so with Season 2 of the event, where there was an entire game dedicated for RB Battles, created by an incredible team of developers. A variety of other games on Roblox were included alongside this, which the participating YouTubers played as well, providing a large scale and near-collaborative experience between the community and their favorite creators, which hadn’t been done before.
And even if something of that magnitude (scale) isn’t as easily attainable (achievable) for someone like me or you, remember that there’s always something new you can explore along the way.
Click here for a Video Version of the Ending Sequence
Text Version of Ending Sequence
This final step has no name. This final step has no definitive direction. This final step is up to you. If you’ve reached this point, it’s ultimately your decision if you believe that learning to code is something you want to pursue, regardless if it ends up being a hobby or a career.
It must be understood that truly learning to code is more than simply understanding the language. No matter how much you know, you’ll need to consistently problem-solve through situations you’ve never encountered before and practice over and over and over again, even when you aren’t feeling up to the task.
It’s crucial to understand that it won’t be easy at the start of the road. Most paths begin unpaved, and that’s no different on this platform. If you turn back time, this was the same with Roblox itself. It’s been evolving extensively throughout the years, through the good and the bad, and it’s still here. It’s still continuing to grow and it’s still continuing to cement a foundation for what’s next.
So if there’s anything you can do to create your own path, it’s to make sure that you don’t watch the clock. Instead, do what it does… Keep. On. Going.
Works Cited
[1A] Jossberger, Helen & Brand-Gruwel, Saskia & Boshuizen, Henny & Wiel, Margje. “The challenge of self-directed and self-regulated learning in vocational education: A theoretical analysis and synthesis of requirements.” Journal of Vocational Education & Training. 62. (2010), doi:10.1080/13636820.2010.523479.
(This source provides a concise and well-summarized version of Self-Regulated Learning if interested)
[1B] Everson, Howard. “Barry Zimmerman.” Learning and the Adolescent Mind.
[2A] Rotter, Julian B. “Social Learning and Clinical Psychology.” Prentice-Hall Inc.,
doi:10.1037/10788-000.
Interested in more in-depth content similar to this? If so, check out my analysis of how this Roblox game with over 7.5B Visits rose to the top!