Furward Momentum – Learning the Fundamental Skills

Furward Momentum (Introduction)

  1. Building Your Support Network and/or Team
  2. Mapping the Technology Landscape
  3. Learning the Fundamental Skills
  4. Choosing Your Path
  5. Starting and Growing an Open Source Project
  6. Building Your C.V.
  7. Getting Your First Tech Job
  8. Starting a Technology Company
  9. Career Growth and Paying It Forward

In the previous two entries, we formed a think tank dedicated to every one of its members’ success and took a look at the technology career landscape. Now it’s time to put our think tank and knowledge to use.

What I’m about to say might sound counter-intuitive: Regardless of your chosen career path’s abilities, it’s worthwhile to learn at least the core fundamentals of several other roles.

The reason is simple: No matter how excellent you are at your technical work, your success will largely depend on your ability to communicate with people whose knowledge and experience does not intersect with your own.

This means you have to be able to speak the same language as someone who doesn’t think about the same technical issues you do. This video does a phenomenal job at showing what I mean:

So with that in mind, this entry in the series covers the fundamental skills that anyone pursuing a technology career should learn.

The fundamental skills can be loosely grouped into the following:

  1. Computer Hardware
  2. System Administration
  3. Networking
  4. Computer Programming
  5. Information Security

Computer Hardware

“Did you forgot your totally sci-fi crystal processor?” Art by LindseyVi.

Computer hardware skills cover a wide range from actual desktop computers to networking equipment and peripherals.

If you are going to specialize in computer hardware and embedded systems, you will want to go above and beyond the suggestions I offer, since I am not a hardware specialist.

That being said, everyone pursuing a technology career should at least know how to take a computer apart to clean the dust traps and install a new hard drive. If you already know how to build a custom computer from a parts list, and don’t want to specialize in hardware, you can move your focus onto another area.

To learn the fundamentals, there is a free Coursera course you can start with. Specialists may find value in this free Guide to Building Tetris from First Principles.

Specialists will additionally want to ensure…

  • They are familiar with basic circuit operation
  • They can read a schematic

If you’re a book person, A Beginner’s Guide to Circuits is a good place to start. If you’re more of a hands-on learner, look into acquiring an “electronic workbench” kit. At some point you’ll want to get an Arduino Starter Kit and/or a Raspberry Pi Starter Kit.

Unfortunately, there isn’t much in the way of a zero-cost learning option for computer hardware skills. If you’re lucky, you can find old components at a thrift store and use them to build hobby projects.

System Administration

Soatok angrily grasping computer monitor
Why did I decide to do a dist-upgrade at 4 PM on a Friday? Art by Swizz.

System administration skills cover everything from hardware to networking to software.

Sysadmins are the red mages of the technology world: Damn good at a lot of different areas, without overspecializing in any one, but able to troubleshoot and solve problems quickly due to their diverse skill-set.

Due to the diverse nature of the skills needed, the best teacher for system administration in experience, and the best way to get that experience is to play with virtual machines running other operating systems.

The easy way to get started is to install Virtualbox and get a virtual machine image (I recommend Linux Mint or Debian).

Recommended course: System Administration and IT Infrastructure Services.

Recommended reading: Building Virtual Machine Labs by Toby Robinson.

Networking

I could tell you a UDP joke, but you might not get it. That doesn’t mean we can’t be QUIC on our feet about it.

Sometimes things get lost in transmission. Art by Swizz.

Networking is its own beast. It covers everything from long-range communication hardware, routers and switches, packets, communication protocols, and network topologies.

A lot of what they teach about computer networks in public schools is outdated. You’re unlikely to run into a token-ring network in most households or small businesses.

Everyone should learn the basics of TCP/IP and the difference between IPv4 and IPv6. Specialists will want to dive deep into areas mostly covered by CompTIA’s Network+ certification, without necessarily actually paying for their certification.

Recommended Coursera Courses:

  1. Introduction to TCP/IP
  2. The Bits and Bytes of Computer Networking

