What Coding is and How to Start Learning

crystal
8 min readOct 4, 2020

What are languages? What are IDEs? How do I choose a language? Where do I use them? What’s the best pathway for me?

oh and javascript is also the heating and cooling. forgot that one.
try online and offline and see if there’s a workflow* you end up preferring! do also keep in mind that online and offline editors tend to treat assets (so images and videos) differently. it’s not a huge deal, but inserting an image into a page will just be a different process between the two. *i’ll go through workflow differences in another article.
*correction: codepen doesn’t have everything that glitch has. it does not have the pretty pastel colours.
*correction! caret isn’t the only editor on chrome os. it’s just the only one i could find that i liked.
note: these tips are actually for anyone learning, not just for self-learners! I do feel that self-learners tend to need extra guidance where they can find it, since they don’t have lecturers or teachers to go to, which is why I specifically pointed these recommendations for them.

More quick notes on libraries: libraries are basically templates or shortcuts. They’re bits of code that programmers make and share for others to use to help them out and make their process more efficient. I should say that it’s not actually necessary to learn the vanilla way of doing everything — know what your goals are. If you want to be a ux designer or animator, it’s likely not that important for you. If you’d like to be a software programmer, it’s probably more importat for you to understand the language in a very low-level way.

— — — — — — — — — — — — — — — — — — — — — — — — — — —

Transcript for anyone using a screen reader:

Hello! In my last coding explanation thing I talked about barriers to entry. In this one I’ll go over:

  1. Hi what even is coding
  2. How code?
  3. How learn?

Hi What Even is Coding

Coding is basically just communicating with a computer and asking it to complete a list of instructions. So if coding is communication, we need to use a language that computers understand. There are lots of languages and types of languages to choose from. People tend to learn a combination of three types of programming language:

  1. A language that creates content (so something that makes text, images, buttons etc)
  2. A language that styles content (so says which colours, sizes, fonts to use, spacing etc)
  3. A language that makes the content interactive (what does the button do when you press it? etc)

The most popular languages of these categories are:

HTML: Aka “hypertext markup language”. Creates content.

CSS: Aka “cascading style sheets”. Styles content.

JS: Aka “Javascript”. Not the same as Java. Makes stuff interactive.

You could think of these languages in terms of building a house — HTML is the building itself, CSS is the paint job and layout, while JS is the wiring, plumbing, locks, heating and cooling.

In terms of creating and styling, HTML and CSS don’t really have much in the way of competition, so it’s generally a good idea to learn those two (and to learn them before attempting a JS-style language).

In terms of “interactivity-making” languages, people tend to look at Python, C, and JS. While Python is good for stats, it can be annoying to set up because it can’t be read in a browser. C is considered good for “low-level”* control (so not really for beginners). JS is the most widely used and makes up an enormous part of the web. Because of this, I recommend learning HTML, CSS and JS in that order.

  • *low-level basically means something that is very “nuts and bolts”, while high-level is more conceptual. For example, a high-level understanding of a bicycle will tell you that if you pedal, the bike will go. A low-level understanding will go into the details of the physics behind the bike — friction, force, weight, etc and how those work together and affect the bicycle’s movement. This is the sort of control people look for in C, and this is why it’s unnecessary for beginners.

How Do We Use These Languages?

You need to use some kind of text editor. Basically it’s like using a normal word processor, but instead of an essay or story, you’re writing code. There are text editors that are specialised for writing code called IDEs (integrated development environment). If you’re googling how to choose an editor, you might also see the term “coding environment”. It’s all basically the same thing: a space for you to code.

There are online and offline editors to choose from. Online editors generally have:

  • A good help section/support
  • Learning resources
  • Free hosting
  • Collaboration and sharing tools

Offline editors generally have:

  • More tools
  • More shortcuts
  • More specialised features

It’s pretty common to start learning in an online editor then move offline. But also, I know experiences coders who work almost entirely online, and beginners who only work offline. It’s also common to use both, so it doesn’t really matter which you use — it’s all preference. Keep in mind that online and offline efitors tend to treat assets (images and videos) differently. It’s not a huge deal, but inserting an image into a page will just be a different process between the two.

