“Learning To Code” Actually Means Different Things To Different People...And That’s Okay

October 15, 2020
“Learning To Code” Actually Means Different Things To Different People...And That’s Okay

Depend­ing on whom it is com­ing from, the phrase ​“I’d like to learn how to code” can mean wild­ly dif­fer­ent things. To help shed light on the sub­ject, I will attempt to put nev­er-before coders into two dis­tinct categories.

I. The Pragmatic

As a prag­mat­ic, you’re not inter­est­ed in the­o­ry. You just want to build a web­site. Or maybe you have a more press­ing con­cern, like writ­ing a script to auto­mate cer­tain tasks. In these sit­u­a­tions, I rec­om­mend lan­guages that are easy to learn to work with.

Python, allows you to write quick and pow­er­ful scripts. The lan­guage also pre­serves a fair num­ber of pro­gram­ming con­cepts that trans­fer direct­ly to oth­er lan­guages with very lit­tle con­fu­sion. JavaScript also lets you accom­plish a great deal if you don’t mind hav­ing to ​“unlearn” the quirky bits that break fun­da­men­tal pro­gram­ming concepts.

My best rec­om­men­da­tion for first-time web coders is to write a bunch of basic HTML, CSS, and JavaScript files, then glue them all togeth­er while host­ing the files in a fold­er on your com­put­er (then lat­er, a GitHub pages repos­i­to­ry). The goal is to remove the road­blocks to writ­ing real soft­ware now with­out hav­ing to first get your head around 500+ inter­con­nect­ed concepts. 

II. The Visionary

As a vision­ary, you’re not inter­est­ed in sim­ply build­ing a web­site. You’d like to go deep­er, dig­ging into mat­ters like: how to struc­ture appli­ca­tions, orga­nize com­pli­cat­ed data mod­els, inter­act with third par­ty pro­grams and data­bas­es, not to men­tion learn­ing the dif­fer­ences between type sys­tems, algo­rithm analy­sis and effi­cien­cy, etc. These are the things that get your blood pumping.

For big-idea thinkers, there are entire cours­es ded­i­cat­ed to these high­er-lev­el con­cepts. Lan­guages like C, Java, C#, Swift can be help­ful in enforc­ing inflex­i­ble or opin­ion­at­ed the­o­ret­i­cal con­cepts in a class­room set­ting. Once you’ve got a sol­id con­cep­tu­al grasp, the lan­guage you use is just anoth­er detail to keep in mind.

Remem­ber, learn­ing high­er-lev­el con­cepts on the fly often means learn­ing the hard way (hacks have a way of com­ing back to bite you, imped­ing progress, or lead­ing to bugs). Then again, if your vision is to land a tech role, JavaScript is hard to beat. Pour­ing over books, frame­works, and exam­ple projects is a great way to build a port­fo­lio and get hired in a hurry.

So Which One Are You?

In my expe­ri­ence with help­ing peo­ple learn how to code, there’s almost always a clear dis­tinc­tion between those look­ing to solve a prob­lem with code and those search­ing for deep­er under­stand­ing of it. With the first group, it’s incred­i­bly dif­fi­cult to impart mean­ing­ful sci­en­tif­ic and engi­neer­ing con­cepts when all they real­ly need is a web­site or a quick script.

There’s a rea­son why Com­put­er Sci­ence or Engi­neer­ing tend to be four-year pro­grams. A two-week boot camp or a week­end cof­fee shop ses­sion is geared more toward solv­ing a spe­cif­ic prob­lem. Which rais­es the ques­tion: Are you attempt­ing to solve a prob­lem or accom­plish some­thing greater?

If You Err On The Prac­ti­cal Side…

I rec­om­mend get­ting the scrap­pi­est, sim­plest, most bare­bones devel­op­ment envi­ron­ment togeth­er — one that solves the prob­lem direct­ly and in a lan­guage that will help you build a sol­id foundation. 

While you’re at it, pare down your goals to the basics, cut­ting out any­thing unnec­es­sary. Learn­ing how to write code can be a chal­lenge. I rec­om­mend mak­ing progress in baby steps with sim­ple code fea­tures that build on top of your pre­vi­ous suc­cess­es. When you’re solv­ing today’s prob­lem the last thing you need to wor­ry about is tomorrow’s solution.

If You’re Look­ing To Become An Archi­tect Of Tomorrow…

You’ll want to seri­ous­ly con­sid­er attend­ing col­lege. If high­er edu­ca­tion isn’t pos­si­ble at this point, spend some time read­ing. Books like the Prag­mat­ic Pro­gram­mer and Code Com­plete: A Prac­ti­cal Hand­book of Soft­ware Con­struc­tion can be excel­lent start­ing points depend­ing on your career goals.

It’s also a good idea to walk through pro­gram­ming tuto­ri­als at places like Tuto­ri­al­s­point, Codea­cad­e­my, or Khan Acad­e­my. Tack­ling small pro­gram­ming chal­lenges and dis­cov­er­ing the ​“min­i­mum viable prod­uct” will help you build up your understanding.

With this impor­tant dis­tinc­tion out of the way, it’s time to get start­ed. Good luck!

Karl Apsite
Karl Apsite
Software Developer

Looking for more like this?

Sign up for our monthly newsletter to receive helpful articles, case studies, and stories from our team.

Information Experience can make or break a product
Design Process

Information Experience can make or break a product

January 4, 2023

Kai discusses how writing impacts user experience, providing an overview of the types of writing that are involved in product development and how to approach it from a very high level.

Read more
Three principles for creating user-friendly products
Business Design

Three principles for creating user-friendly products

January 25, 2023

Grayson discusses three guiding principles he utilizes when designing user experiences for products.

Read more
Why Use Flutter?
Business Development

Why Use Flutter?

January 18, 2023

We discuss Flutter, a framework for building Android and iOS apps with a single codebase, created by Google in 2018. Given the increasing popularity of smartphones and mobile-first experiences, it is essential to cover not only Android and iOS platforms but also the mobile-first web.

Read more
View more articles