Starting Out in Programming

Banner image for the article

I was recently asked by someone on LinkedIn how to move from a technical support role into a programming role and what skills should be learnt in this progress. This is my response (identifying information has been removed for privacy).

You mentioned wanting to get into DevOps, but then focused on the developer side of it in your follow up comments, so I’ll focus more on learning coding than on DevOps.

To cover off the DevOps side of things, I personally find ACloudGuru to be one of the best resources for learning about cloud based technologies. They have a lot of training for AWS, GCP and Azure. I’d highly recommend them to cover the platform side of DevOps.

In terms of other DevOps related tasks, becoming familiar with CI/CD pipelines is always valuable. There are services such as TravisCI, Jenkins and BuildKite that are quite popular. There’s also BitBucket Pipelines, GitLab has CI/CD functionality built-in, and AWS has Build Pipeline (I’m sure the other cloud hosting services have similar items). Most of these have plenty of free tutorials available though a Google search.

Other aspects of DevOps include server administration and security, Docker and Kubernetes and web server configuration (Nginx, Apache, IIS). There are plenty of other things, but that’s probably enough for now.

You’ll find some potential overlap between the tools in your current role and the tools used by developers. Items such as Jira (or Trello or other Agile boards) are used extensively for task management and visibility. A number of companies also rely heavily on apps such as Slack, and these are commonly used by developer-centric user groups due to their prevalence in the developer community. As you move into a developer role you’ll find the ability to communicate technical ideas to business people, and to turn business requirements into technical specs is also important.

In terms of resources for learning how to code, it very much depends what part of development you want to get in to. My primary skill-set is based around web technologies, but I know there are many companies looking for other skills.

If you want to get into lower level programming (so you can work on IoT devices) I’d recommend learning C++ and getting a Raspberry Pi and Arduino to help you learn. Although I’ve got both of these devices for some personal projects I haven’t had a chance to experiment with them and can’t recommend any good resources; I’m sure you’d be able to find some free and/or cheap ones out there to get you started.

If you’re more interested in data science and data analytics there are some proprietary solutions such as Microsoft PowerBI and Tableau that you will want to learn, and you’ll also likely want to learn Python. Again, I don’t have much experience here, but I can find some resources for Python if you want them.

To get into machine learning and/or artificial intelligence Python and/or JavaScript are good starting points. AWS has the DeepLens and DeepRacer (both have JavaScript interfaces from memory, but best to confirm this). They are great starting points for learning to algorithms and finding out how machine learning works.

If you’re interested in augmented reality and virtual reality I’m not sure what the best options are here. I would assume your learning should be based around mobile device development for AR as much of it seems to be based on mobile devices at present. This will mean focusing on React Native, Flutter, C# and Java.

For items such as smart speakers, I think both the Google Home and the Amazon Echo devices support JavaScript.

Where I’m more knowledgeable is with web based development. Many organisations are currently using JavaScript across the full-stack these days. If you check out Free Code Camp you will find some great training for HTML, CSS, vanilla JavaScript, Node.JS and React.js.

For front-end (web browser based) development you’ll need to know JavaScript and some of the frameworks. You can look at React.js, vue.js, Angular, all of these frameworks are in common use throughout the world. For the formatting of the front-end you’ll want to know about Boostrap, Less and Sass. You’ll also want to have a good working knowledge of HTML (check the Free Code Camp link I posted before).

A significant part of front-end development these days is also based around APIs, so this you’ll want a good knowledge of JSON, and at least a working knowledge of XML. Most of the APIs that are in use today are RESTful APIs, but GraphQL is slowly taking hold for APIs, so understanding the basics of these is a good start.

Back-end development has a lot more choice for languages. You could checkout PHP (with frameworks such as Symfony, Laravel or WordPress), Node.JS, Ruby (on Rails), Python, .Net, and many others. It doesn’t really matter where you start, pick one and work with it for a bit, and you’ll find the others are easier to learn because you’re familiar with the concepts. All of these options are capable of producing JSON, XML or HTML output, some of the frameworks make it easier to output all thre eoptions based on what the client requests.

If you aim to do much back-end development you’ll also want to become familiar with some data storage layers, learning the basics of SQL (and knowing that there are differences between MSSQL, MySQL, PostgreSQL, etc) is very valuable. It’s also worth knowing about some NoSQL solutions such as MongoDB, Redis and a variety of others. The level of knowledge and which ones to learn really depend on your future employer, so an overview of each is a good place to start.

I realise there’s a LOT of information here and a lot of different technologies. Don’t let this put you off! Just start with one of them and play around with it; when you find you need to start on another to achieve something then learn the bits you need of the next item. My partner recently decided to start learning how to program (she doesn’t have an IT background). In her case we started with some basic networking concepts just to get her logic circuits warmed up; we then moved on to some JavaScript, but then she started looking at other options and decided to teach herself Python. She’s still learning Python and has just started learning C++, but has enrolled in a mobile application development course at university next year. Experiment a bit, find out what bits of development interest you, teach yourself some of it, and as you can afford the time and money do some courses. You’ll find courses that cater to all incomes and interests. You’ll find sites like Alison offer a large number of courses you can take for free, the only catch is that if you want the certificate at the end you have to pay for it.