For a long time, coding was text-based. It pretty much went without saying. You would need to write a computer program using letters, numbers, and words. For example, let’s say you had a picture of a monkey, and you wanted it to move across the screen. You might write something like this:
monkey.move(10)
This code would tell the monkey to move a distance of 10 units. If you changed the number in the brackets, you could make it move more or less. This is an example of text-based coding. There are loads of text-based programming languages, which work in different ways, but they all use letters, numbers, and words to tell the monkey what to do.
In the 1980s, people began to experiment with a new type of programming language. Visual coding, as it’s usually known, doesn’t use words and numbers. Instead, it uses pictures and symbols. For example:
🐵➡️🔟
Those are just emojis. They wouldn’t actually do anything. But they should help you to imagine what a visual language looks like. The pictures are nice, clear, and intuitive, and a lot easier to work with than text-based code. But at the same time, it’s more limited than text-based coding – there’s only so much you can do with it.
In general, visual coding (which is also called block-based coding) is great for beginners, but if someone wants to code at a higher level, they’ll need to learn to use a text-based language eventually. You can use visual code to move a monkey around, but not to build a complex website or app.
Should kids start with visual coding?
In a lot of cases: yes.
A visual coding language will help a child to understand some basic coding principles in a nice, easy way. They don’t need to worry about remembering syntax, or spelling words correctly, or anything else like that. They can just drop pictures into place, and run the code, and watch the monkey slide across the screen.
Pictures are more fun than words. They’re bright, interesting, and nice to look at. For a child, it can often feel boring and daunting to stare at a wall of text. That’s why children’s books have pictures in them – it’s more likely to grab their attention.
Because of all this, most kids do better when they start with a visual programming language. They can use something like Scratch or Blockly, which let them drag colorful blocks around the computer screen, and arrange them into lines of code. Kids can even get started with this before they’ve learned how to read and write. With no words to worry about, reading levels are irrelevant.
At some point, children will outgrow whichever visual language they’re working with. When they do, they’ll need to move on to a text-based language. This is the most popular way of doing things: learn the basics of code through a visual language, then progress onto text-based when you’re ready.
That’s how we do things at CodeMonkey. Our courses start with block-based, before moving on to text-based languages like CoffeeScript and Python.
But is that the only way to do things? Of course not. Even though it isn’t the norm, there’s nothing stopping a kid from learning a text-based language first. It’s a lot more work, but it has some benefits. That’s what we’ll be talking about next.
Getting started with text-based coding
If a child is old enough to read and write, they can give text-based programming a go. In terms of choosing a language, there are a number of options out there, including Python, JavaScript, and Ruby.
Of the three, Python is probably the best place to start. It uses simplified syntax, which makes it easier to read and write compared to other text-based languages. There are also lots of apps and websites which can help a child learn Python. One thing’s for certain: when you’re learning Python, you’ll never run out of resources.
Codecademy is a great option for this. They have a rich curriculum and offer free courses to help a child learn to use Python. They also cover other coding languages, such as JavaScript and Ruby, but those are slightly harder.
Banana Tales is also an excellent resource for Python learning. This is an educational video game, where players need to control their character by writing lines of code. For example, they might tell their character to move forward, stop, pick up a key, turn left, move forward, and pick a banana.
‘Python for Kids’ is a book written by Jason Briggs, with an emphasis on fun and excitement. The book guides kids through all kinds of Python-based coding challenges, featuring monsters, secret agents, and more.
Whichever resources you choose, there is something important to remember. This won’t be as easy as visual coding. Even the simplified syntax of the Python language is considerably harder than learning to code with nice, simple pictures.
For starters, there’s the keyboard to think about. You can’t write a text-based coding language without knowing how to type. But small children don’t have the best motor skills, and high-speed typing is usually out of reach. They don’t even know where to find all the letters. They’ll type an M, then spend several seconds searching for the O, then several more seconds searching for the N, the K, the E, the Y…
monkey.move(10)
It could take a child well over a minute to type that out. Well over a minute, with some typos and backspaces along the way. When that’s the kind of speed you’re working at, coding can feel like a slog. Especially compared to visual code, when you don’t need to type a thing.
Text-based programming is also more likely to go wrong. A misspelled word, or a missing bracket, will stop a program in its tracks. Children will find themselves debugging, and debugging, and debugging again – far more than they would when they’re using a visual programming language.
In summary: a text-based language like Python or JavaScript takes a lot of time and patience. That’s really the name of the game here: patience, patience, patience.
And we aren’t just talking about the kid here. As a teacher or parent, you must also be patient with the process. Support them, encourage them, and congratulate them on every small achievement, even if it’s as small and simple as finishing a line of code. This long journey will feel a lot more bearable if you celebrate every step.
Is it worth all that time?
For most kids, probably not. It would be easier to start with a visual language, which lets them relax, have fun, and worry about learning a text-based language later. In some cases, starting with a text-based language will even cause more harm than good. Children will decide that they hate coding, and never touch it again when they’re older.
But it definitely depends on the kid. While some children will hate the slow process of text-based languages, others will excel, and rise to the challenge. They love how difficult it is, and feel proud and excited when they finally manage to fix a bug and get the code to run.
For a kid like this, text-based programming might be worth a go. After all, there are some benefits of starting early, without learning a visual language first.
#1. Text-based languages have a higher ceiling
With a visual language, the ceiling is extremely low. Kids can have some fun, and build some cool little programs, but that’s all they can really do. Text-based languages don’t have that problem. As kids get better and better, they create more and more things – the sky is the only limit.
Eventually, they might even find themselves using this language in a professional setting. Google programmers work in Python. Most of the internet runs on JavaScript. If these are the languages your kids will be using when they’re older, why not start learning them now?
#2. You can get through the struggles early on
Let’s say your kid starts off with a visual programming language. They learn the basics, have some fun, then hit that ceiling we just talked about. They realize it’s time to move on to a text-based coding language, just as so many children do.
They’ll still need to go through a bunch of struggles and mistakes. They’ll have to unlearn some of the things they used to take for granted with their visual language, and start over with a bunch of new rules and techniques for their text-based language. They’ll also need to practice typing, and get into the habit of debugging lines of code.
It might be slightly easier after doing some visual coding first, but it will still be slow, and a lot of hard work. Some people think, if you’re going to go through this process anyway, it makes more sense just to get it out the way as early as possible.
#3. The struggles are good for character building
In the past, we’ve talked about the transferable skills that children can learn through coding. They become more patient, and resilient, and calm in the face of problems. They’ll still learn these skills through visual coding, but if they manage to navigate a text-based language, their patience and resilience will develop on a whole other level.
Just to be clear, this will only work if a child is already strong, and hard-working, and really wants to do this. It won’t help anyone if you force them to learn a text-based language when it isn’t something they want to do. Instead of becoming more patient and resilient, they’ll be left feeling sad, frustrated and demoralized.
Final words
As we’ve already mentioned, in the majority of cases, it’s better to start with a visual language. Once children have learned the basics of coding – and most importantly, decided if they like it – they can start to learn a text-based language later. It’s like learning any skill: it’s best to start with something fun and simple, and worry about complexity later.
But in certain cases, if a child is keen to learn a text-based language, and you think they have the patience to see it through, there’s no harm in giving it a go. At the end of the day, they’ll be getting a headstart on the kids who don’t start a text-based language until they’re older.
But remember: if your kid finds it slow, or boring, or difficult, don’t force them to keep going forever. The last thing you want is for them to develop a hatred of coding in general because they started text-based coding too soon. If they’re not having fun, it’s never too late for them to change their mind, and try visual coding instead.
Stay Up To Date on The Latest NEWS AND LEARN MORE ABOUT CODING FOR KIDS.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies. However you may visit Cookie Settings to provide a controlled consent.
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Cookie
Type
Duration
Description
_codemonkey_session_rails_4
1
1 year
_ga
persistent
2 years
This cookie is installed by Google Analytics. The cookie is used to calculate visitor, session, campaign data and keep track of site usage for the site's analytics report. The cookies store information anonymously and assign a randomly generated number to identify unique visitors.
cookielawinfo-checkbox-advertisement
persistent
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Advertisement".
cookielawinfo-checkbox-analytics
persistent
11 months
This cookies is set by GDPR Cookie Consent WordPress Plugin. The cookie is used to remember the user consent for the cookies under the category "Analytics".
cookielawinfo-checkbox-functional
persistent
11 months
cookielawinfo-checkbox-necessary
persistent
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-non-necessary
0
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Non Necessary".
cookielawinfo-checkbox-other
persistent
11 months
cookielawinfo-checkbox-performance
persistent
11 months
This cookie is used to keep track of which cookies the user have approved for this site.
JSESSIONID
1
1 year
Used by sites written in JSP. General purpose platform session cookies that are used to maintain users' state across page requests.
viewed_cookie_policy
persistent
1 hour
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
XSRF-TOKEN
persistent
1 year
The cookie is set by Wix website building platform on Wix website. The cookie is used for security purposes.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
Cookie
Type
Duration
Description
rlas3
persistent
11 months
The cookie is set by rlcdn.com. The cookie is used to serve relevant ads to the visitor as well as limit the time the visitor sees an and also measure the effectiveness of the campaign.
UserMatchHistory
persistent
1 month
Linkedin - Used to track visitors on multiple websites, in order to present relevant advertisement based on the visitor's preferences.
This cookie is set by Google Analytics and is used to distinguish users and sessions. The cookie is created when the JavaScript library executes and there are no existing __utma cookies. The cookie is updated every time data is sent to Google Analytics.
__utmb
persistent
30 minutes
The cookie is set by Google Analytics. The cookie is used to determine new sessions/visits. The cookie is created when the JavaScript library executes and there are no existing __utma cookies. The cookie is updated every time data is sent to Google Analytics.
__utmc
persistent
1 year
The cookie is set by Google Analytics and is deleted when the user closes the browser. The cookie is not used by ga.js. The cookie is used to enable interoperability with urchin.js which is an older version of Google analytics and used in conjunction with the __utmb cookie to determine new sessions/visits.
__utmt
persistent
10 minutes
The cookie is set by Google Analytics and is used to throttle request rate.
__utmz
persistent
6 months
This cookie is set by Google analytics and is used to store the traffic source or campaign through which the visitor reached your site.
_gat
persistent
1 minute
This cookies is installed by Google Universal Analytics to throttle the request rate to limit the colllection of data on high traffic sites.
YSC
1
1 year
This cookies is set by Youtube and is used to track the views of embedded videos.
This cookie is used by Google Analytics to understand user interaction with the website.
_gid
persistent
1 day
This cookie is installed by Google Analytics. The cookie is used to store information of how visitors use a website and helps in creating an analytics report of how the wbsite is doing. The data collected including the number visitors, the source where they have come from, and the pages viisted in an anonymous form.
GPS
persistent
30 minutes
This cookie is set by Youtube and registers a unique ID for tracking users based on their geographical location
MR
persistent
5 months
This cookie is used to measure the use of the website for analytics purposes.
MUIDB
1
1 year
This cookie is used by MicroSoft and collects data about users of visits on multiple website. This data is used to analyze the efficiency of advertisements on websites.
This cookie is set by Facebook to deliver advertisement when they are on Facebook or a digital platform powered by Facebook advertising after visiting this website.
bscookie
1
2 years
This cookie is a browser ID cookie set by Linked share Buttons and ad tags.
fr
1
3 months
The cookie is set by Facebook to show relevant advertisments to the users and measure and improve the advertisements. The cookie also tracks the behavior of the user across the web on sites that have Facebook pixel or Facebook social plugin.
IDE
1
2 years
Used by Google DoubleClick and stores information about how the user uses the website and any other advertisement before visiting the website. This is used to present users with ads that are relevant to them according to the user profile.
MUID
persistent
1 year
Used by Microsoft as a unique identifier. The cookie is set by embedded Microsoft scripts. The purpose of this cookie is to synchronize the ID across many different Microsoft domains to enable user tracking.
pxrc
persistent
2 months
The purpose of the cookie is to identify a visitor to serve relevant advertisement.
rlas3
persistent
11 months
The cookie is set by rlcdn.com. The cookie is used to serve relevant ads to the visitor as well as limit the time the visitor sees an and also measure the effectiveness of the campaign.
skimCSP
persistent
11 months
This cookie is set by SkimResources. The cookie is used to record data on the visitor to optimize the relevance of the advretisements served to the users.
TapAd_DID
persistent
2 months
The cookie is set by tapad.com. The purpose of the cookie is to track users across devices to enable targeted advertising
TapAd_TS
persistent
2 months
The cookie is set by Tapad.com. The purpose of the cookie is to track users across devices to enable targeted advertising.
TDCPM
persistent
1 year
The cookie is set by CloudFare service to store a unique ID to identify a returning users device which then is used for targeted advertising.
TDID
persistent
1 year
The cookie is set by CloudFare service to store a unique ID to identify a returning users device which then is used for targeted advertising.
test_cookie
persistent
15 minutes
This cookie is set by doubleclick.net. The purpose of the cookie is to determine if the users' browser supports cookies.
VISITOR_INFO1_LIVE
1
5 months
This cookie is set by Youtube. Used to track the information of the embedded YouTube videos on a website.