• Blog Content
  • About Burns and This Blog
  • To the Hackers and Script Kiddies
  • SE Skills Survey – Help!!

Eric Burns Online

My Virtual Take on Tech

  • Blog Content
  • About Burns and This Blog
  • To the Hackers and Script Kiddies
  • SE Skills Survey – Help!!

Getting Started Learning Programming

October 30, 2023 High Level Tech Intro SE Skills No Comments

HelloWorld()

Several recent articles have listed Programming as a top skill to learn. Even if you don’t intend it as a career, there are many advantages to at least a BASIC* (pun intended) understanding of it. As someone who learned to program in elementary school, I’ve seen the lifelong benefits it brings. For example, you’ll better understand why a certain web tool flows a certain way, or why the computer won’t understand certain information you give it.

Let me share some tips with you on how to best start to this task. I’ll publish a later article with some more tips if you are trying to help a young person get started too. I do my best to explain certain domain-specific terms as best I can, but there may be terms that don’t necessarily get explained. Please take from that how broad and complex the topic has become. But it doesn’t have to be that complex – so to get the foundation right, read on!

Have a Goal – Leverage Purposeful Learning

This might be a factor of my learning style, but I think it holds true for most people out there. Learning to program just for the sake of learning is similar to learning to speak a language you never intend to use. Sure, not many people know how to speak Crimean Tatar. So you would certainly be unique if you knew how – but when would you get to use that knowledge? The same goes for leaning to program. If you have a specific task you wish to accomplish, learning to program in a relevant language is easier and the knowledge will “stick” better. You might want to learn to automate web crawling and “scrape” web pages for information to help you in sales. Or you might want to create a module to enhance your WordPress website. No matter the purpose, doing purposeful learning will help you learn faster.

A key component are the constraints this creates. If I decide I want to learn Python just because I hear it mentioned a lot, I’ll just meander through the concepts. But if I decide it is the best tool to do the Big Data project I find interesting – then when I hit a minor roadblock I’ll be challenged to figure out the way to make it work.

Use The Appropriate Material and Tool

The Tools you use will be broken up into two classes. One will be the language (Material) you will actually learn and use to solve a problem or build a program. The other will be the application (Tool) you will use to write and debug your code in. If you are building a fence, you might use wood, bricks or concrete. Once you pick the material, let’s say wood, you then need to decide if you are using an ax, chainsaw, hand saw or a radial saw. True, you can often look at a fence and tell if someone used hand tools or power tools. But for most programs, the users will never know what tools were used to actually code in.

Materials – The Language

One of the reasons there are so many programming languages is that they often have a specific purpose they were built for. When I got started as an “IT Engineer” my first project was to postprocess the Bill of Material exports from schematic capture tools. That’s part of the design for electronic devices. We needed to convert them into something the fab house (manufacturer) could import. It could have been done with shell scripts and Unix tools like Sed and Awk.

But at the time, Perl was by far the best tool for the purpose. If you weren’t aware, the name Perl stands for Practical Extraction and Reporting Language. Although my first Perl instructor said it really stands for Pretty Eclectic Rubbish Lister. Either way, processing text was its initial strength.

Bill of Materials courtesy of Altium

Although dated, that was Perl’s domain for years. Granted these days I’d be hard pressed not to suggest Python there. Big Data analytics? Python or R. Plan to deploy a web accelerator at the edge? Varnish Control Language was purpose-built for that – JavaScript is far too bloated and slow. Writing Windows Applications or MacOS applications? Only one or two choices on each.

Other times you’ll find that the majority of a platform has been written in a specific language. I’m working on a Plugin for WordPress (a Content Management System) that gives me more insight when migrating a staging site into production. PHP is the answer. Do you want to write a module for Jupyter Notebooks? Likely Python is the language to look at. Sure, others will work, but based on what I’ve read Python makes the most sense.

Tools – Notepad, vi and IDEs

