Getting Started In Coding

You may well ask what I know about getting started in coding in the 21st Century; I was very fortunate to get my professional start in coding nearly thirty five years ago on the graduate induction programme at British Airways. The initial 3 month classroom-based introduction to assembly language programming was intense. This was followed by an on-the-job mentoring scheme for a further year, with continuous coaching from the most experienced members of the team; a dream start, I couldn’t have asked for better.

So how does this equip me to advise anyone getting started in coding now? Well frankly, it doesn’t really. Or so you might think…

You see, I did have a nearly seventeen year sojourn away from coding and the tech world in general, only returning to the fold in 2018; so I do have some experience of making my way back into a very different world, needing to learn a totally new suite of tools (I say tools rather than skills for a reason here), and a new mindset.

I had left a world where waterfall projects where very much the norm, and most of my programming had been done on a dumb terminal, or a PC emulating one. The World Wide Web had not really been that prominent in the sphere of my expertise. Things couldn’t have been much more different when I decided to make my return.

So How Did I Tackle It?

Firstly, although I did have plenty of coding experience, I knew that I would need to learn new languages and architecture; I also decided that in particular I wanted to learn web development, which meant a very different paradigm to the one I was familiar with. This would be no small task; there were important choices to make, and priorities to set.

Secondly, I should point out here that there are many possible ways to tackle the task, and my particular choices may not resonate with everyone; particularly that I chose to start with the ‘historical’ basics and work my way up. To that end, I made extensive use of the excellent (and free) W3 Schools website, with clear and concise tutorials and even the option of certification if desired.

Depending on the person, it is, of course, possible to go straight to a framework; with a steeper initial learning curve, you can arrive at a ‘more productive’ place more quickly, and optionally fill in the missing details of the underlying technologies later. My preference was to start at the beginning, as I wasn’t under any time pressure to make my career switch (not everyone has this luxury, of course), and I like to be thorough.

What follows below is the very broad outline of how I went about it; in a series of related posts (linked from each subheading) I will elaborate on the rationale behind each step, and give more detail on what I actually did. The first thing to ask yourself is…

Do You Even Want To Actually Code?

This seems like a strange question to ask, but there is a very good reason. The rise of low-code and no-code solutions as an answer to both the shortage of programmers and the relatively long delivery times of traditional coding solutions has opened up a whole new world of opportunities not requiring the ability to design and write code. The ‘Citizen Developer’ is a recent addition to the non-IT ‘personas’ in many companies; leveraging no-code/low-code platforms and other tools, they help to build business solutions without the need for formal software development training.

If you are sure that this is not the right path for you, then the next question must be…

What Kind Of Coding Do You Want To Do?

It may seem obvious that web development is the way to go, and it is a hugely in-demand skill; but it is by no means the only path available, and it is advisable to investigate the plethora of options in a bewildering array of industries before choosing one. For me though, the web was where I wanted to go, which meant…

HTML Is Where It All Starts

Hypertext Markup Language is the foundation of web pages, and as such it seemed clear to me that this was the place to start. I had been fortunate enough that in my early career, all technical documentation we produced was in an IBM markup language called Document Composition Facility (DCF), so the concept of using inline tags to dictate the formatting of a document was already familiar to me, and the learning curve for the transition to HTML consequently a gentle one.

That being said, even without prior experience, once you get comfortable with that idea of placing ‘tags’ in your text to indicate the structure and semantics, the rest is just learning the catalogue of tags. At this stage, the pages you produce will just be static text, with no interactivity, but remember…

A journey of a thousand miles begins with the first step...

CSS – Styling Your Pages

The next most obvious stage to me was to make the flat text look interesting, which is where Cascading Style Sheets come in.

PHP – Understanding Server-Side Programming

The next logical step was to understand server-side programming, and creating basic web-sites using PHP, which led neatly into…

SQL – Structured Query Language

You can’t get away from it; most websites need a fresh supply of data to keep them going. Although the flexibility of non-structured or NoSQL databases is on the rise, SQL is still an excellent starting point, and supplies a significant portion of the world’s data access needs.

HTTP – The Foundation Of Data Communication For The World Wide Web

Hypertext Transfer Protocol is the means by which your web browser communicates with servers on the world-wide web; a basic understanding of at least the status codes for server responses is a must, but in the long term, the more you know the better.

JavaScript – Adding Interactivity

Before long, the need to create pages that ‘do things’ will arise, and JavaScript is the tool to make it happen. With the increasing number of front-end frameworks available, some would argue that JavaScript is now the most obvious starting point, and they may well be right! JavaScript Object Notation (JSON) will open up a whole new world to you, including your first forays into NoSQL databases like MongoDB.

Frameworks

Once you have a decent grasp of the core JavaScript and/or PHP concepts and language constructs, it’s a good time to investigate the wealth of frameworks available (as mentioned above, some would advocate coming straight here when you are just getting started in coding, and filling in the technical details later).

Whichever route you have taken to get to this point, the likelihood is that you will need to be proficient in at least one; frameworks offer huge potential boosts in productivity and are highly sought-after skills to have at your disposal.

Agile Methodologies

When the time comes to actually look for work as a developer, you are going to need to understand how businesses actually run their coding projects and maintain their systems (it’s how you’re going to be spending your days, right?) Having come from a world where waterfall projects were the norm, there was much to learn about how agile projects run; new methodologies and tools, a whole new way of looking at things. This is crucial to understand, not a ‘nice to know’. There are many different approaches and hybrid models in use, but a basic grasp of the concepts is a good starting point; on-the-job induction will deal with the details of procedure when the time comes.

Why Python?…Why Not?

I just couldn’t help myself! But in all seriousness, Python is an excellent tool to have at your disposal; a very clean, object-oriented language that can be coupled to frameworks for web development (Django and Flask, for example), but is also an excellent stand-alone language for solving any number of tasks on your chosen laptop platform, as well as being the first choice for many budding Data Scientists. In fact, if I had no prior experience in coding, Python may well have been my starting point.

Demonstrate Your Skills

The days of long, drawn-out resumes listing everything you know or have done in fine detail are gone; many companies now would rather see the results of your efforts in some demonstrable projects from your GitHub repository (which you will have been carefully stocking up as you learn).

It can be tough when you’re working to find the time to keep building new projects to demonstrate your skills (it’s still advisable though). When you’re just getting started in coding, it’s the perfect time to start saving your efforts; it’s certain that you’ll be asked for details in one of your application forms or interviews. As a double bonus, getting familiar with how repositories work is ultimately a non-negotiable skill.

Share What You Know

Once you feel ready, when it feels like the days you were just getting started in coding are long behind you, consider sharing your knowledge and skills with others. Many of the open-source, community-edition releases of software you will undoubtedly make use of outside of work, will be looking for contributors, and GitHub has many coders seeking assistance or collaboration for their bigger projects. It’s good to give a little back once in a while, and you may also make friends around the world.

Never Stop Learning

There isn’t a good place to stop the list. Technology never stands still, standards and best-practice constantly evolve; you should be prepared to keep up with the pace, in order to not get left behind.