Popular Online Editors:

Glitch: Free account, free hosting, easy collaboration and sharing, pretty pastel colours and layout. Very beginner friendly.

Codepen: Everything that glitch has (except the pretty pastel colours), but also has weekly and monthly coding challenges and galleries for looking at things other people have made. Like a mix between an editor and social media.

JSBin: Honestly, JSBin is super boring compared to the previous two, but it’s simple, works, and is easy to set up (you don’t need an account to use it).

Popular Offline Editors:

Atom: The most popular before VScode took over. Known for how customisable it is. Available on any OS except Chrome.

VScode: Short for “visual studio code”. Faster than Atom when making large files (also has an uglier UI). Was built based on Atom. This is the one I use and I love it. Available on anything exept Chrome OS.

Caret: This isn’t reall a good editor, it’s just one of the only one’s available on Chrome OS. I used to use this and it was fine, but it’s pretty pitiful compared to VScode.

So How Do You Learn to Code?

Here are commonly taken pathways:

  1. Institutions: Basically, TAFE/uni. Good if you’re social or require external motivation and don’t mind the cost. Keep in mind that you get low control over your curriculum and homework.
  2. Bootcamps: Expensive, good for networking. Students will usually already know some code. Bootcamps tend to help with internships or work experience. They vary a lot in quality, so do your research before committing. Like the previous option, you have low control over your curriculum.
  3. Self-learning: Generally the hardest and cheapest option. Good if you hate socialising (hello). Great if you’re picky with what you learn (since you completely decide your curriculum and homework) and don’t need external motivation.

Self-Learning Recommendations

Since I didn’t learn from an institution and haven’t attended any bootcamps, I can’t give you any advice for those except to do thorough research and ideally speak to people who have been through the courses you’re considering.

While I say the following resources are for self-learners, they’re really applicable for anyone:

  • LearnProgramming Subreddit: Has loads of tips, resources and advice. You can ask questions, and there’s a Discord chat too.
  • Mentor/tutor: It’s incredibly helpful to have someone around to help you filter information, plan a curriculum for you, and explain things in ways you can understand.
  • IRL coding friends: People to bounce ideas off and keep you excited/encouraged.

Warnings for Beginners

Don’t use Stack Overflow (yet)

Stack Overflow is where you can ask coding questions and get answers for free. It isn’t really beginner friendly, as good coding questions are specific and have some knowledge behind them and beginners tend to not have the vocabulary to ask good questions. People can get snippy and sarcastic about answering/seeing the same badly-worded questions over and over again, so keep that in mind.

Online Courses Tend to Use Libraries

“Libraries” are snippets of code that anyone can use — essentially a template or a shortcut. They’re bit’s of code that programmers make and share for others to use to help them out and make their process more efficient. They generally make life a lot easier, so online coding courses use them a lot. Be careful about this, because it’s easy to think you’ve learned how to do something when in reality you only know how to do it when you use a specific library to do so. This means you can get accustomed to using certain functions but as soon as you move your coding process to an IDE outside of the coding course, none of your functions work anymore since you didn’t realise you were relying on a library.

Tips For Learning

Read Widely

It’s unlikely that you’ll understand a concept from reading one explanation about it. Give yourself a well-rounded understanding by reading widely.

Learn From Recent Materials

Code changes! Old solutions and code might be obsolete or inefficient, so favour newer resources.

Be As Specific As you Can When Asking Questions

Learning code is hard, explaining code is hard, debugging is hard. It’s easier for everyone if you’re specific, and it helps your understanding of the problem too.

Be Aware of What Your Goals Are

Being aware of your goals will mean you can be more informed and picky about what you learn, which is a huge timesaver.

Keep Some Kind of Blog or Project Site

This will give you a sense of accountability (and hopefully gratification!). It’s useful to keep track of what you’ve done and how you did it.

Learning Resources

There are also heaps of resources listed on the LearnProgramming subreddit, so I really recommend having a look at that.

I hope that was helpful! Next I’ll do one on how to use HTML.

--

--

crystal

Doing coding things (badly) and drawing things (less badly). Slowly working on a game about trauma recovery and running an lgbtqia+ hong bao shop.