Development

“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

Stay in the loop with our latest content!

Select the topics you’re interested to receive our new relevant content in your inbox. Don’t worry, we won’t spam you.

Career Pathways
Team

Career Pathways

December 1, 2020

Watch this video to learn more about how Lisa Le and Sarah Hendriksen pursued a career in software development @ MichiganLabs.

Read more
MichiganLabs among INC. MAGAZINE’S BEST WORKPLACES 2021
Business Team Press Release

MichiganLabs among INC. MAGAZINE’S BEST WORKPLACES 2021

May 24, 2021

Michigan Software Labs is one of the highest-scoring businesses, with standout employee engagement.

Read more
Quickly Prototyping a Ktor HTTP API
Development Web

Quickly Prototyping a Ktor HTTP API

August 18, 2022

Whether it’s needing a quick REST API for a personal project, or quickly prototyping a mockup for a client, I like to look for web server frameworks that help me get up and running with minimal configuration and are easy to use. I recently converted a personal project’s API from an Express web server to a Ktor web server and it felt like a breeze. I’ll share below an example of what I found and how easy it is to get a Ktor server up and running.

Read more
View more articles