Computer Programming

This is actually how I write a lot of my software. Art by Kyume.

Some rich guy once said, “Software is eating the world.” Then he proceeded to make a lot of money by investing in software-based start-up companies in and around Silicon Valley, in northern California.

As time goes on, more and more technology careers will involve, to some degree, programming skills. This can be anything from simple shell scripts to automate trivial tasks for system administrators to full-on application framework development for programming specialists.

Additionally, compared with hardware, software is very cheap to learn: All you need is a working computer and a text editor (although I generally recommend something better).

Consequently, there are a lot of guides, tutorials, video lectures, and free college courses to learning computer programming available online. I’m going to share a few of the ones I like; feel free to branch out if you find one that you feel suits you better.

One skill that everyone will need to learn is how to use version control software, such as Git.

Online Programming Courses

  1. Programming Foundations with JavaScript, HTML, and CSS
  2. Java Programming: Solving Problems with Software
  3. Java Programming: Arrays, Lists, and Structured Data
  4. Python 3 Programming
  5. Introduction to Computer Science (CS-50) (C programming)

Another useful tool worth checking out is HyperSkill by Jetbrains (for learning Java).

Programming Languages

The best languages to learn as a beginner are HTML + JavaScript + CSS (for web pages) and Python.

If you wish to specialize in back-end web applications, PHP and Node.js are extremely popular. If you’d prefer to develop desktop software, you’ll probably find Java and C# more worth your time. System administrators will find Python and Shell scripting (e.g. Bash) indispensable.

Python and JavaScript are such general-purpose languages that you can almost use them anywhere and succeed.

Information Security

Hackers don’t actually look like this. It’s a dumb joke. Art by Khia.

Information security is often framed as computer hacking and its defensive counterpart, but a lot of hacks don’t require a computer to pull off.

Deviant Ollam demonstrates simple and effective physical security techniques.

Information Security (InfoSec) is a wide discipline with a lot of room for specialization.

Programmers who wander into InfoSec tend to specialize in application security. Network engineers tend to specialize in network security. Carpenters and mechanics will find themselves successful in physical security. There are even entire disciplines focused on different forms of human deception (a.k.a. social engineering).

No matter what your background is, you can probably bring something to the table for protecting systems and information.

So where to get started?

Lesley Carhart (@hacks4pancakes) wrote an excellent series on Starting an InfoSec Career that I highly recommend reading.

  1. https://tisiphone.net/2015/10/12/starting-an-infosec-career-the-megamix-chapters-1-3/
  2. https://tisiphone.net/2015/11/08/starting-an-infosec-career-the-megamix-chapters-4-5/
  3. https://tisiphone.net/2016/02/10/starting-an-infosec-career-the-megamix-chapter-6/
  4. https://tisiphone.net/2016/08/26/starting-an-infosec-career-the-megamix-chapter-7/

If you’re more of a bookish type, and have a particular interest in software security, Thomas Ptacek created an Amazon reading list you’ll want to peruse. Make sure you hover over the icon to read why each book is included on his list.

How to Actually Learn

Most of the resources I linked above are perfect for individual self-study, but we’re not going to do that.

Instead, everyone in your think tank should convene on a set shared curriculum that everyone will study together, and then do so.

For books: Purchase or download a copy, and share it among each other. Photocopy the important bits (for private educational reasons only; don’t violate copyright law or anything crazy like that).

For online courses: Sign up together and check each other’s work. Tackle group projects together. Seek out other students from outside your think tank for feedback.

Be creative. Make it fun. You’ll have plenty of time to be bored later.

If you’re an oddball with your chosen specialty, you should also feel welcome to go above and beyond on the education material you’re most interested in. You should also feel free to reach outside your think tank to find other people who share your desired speciality.

The important thing is to remember: We’re all in this together, so let’s make sure we all get across the finish line. No one gets left behind.


Next: Choosing Your Path