When I first started coding, a simple text editor was adequate. As I was bouncing from system to system on the command line, the editor vi was everywhere and has some very powerful shortcuts. But later when I was coding in Java at Cisco, they provided us with an IDE called IntelliJ. I was hooked!

An IDE is an Integrated Development Platform. An IDE makes the development of software much faster. It allows you to write the code and do the later steps related to building and debugging from a single interface. It also helps by highlighting the syntax or structure of the code. For example, when you start to type out the name of a variable or a method, the IDE will help suggest ones that exist.

Code Completion courtesy of JetBrains

There are single IDEs that work for dozens of languages, and there also are ones that are purpose built for a specific language. If you are already in the work world, try to use the one your company (or the company you want to get into) has standardized on. If you are taking a computer course, like my son is in college, they’ll recommend one to use.

It is likely you won’t be required to use a specific IDE, but you can get more help when you use what the team is using. On a tangent, if you happen to have access to a Raspberry Pi 3+ or better, the Raspberry Pi OS that comes with the desktop and recommended software has several IDEs preinstalled. This is what I use when putting on virtual events that introduce programming and basic electronics in a single afternoon.

Either way, make sure the IDE you select has good support for the language you are trying to learn.

Go with a Full Program

Yes, I punned again. Leveraging disparate “how to” guides or YouTube videos is not enough. There are foundational items you need to learn, and there is logic to how different concepts build on each other. If you don’t know how to create a type of data structure called an array, trying to add (or “push”) a string (a simpler data structure) into one will frustrate you to the point of giving up.

My dive into Perl was rather haphazard. Without structure or peers, I didn’t learn about hashes until I’d written quite a few tools. A hash is a way of storing data that can be much faster for certain tasks. I had instead written complex logic that iterated (worked through) a different data structure called an array. Once I learned that simple item, my scripts were literally 100 times faster. And perhaps 20% shorter.

I highly recommend doing one of the following:

  • Taking a multi-week introduction course. Be it Coursera, edX, Udemy or at your local Junior College. These will have the structure and organization that makes the biggest difference. And if you need something pushing you to stay on schedule, the JC is the way to go. There also are the various virtual Boot Camps, but my feeling is that they can be too fast and are not cheap. All of these will hopefully follow that Purposeful Learning model. They’ll explain a concept, then have assignments where you leverage those concepts.
  • Leverage an “Intro to” book end to end. Just make sure it is a true “Intro” book. I’ve always found books published by O’Reilly to be money well spent. That being said, when getting started, you’ll get more from their Introducing Python or Learning Python books than their Python Cookbook.

exit(0)

These three points cover what made the biggest difference for me when I learned to program. I’ll publish another article with some other tips later. But for now, if you want to learn to program – follow this formula. And let me know how your experience was, as well as other tips you’d have for other beginners.

 

* BASIC stands for Beginners All-purpose Symbolic Instruction Code. It used to be one of the first languages taught in school.

 

The Coming Evolution of Remote Work

Demos - The Website

Leave a Reply Cancel reply

Recent Posts
  • Always On Culture and Global Teams
  • Google Dorking Against the Competition
  • API Guides Are Not Textbooks, Don’t Expect Your Users To Use Them That Way
  • ECHOGEAR Open Rack
  • Getting RAID Inside a Dell
Categories
  • Analytics
  • Attitude
  • CDNs
  • Conversational AI
  • Creative Projects
  • Gear
  • Getting Hired
  • High Level Tech Intro
  • Hiring Process
  • Message/Chat/Collaboration
  • Monitoring
  • Random Notes
  • Raspberry Pi
  • Sales Engineers
  • SE Skills
  • Startups
  • Uncategorized
Recent Comments
  • Peter Cohan on The Best Conference Demo
  • E Berry on Do You Know About These Female Trail Blazers?
Meta
  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
Archives
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Proudly powered by WordPress | Theme: Doo by ThemeVS.