Category Archives for Programming

Top 12 Free resources for learning code

Top 12 FREE resources for learning code

Shares

In this day and age, you can learn almost anything with the amount of information that is out there. And code is no exception. There are tons of resources, and actually, that is part of the problem, the other part is cost. Some courses can carry a hefty price tag, I mean, have you ever looked at the cost of a boot camp?! Others may be reasonably priced but will require a monthly subscription. Again, there will be those so strapped for cash that they cannot afford a perceived long term commitment. So, is it possible to learn code for FREE? Well, this was something I certainly explored when I realized how expensive babies are!

I think the whole world knows that kids are expensive. But before they are even here you have already kitted out a nursery with all the essentials. Spent God know’s how much on a pimped out pram. And filled your home with boxes of nappies and wipes in anticipation for the coming dirty bombs.

Then, when they are finally here, they grow out of everything you bought in the first few weeks and proceed to work their way through formula, nappies, and wipes at an alarming rate. And that’s all pennies compared to covering the cost of childcare.

So naturally, any way of saving money was explored, and that includes learning code. But what did I find?

In no particular order, here are my top 12 resources to help you learn code for FREE…

Codecademycodecademy

Codecademy is one of the best free resources to begin your learning journey. I myself started learning Java here. And if Java doesn’t spark your interest don’t worry, they have a great selection of other languages and technologies you can learn. From HTML, CSS, JavaScript, Ruby, Git, Python and even API’s.

Codecademy is free but they also offer a paid pro version which comes with more quizzes, projects, a personalized learning path, and an adviser.

I found Codecademy was a great start. It is easy to follow and highly recommended for beginners. I personally didn’t upgrade to the paid version, but I certainly found the free tracks gave me a brilliant foundation to build on. Defiantly check it out if you want to ease yourself in.

Topics taught:  Python, Java, PHP, HTML, CSS, JavaScript, AngularJS, ReactJS, Ruby, Ruby on Rails, SQL,  API’s and Sass.

Udemy

Udemy

You may be wondering why Udemy is on this list as the majority of its courses come with a fee. Although that is true, Udemy also offers a selection of free courses uploaded by its instructors, and some are surprisingly good! They will definitely teach you the basics and set you on the right path.

Udemy has an extensive library of course, on near enough all programming subjects and languages. Some topics may be more popular than others. Therefore, those topics will have more free videos. It really depends on what you want to learn. But if you’re looking for a free option its worth having a look.

If you do have a bit of spare cash I would highly recommend purchasing a paid course. Udemy has some brilliant instructors, which I have first-hand experience of. You will learn so much more by comparison. If that doesn’t persuade you, it’s worth noting that Udemy regularly has sales, where you can pick up a course for as little as £10.

Topics taught: Too many to list

Free Code Camp

FreeCodeCamp

This is another very popular platform, especially for aspiring web developers, and as the title says, it’s FREE.

You will learn the basics, starting with HTML and CSS. Then, your will move onto other web technologies and languages such as JavaScript, Bootstrap, Node.js, and React.js to name a few. There are literally hundreds of hours of content available, which even includes an interview preparation section.

It’s a very practical platform where you complete coding challenges and building projects. And to cap it off, you can even receive verified certificates as you progress.

At present Free Code Camp is very web focused but I have seen that they are starting to expand into other areas such as Game Development and Machine Learning. So stay tuned.

Topics taught: HTML, CSS, JavaScript, ReactJS, NodeJS, Bootstrap, JQuery, Algorithms,  JSON, Ajax, API’s, Saas and MongoDB

Khan Academy

Khan Academy

Khan Academy is a very general purpose learning platform, unlike Free Code Camp, which focuses on the particular path of a web developer. Rather, you will get a foundation understanding of Computer Science, plus access to other subjects such as Maths and Engineering.

You will also learn about Web Development as it covers HTML, CSS, JavaScript, JQuery as well as SQL (databases). But I think what sets Khan Academy apart from others is the easy access to other subjects such as Maths. Brushing up on Maths can be quite beneficial to your programming skills so it is great to have that option.

The platform is aimed at all ages including children so don’t feel patronized if it looks like the subjects start at a low level.

Topics taught: HTML, CSS, JavaScript, JQuery, SQL, Maths, Science and Engineering and other broader topics

General Assembly Dash

GA Dash

The main General Assembly website is a learning platform to learn anything from Business, Design, and Marketing, to Web Development and Programming. However, these courses come with a price tag. But General Assembly Dash is a completely FREE dedicated online course in Web Development.

The course covers all the standard technologies you need to know in order to create stunning websites. I really like the fact that the course is project based. This means you learn by doing, which is always the best way.

If Web Development interests you then I recommend taking a look.

Topics taught: Web Development, HTML, CSS, JavaScript, Responsive Design, UI

edXedX

edX has quite prestigious credentials as it’s actually governed by Harvard and MIT.

Currently, as of writing the post, the platform has over 1700 courses on various subjects, and over 400 courses related to computer science. Meaning they are not short on content!

The only negative I would say is that it can be a little hard to find what you want. However, you will find courses delivered by credible institutions such as Microsoft. So I guess you could say it’s worth the search.

There is also an option to receive a verified certificate at the end of your course, however, this will cost you. The price is generally around $100.

Topics taught: Too many to list

CourseraCoursera

What stands out for me with Coursera is that all its courses are taught by University professors. So this alone gives some peace of mind to the quality of its courses.

As for the number of courses, you are truly spoilt! There are over 2000 in a broad selection of topics including Science and Engineering, Business, Maths, Languages, Arts and of course the important topic, Computer Science.

You will find courses in various programming languages, concepts, and fields. Really, whatever your programming needs, there is likely to be a course on it.

Finally, again like edX, you have an option to obtain a verified certificate at a similar rate of up to $100.

Topics taught: Too many to list

CodewarsCodewars

This is an amazing platform that turns the experience of learning to program into a game, which is really refreshing.

The whole environment is designed to make you feel like a coding ninja. You will engage in ninja training to earn points, increase your honor and level up in rank. Training comes in a series of challenges known as “Kata’s”, which vary in difficulty.

Select your weapon’s of choice, i.e. your programming languages, to complete the challenges.

Codewars has a strong community, which will also help you learn and grow. You can even create your own “clan” to help you really get in the spirit of Codewars.

You don’t have to be an expert programmer to join, but I would recommend having a little experience. Only because a complete beginner might be left scratching their heads when they are faced with even the self-proclaimed “easy” challenges. But if you have some basics knowledge it can be a really handy platform.

Codewars is not a course designed to take your from zero to expert programmer. But rather to improve your existing programming skills in a fun and addictive environment. It is definitely a great resource to help you grow.

Topics taught: Clojure, C, C++, C#, Crystal, Dart, Elixir, F#, Go, Haskell, Java, JavaScript, PHP, Python, Ruby, Rust, Shell, SQL, Swift, TypeScript

YouTube

YouTube

You may have already considered YouTube, and rightly so, it’s full of great content, which is FREE. However, it can be hard to find what you want because there is SO MUCH content. A classics case of information overload. So to help you out I have whipped up a quick mini list of great YouTuber’s who can help with your coding quest.

I have personally subscribed to all these channels and have found something useful on each one. And I would highly recommend checking them out yourself because the chances are you will find what you are looking for.

Most of them provide playlists and tutorials designed to teach you certain programming languages, frameworks, and topics. Many of the playlists can actually feel course like in nature. So again, take a look.

Topics taught: Too many to list

The Odin ProjectThe Odin Project

This is another resource for the aspiring Web Developer. It’s not really a learning platform where you work through a series of video tutorials. Instead, it acts as more of a personal guide and mentor.

It will give you an intro to answer some of your questions, provide reference material and direct you to other learning resources to help you build projects and explore Web Development.

I guess you can think of it as a catalog of some of the best content on the web for learning Web Development.

You will also benefit from a community as it has a Glitter chat room where you can receive support from fellow developers. Learning code on your own is hard but the burden is much lighter when you have a supportive community.

The Odin Project aims to give you a path, build a portfolio and connect you with others in the pursuit of a Web Development career.

Topics taught: Web Development, HTML, CSS, JavaScript, Ruby, Ruby on Rails and JQuery

Upskill

Upskill

I was actually quite amazed when I discovered Upskill, I initially thought it was a scam because the quality looks so great and it’s FREE.

Again if you are looking to get into Web Development this is a brilliant start. It’s all delivered as video tutorials, which you follow along to. If you prefer video content this is a great contender.

You simply sign up with an email and boom, you’re enrolled on their “Free Essential Web Developer Course”, where you will learn Full Stack Web Development. The course currently covers HTML, CSS, JavaScript and Ruby on Rails.

However, as of writing this blog post, course material is still being added so keep an eye out. They do also offer a couple of paid courses but these are optional.

Topics taught: Web Development, HTML, CSS, JavaScript, Ruby on Rails plus others to come

Sololearn

Sololearn

Sololearn comes as a mobile app and is a brilliant resource. However, I wouldn’t recommend using this as your only learning platform. While it is a great aid, in my personal experience it will only provide you with the basics of various languages.

In addition, it will only teach concepts (i.e. loops, variables, data structures etc) and not best coding practices or actually how to program. There is a difference between knowing syntax and programming.

That said, the reason I included it on the list is that being a mobile learning platform has some real benefits. Namely, learning on the go. Whenever you need to brush up or remind yourself of a particular concept the app is right there.

You will find yourself learning through a series of challenges and quizzes as you progress through the tutorials. But the big selling point is its community and the gamified learning process. You can connect with other coders, see their codes, experiment, and even challenge other for XP to increase your rank.

I found Sololearn very useful at the start. Having to work full time, while learning code meant I couldn’t always fully immerse myself. But having Sololearn on hand to play around with on my breaks was handy.

Topics taught: C++, C#, Java, Python, JavaScript, PHP, Swift, Ruby, JQuery, HTML, CSS, SQL

Summary

I hope this list has been helpful, but before I sign off I just want to leave you with one little bit of advice.

Don’t feel you have to pick and stick to one platform. Different resources and platforms will offer different things so opening yourself up to a wider bank of knowledge will give you a bigger picture. Also, you need to find what works for you so that means experimenting.

Again, I hope you find this post useful and I will catch you next time.

Feature image created by Macrovector – Freepik.com

Guide to choosing your first programming language image

Guide to choosing your first programming language

Shares

So you are adamant you want to learn to program and you have told yourself, “this is it!”. Brilliant, I commend you on your conviction. But now what? where do you start? Well, the obvious place is choosing your first programming language. This will be the first step on your programming journey, exciting isn’t it? However exciting this may be, it can also be very confusing for a complete beginner. There are so many languages, how do you decide?

What even is a programming language?

This may seem like a trivial question, but I know before I did any research I didn’t fully understand. I thought all code was created equal. How naive of me!

To give you a quick overview, all software you encounter on your phone, tablet, and computer is created using code, written in a particular programming language and or a combination of languages.

Programming languages are similar to spoken languages, in that they communicate the same or similar things, however, appear different.

The basic concepts of all programming languages are relatively the same but what makes them inherently different is their syntax.

The syntax is the actual written code itself. What makes one language’s syntax different from another are the characters, words, and phrases used, and their arrangement.

So you can better understand, I have written the same thing but in two different languages. They both print out “Hello, World!”, but as you can see they look very different.

Python:

print("Hello, World!")

Java:

System.out.println("Hello, World!");

So, where do we start? 

From my experience, I feel there are two main ways to go about choosing your first programming language.

Route 1, you can start by learning a relatively easy language, with a simple syntax, then progress to other languages.

Route 2, you can choose a language that aligns more with your end goals. For example, a particular job or project you want to build.

Route 1 VS Route 2

An easier language is…

  • Obviously, easier to pick up and learn
  • Provides quicker motivational pay off thanks to a shorter time between learning and creating
  • Like any other language, it will still teach you the concepts of programming, aka the hard part!

A language based on your goals…

  • Will shorten the time between learning and achieving your end goals
  • Can be more fulfilling as you are working with a language you have a vested interest in. This can also help maintain long-term focus
  • May set a higher standard. If your chosen language which is particularly hard anything after that will seem like child’s play

It boils down to this…

If you want to ease yourself in, and you are okay with taking some time before moving toward your chosen field. Then start with a simpler language to get the concepts down, then progress.

This is perfectly fine, and to be frank, you’re going to be learning many other languages down the line anyway.

However, if you have a very focused goal, and learning this certain language will help you achieve it. Then sure, follow this route and pick the languages that will lead straight to your goal. Just be aware if your language is particularly hard, you may have a few sleepless night ahead!

One final note…Not everyone is going to have such a specific goal in mind, or know exactly what kind of developer they want to be. You may even change your mind down the road. And that is FINE.

When it comes to choosing your first language remember it is not a fatal decision. You can always change or pick up another language. The key is to get started! I defined the two routes as a way of narrowing your choice and giving you focus.

In my opinion, the role of your first language is to teach you programming concepts. These concepts are the hard part, and are universal across most languages. So by learning one you will have a fundamental understanding of the others, which will makes learning other languages easier.

What are the different programming languages? And which one is right for me?

You may have done a quick Google search already and have realized that there are literally tons of programming languages. But to help you choose I thought I would provide a little overview of some of the most popular languages. Plus, a handy guide so you can see how easier their syntax is to learn.

Difficulty score (1 easy – 5 hard) – This is a relative scoring system so it is not to say any one language will be a walk in the park. Learning to program is hard! It’s just some languages are easier to pick up than others.

Objective-C – Difficulty level: 3

If you’re an Apple fan and interest in building desktop apps and mobile apps, then Objective-C may be the one for you.

Objective-C is a language of choice for developing apps for Mac, iPhone, and iPad. Ton’s of apps are still written in Objective-C, and I say “still” because back in 2014 Apple released their new language, Swift.

Now, Objective -C has been the tech giants language of choice since the mid 80’s and even with the release of Swift, I can’t see it disappearing anytime soon. The main reason is that Apple is still supporting the language, plus there is a lot of third-party support still out there.

You have to remember that it’s been around decades so there will naturally be more resources, tools and reusable code compared to Swift. Also, if you get a job as an iOS developer, chances are you will run into Objective-C sooner or later.

Swift – Difficulty level: 2

I have already touched on Swift so you already know it’s Apple’s modern language for creating a host software for the Apple eco-system.

Although I mentioned Objective-C wasn’t going anywhere soon, Swift is equally here to stay. Swift appears to be the language Apple wants for the future, and I suspect some point in the future Swift will make Objective-C redundant. But until then, if you are keen to be abroad the Apple ship, you should really understand both.

For a beginner, I would suggest learning Swift first, then diving into Objective-C. Swift is a much easier language to learn. Apple also has interactive coding environments, know as Playgrounds, designed to help beginners.

Python – Difficulty level: 1

Python is kind of like the Swiss army knife of programming languages, it’s not dedicated to any one thing but is a general-purpose tool that used for near enough everything.

Python has been used to create web apps like Google, YouTube, and Instagram. It can also be used for Game Development, Data Analysis, and Machine Learning among other things.

If you a new to programming and just want to dip a toe in, Python is a great place to start. It is easy to read and understand, and so versatile that you can try different things to find your specialism. It has also dramatically increased in popularity over the past few years. According to IEEE Spectrum, it has jumped to No.1!

Ruby – Difficulty level: 2

Ruby is probably best known for its Ruby on Rails framework which is great for building web applications.

Ruby has a strong focus on getting stuff done. This makes it great for quickly turning ideas into reality. So if you have an idea for a start-up you want to quickly smash out, Ruby is a good choice.

It has brought us the wonders that are Twitter, Hulu, and Groupon. Plus, for first timers, it is a fairly easy language to wrap your head around. So the learning curve won’t be too great.

C – Difficulty level: 3

C is an old language, and again, can be described as a general purpose language.

It is different from many other languages on the list because it uses Procedural Programming rather than Object Oriented Programming (OOP). This means it works through a series of structured steps to compose a program. Compared to OOP, which creates objects to store data and functions. I won’t go into the details about Procedural Programming vs OOP, that’s probably best saved for another blog post.

What you need to know is that C is mostly used for systems software, namely operating systems as well as scientific programming situation. It is quite a popular language, which has held the test of time.

Personally, I would say C is more akin to learning the science of how computers actually work. So, if that interests you great! Go with it. But for a beginner who wants to start building apps quickly, it may not be ideal.

This is not to put you off C, but to give you an idea of what and who it is best suited.

C++ – Difficulty level: 4

If you serious about professional 3D Game Development than C++ could be what you are looking for. Although, be aware this is not a language for the faint hearted beginner.

C++ is a superset of C, basically C but Object Orientated and with a lot more bells and whistles. Although C++ is pretty much the gold standard for 3D Game Development it also has other uses in system software, desktop, and mobile applications.

For a dedicated beginner, it can be done, preferably with a mentor. I will say that if you manage to stare the beast in the face and walk away successful, any other languages will seem like a child’s play!

C# – Difficulty level: 3

Where Apple has Objective-C and Swift, Microsoft have C# (pronounced C sharp).

C# is your first choice for creating Windows applications for desktop and mobile. You can also expand into web development thanks to Microsoft’s ASP.NET web framework.

C# is a very versatile language and with the introduction of Xamarin, you can actually create cross-platform applications for Windows, Android, and iOS.

The syntax is surprisingly similar to Java and for a beginner, it is not that hard to learn. It’s not easy, but it’s not hard, a happy medium I would say.

Java – Difficulty level: 3

You may have heard of Java and JavaScript, but don’t get them confused, they are not the same thing. I will be covering JavaScript in a second but for now, I want to talk about that hot dark cup of Java.

Like a few other languages I have already mentioned, Java can be used for almost anything! Think desktop, web, and mobile, again it’s quite general purpose.

You will find Java among big enterprises like banks, hospitals, and universities. But many people know of Java as the language of Android. Yes, the third piece to the puzzle, Java is the choice for Android fans.

If Android App Development takes your fancy maybe think about Java. You may also take comfort in knowing that there is a considerable demand for Java developers in the job market. So you won’t be short on job opportunities.

HTML/CSS – Difficulty level: 1

Time for a little disclaimer. Many people say HTML (Hypertext Markup Language) and CSS (Cascading Style Sheets) are not technically programming languages as they don’t provide any real programming functions.

However, if you are interested in Web Development you really need to start here. These two together are the building blocks of creating any static web page.

HTML structures all the text, images, links etc, while CSS makes it all look pretty. They are both very easy to learn and will set you up for a career in Web Development, which can be a very lucrative career!

JavaScript – Difficulty level: 2

You know I just said HTML creates the structure of a web page and CSS make it look pretty. Well, JavaScript comes in to liven things up with effect, animations, and transitions. That’s right, JavaScript makes web pages do stuff!

Although it is not just limited to websites now, JavaScript is coming out of web browsers and becoming a more general purpose language. You can EVEN create games with it.

For beginners, it is an easy language to learn and tends to be a natural progression from HTML and CSS. And in terms of the Job market, JavaScript is very sought after as it seems to be everywhere.

PHP – Difficulty level: 2

PHP is another language that is used in conjunction with HTML to provide functionality to websites.

It is one of the most popular languages for handling data on websites as it is particularly good at working with databases.

Search functions and login systems are created using PHP. And for a stamp of approval, global tech giant Facebook runs on PHP, which is worth noting if you’re looking to get a job at Facebook.

There are so many more!

Sorry but this is where the list end. There are so many languages out there and unfortunately, I just can’t go through them all because we would literally be here all day! However, I have managed to cover the most common ones out there.

Lets look at the STATS…How do the languages stack up?

It is always worth checking out the latest trends so you can get a feel for the popularity and demand of a language. Ideally, you DON’T want to pick a language to later find out that it has no future because no one uses it.

A languages demand should be a factor in your decision because that will give you an insight into the future career prospects with that language. 

Now, to save you the excruciating headache of trawling through hundreds of search results, I have compiled a little bit of research and found some great links.

Images attributed to Stackify.com

Its worth mentioning that Swift is fairly low down because it’s a new language. I would not fully dismiss it just yet since it’s part of the Apple family.

There are far more stats than this! But to avoid making this post too stats heavy, I thought I would only include these two key stats.

For in-depth stats on the latest programming trends, I would recommend checking out Stack Overflow Developer Survey Results for 2017.

One thing to note is demand for certain languages can depend on your location. So if an unspecified developer job is your main focus, look at the demand around you. But don’t worry, this is can be done with a quick job search.

My mistake…

Yes, I make mistakes…quite a lot to be honest. I am only human! In fact, many moons ago, before I even started this journey, I attempted to learn C. Don’t ask me why C, I just did. My thought process went a little like this, “I want to learn programming”, “C is a programming language right?”, “Ok, I will learn C”.

I had no clue what C was, what it was for, or where it would lead. Not surprisingly, I soon lost interest.

You need to know the practical applications of the language. Being able to learn practically helps you cement what you learn. You will also find it makes the experience fun! You get a real buzz when you stop and look at what you created, knowing not long ago it was just a fantasy.

The point of this cautionary tale is to do your research. Know what the language is for, what you can build with it, and even start thinking about small projects to get you started.

However, on the flip side, don’t spend your life researching. It will get to the point of procrastination and really what you need to do is JUST START.

Summary

First decided where your interests and priorities lie. Whether you’re looking to ease yourself in, carve out a career in the particular field, or have a really cool idea for a startup. Know what the important factors are for you, this will give you your starting point.

Next, do some research, and hopefully, this post has helped a bit with that. Also, have a clear idea of how you can use the language, and possible projects you could build.

Finally, don’t waste time on researching and just GET STARTED! In all honesty, your first language is not a fatal decision. You can always pick up and learn another, and chances are you will learn a handful of languages on your journey.   

As always, thank you for reading!

Should everyone learn code image

Should everyone learn code?

Shares

After I finished my last post, 7 reasons why I learnt to code, I began asking the question “should everyone learn?”. Is this really the hot new skill that will change your life? Do you need it to stay relevant in the job market? And is it absolutely vital that our children have this ability for the world they are about to build? Well, here’s just a few of my thoughts.

Just to give you a bit of background…

It is no big secret that in recent years there has been a big focus on learning to code. Governments, business, even you next door neighbors may be spouting this message.

For kids, the opportunities are already here, thanks to the drive of non-profit organizations such as code.org. Coding has even become part of the UK’s national curriculum!

But don’t worry, it’s not just kids who get all the fun, already existing adults, like myself, who missed out on this wave have the opportunities to learn online.

There are literally hundreds, if not thousands of coding boot camps popping up. Plus, websites like CodecademyTreehouse, and FreeCodeCamp which are all designed to teach you this valuable skill.

A godsend for those who are really passionate about learning to program!

entrepreneur programmer image

But why is there such a focus on learning code?

In my opinion, the big push comes down to two factors, economic and public perception.

You can’t move without hearing a bunch of stats on the growing skills gap in the tech industry. Even just last year here in the UK the gap was highlighted further in the 2016 UK Digital Skills Economy report. I know, absolutely riveting stuff!

There also seems to be a strong perception that in the future we will be living in a tech utopia, where technology and software are so entrenched in everything we do, that surely it is only logical that everyone will need to learn code.

This could be a welcoming image for people who love tech, love coding, and love sci-fi. But for those who are not so keen, the idea of a future world of coders may be daunting.

So let’s get back to the question, should everyone learn code?

Me, I am torn!

This question is tricky. On the one hand, I do think it’s a great skill that teaches you so much more than building apps.

As Steve Jobs once said, “Everyone should learn how to code because it teaches you how to think”, and I agree with that. This is one reason why I was happy when coding becomes part of the UK national curriculum.

However, I don’t agree with the idea that writing software will be an essential skill for the future workforce. I still see writing code as something specialist rather than for the masses.

I want to dive a bit deeper into both these sides, but first, let me tell you where I stand.

NO, I DON’T think “EVERYONE” should learn CODEStudying programming image

People learn code for different reasons. They may learn because of:

  • Personal interest
  • Career change
  • Self improvement
  • Higher income

These are just a few, which are all good valid reasons, and if you want to learn code go for it! Don’t let anyone stop you. But if you take one thing away from this post I want it to be this.

Don’t feel like you HAVE to learn because you are being told to. Or, that if you don’t learn, you will be left behind in the modern world.

There are loads of people who are just are not interested, and that’s fine. Everyone has different skills sets and passions, which are all valuable. People have made it this far using each other’s skills and strengths, and I doubt that model will change.

Personally, I don’t foresee a world where writing a few lines of code becomes as common as writing an email or word document.

PERSONAL ADVICE:

Pursue your passion, whether that’s learning code, art, writing, or building a family. Pursuing your passions will lead to greater feelings of fulfillment. Remember, everyone has something to offer.

So why is learning code NOT essential for the future workforce?Space X Rocket image

As I mentioned earlier, there is an idea that the future will hold a much greater focus on software. Therefore, it is only logical to think that jobs will reflect this. And, to be honest…I agreed with this!

But who says software will have to be written in traditional code?

If the skills gap in software development is really that bad and grows faster than we can churn out programmers, would it not make more sense to develop tools that we can use to whip up software?

There are already drag and drop tools for building simple websites and even apps. If we continue down this path we could be using drag and drop interfaces to build more complex software, or the at the very least, the basic structure. Then all the coding wizardry could be left to specialized programmers.

Another option is to make the act of writing code more user-friendly so it feels more like writing a set of instructions in English.

To paraphrase Bill Gates; “one day in the future all we will have to do is tell the computer in plain English what we want, and it will figure out what we need and write the code. With the rise of AI and Machine Learning, this may be possible in the future”.

If these were legitimate options would everyone really need to be able to write code?

It is very labor intensive learning code, believe me, and generally, to actually build software there is not just one thing you need to know! This actually brings me to another point.

Software development is a specialism. You don’t just learn code

The idea that just learning code enables you to automatically build any website or application you want is wrong. To be honest, years ago, before my programming days, I thought the same.

Programmers are a bit like handymen, to build something like a website you essentially need a toolbox. You have your HTML for the basic structure and layout, CSS to make things look pretty, JavaScript to make it do cool things, and PHP for your back-end data stuff (there are tons more but you get the point).

The other issue is that these programming languages are always being updated! Every year or so a new framework comes out or there’s a new language to learn. In essence, today’s programmers have to be constant STUDENTS.

However, it is true that once you learn a language it does become easier to other languages. But it’s still work trying to stay up to date.

So if you are planning to add “can code” to your CV in hopes it will open you up to a broad scope of future programming jobs I wouldn’t bother. You will get better results from specializing in an area of software development, like IOS apps or back-end web development, then learning all the tools you need for the job. You could even specialize further with Javascript frameworks like Angular and React.

PERSONAL ADVICE:

If you are looking to get into software development it is strongly advised to pick an area and specialize. Specializing will make you stand out, limit your competition and make you more valuable. This is something that has been drummed into me throughout my learning journey.

But doesn’t it teach you how to think?

At the start of this post, I mentioned Steve Jobs famous quote, which I wholly agree with. Really thinking about it, you don’t have to learn code for the sole reason of becoming a programmer.

If you want to challenge yourself or become a better problem solver, learning code is a great option. It teaches critical thinking and how to break down problems and find simple solutions.

I mentioned it’s maybe not wise to put “can code” on your CV, but you can defiantly add “great at problem-solving…”.

Learning to code does develop some great skills which can carry over into other areas. But you don’t have to learn code just for professional development. It’s also fun!…Well, that’s my opinion.

What about the kids!Child learning image

While I don’t think every adult needs to learn code, or even that the act of writing code will be a vital skill in future. I do, however, believe every child should have the opportunity to learn. The cliche, “children are our future” is right. Therefore, they need to be given every opportunity in life.

Although, rather than trying to create a generation of software developers, I feel it is more important to focus on the principles programming teaches and the skills it develops.

Schools are not designed to make us masters in every field, but open our eyes to subjects that excite us. Obviously, you’re meant to gain knowledge, that’s a given!

All children don’t attend Art classes because they are expected to become artists. But these subject provide valuable underlining skills. In the case of Art it develops creativity, and in Programming, it’s logic and problem-solving.

Personally, I really wish that I had the opportunity to learn code in school. Maybe I wouldn’t have spent years dossing and trying to figure things out.

Summary

So what’s the overall message here? Well, I just wanted to give my two pence worth and challenge the view that code is the new literacy. Also, maybe provide some reassurance to anyone who feels they “SHOULD” learn code.

I have no doubt that it’s a valuable skill for anyone to learn because it does change the way you address problems. It can also open up doors to a new career and multiple opportunities. You just have to look back at the stats to see the demand.

Although, in my opinion, it’s not the ultimate skill that everyone will need for the future. Writing code is, and I suspect will still be a specialist skill. Therefore if you have no desire to learn then simple, you shouldn’t. Why pursue something you don’t want to do? Just do what makes you happy and follow your passions.

But of course, if learning code is something you want to do then give it a shot! There are plenty of opportunities for those keen to learn and specialize. Even if developing software becomes very user-friendly they will still be higher levels where specialists are needed.

Thanks for reading.

7 reasons I learnt code

7 reasons why I learnt code

Shares

In my previous post, “Hello World”, I mentioned my decision to learn code and highlighted the moment I “got serious” about learning to program. But, I kind of skipped over the reasons why? So I have written them down to give you get a better insight into my decision.

1. Role model to my son

Baby holding handsI thought I would start with this soppy one, get it out of the way you know.

You may have already guessed that the birth of my son played a big part in my decision, and so he should, he’s my son.

As parents, we are their teachers when it comes to showing them how to conduct themselves in life. Now I don’t think any parent can be 100% perfect, that is unrealistic. Most of the time we just strive not to do anything too stupid, and as long as they are still in one piece at the end of the day, I take that as a win.

Nevertheless, I wanted to be the person he looked up to and set a good example for him. Regardless of what I wanted to learn or do with my life, I want to show him that if you put your mind to it you can achieve anything. Whether that’s teaching yourself programming or simply putting your shoes on the right feet.

2. Passion for the craft

Laptop with codeThis seems like a pretty obvious one! And I am sure, for many programmers, this will be the main reason they got into the field in the first place.

I was first drawn to programming by the possibilities it offered. The things that could be created from what appeared to be jibberish on a screen seemed like MAGIC to me.

Then when I actually began learning, I saw the intricate layers that went into those nonsense lines, and it began to feel more like ART. That probably sounds weird to a lot of people, but hey, I’m a weird guy.

However, let me just try and justify myself. When you look a beautiful painting you can recognize the care and attention that has gone into it. It makes you appreciate the artist and their craft. For me, the same can be said for a well-written and structured piece of code. It’s an art.

PERSONAL ADVICE:

If you are thinking about getting into programming, or anything in life for that matter, passion is a must. It’s one of the things that will keep you going when you have a sea of red errors and all hope seems lost. 

3. Looking for a new challenge

Mountain climbI get board…quickly! And I need to feel like I am progressing and moving forward otherwise I get down and frustrated. Does anyone else get this?

In short, I need to keep challenging myself. I have been able to do this to a degree in my day job, by taking on more responsibility, leading projects etc. However, I sense I have reached my ceiling. Many people will know what that feels like.

“Ok Owen, well why don’t you just move up? Or change jobs?”. Unfortunately, through economic circumstances, there are limited opportunities to progress in my current organization (There ain’t no jobs to move up to). I have also not been very successful in securing external jobs.

But you know what? That’s fine. I don’t have to wait for a challenge to present itself. I can go and make my own!

PERSONAL ADVICE:

If you feel like you’re at a dead-end in your career, don’t wait for something to happen. Make it happen. Learn a new skill, start a business, go solo. What’s the worst that can happen? You FAIL?

Well, at least you know what NOT to do next time. Failure is part of success, everyone fails, but we learn. Elon Musk almost went bankrupt blowing up 3 rockets in pursuit of his so-called “pipe dream”, luckily the 4th was a success, *thumbs up*.

If you don’t try you will never know. You don’t want to look back and think “what if”.

4. Love new technology

Mobile phone using cameraDo you ever look on in awe at the technology around you, and go on to think, “what does the future hold?”. Just me again?

Most of my days are spent perusing TechCrunch to see what the latest thing is (mostly it seems to be all about AI or VR). Often I will hear or read a story about a new piece of tech that just blows my mind. Then straight after I think, “how cool would it be if I helped create it”.

I know this is a far off dream that many probably share, which has been fed to us by the stars of Silicon Valley. But you know what? It’s good to dream!

5. Creative outlet

Drawing of the word createYou may have guessed from my previous post, I used to think of myself as somewhat of an artist. I have a creative side, which at the moment seems to be lingering in the background just gathering dust.

I constantly have a string of app ideas floating around up there. Most of my ideas might be utter garbage, but unless I create them I won’t know!

Programming also promises the creative freedom to really build whatever you can imagine. Don’t like the world? Make a new one. It’s crazy to think that’s possible with lines of code.

6. I like learning

Textbook and glassesThis title feels odd to write because in my last post I mentioned that I’m technically a dropout. So this may be the last thing you expected me to write. However strange it is, I genuinely do.

Now I will admit that I didn’t really enjoy the structure of my formal education experience. But that doesn’t mean I don’t like learning.

In fact, I will share a little embarrassing story with you. When I was little, probably around 6, after school had finished, I would go up to my teacher and actually ask for homework. WTF, what was that all about?

I like to understand things, figure out how they work and then apply them. Which is exactly what you do when you are learning to program. If I could, I would learn every language, but I don’t think that’s practical or well advised! I have often heard the phrase “Jack of all trades, master of none”.

7. Money (that horrible word)

Piggy bankDid this title make you cringe? It made me. I’ve never really been frivolous when it comes to money. I can easily spend 30 minutes just trying to decide if I REALLY need a new pair £20 jeans.

I will say now that I DON’T think money is everything. And I DON’T think you should do anything is life for the sole purposes of making loads of money. And I DON’T think becoming a programmer will make me automatically rich.

The sad truth is that everyone needs money to live. To pay the bills and support their families etc. And as I mentioned in the previous post, being able to provide financial security for my son was one of my biggest concerns.

It probably would have been a lot easier if I just got a second job. But the easy route is not always the best. And as I just said, I don’t think you should do anything in life for the sole purpose of money. Plus, for me, learning code ticked many more boxes. Not just a supplementary income.

For me, the prospect of learning programming offered more opportunities in the long term. It offered me the chance to develop my career and add value to myself professionally.

PERSONAL ADVICE:

When is comes to your career, it’s good to think of yourself as a product almost. Products with more value cost more, simple. Of course, there are those products where you are paying extortionate amounts, just for the name. But I am sure the same can be said for some people.

You understand the point I am trying to make. By upskilling yourself in any field, not just programming, you add value to yourself, which opens up more opportunities.

So again, learn, take a course, start a business, whatever you think will add value. But make sure it’s something you enjoy and want to do. Don’t just do it for the money. Because even if you succeed, and get that promotion, you may still be doing a job you hate. Although, at the end of the day it is your choice.

Summary

These are my personal reasons for wanting to learn code. If you are also thinking about taking that leap or learning a new field, I would just like to suggest a couple of things based on my experience.

  1. Makes sure it’s something you enjoy. This will make the experience fun and exciting. Plus you are going to have to commit to it.
  2. Know your main motivation. When the journey gets hard (and it will) this is the thing you can call upon to keep you focused and carry on. Mine is my son…obviously.
  3. Have more than one reason for doing it. If you have just ONE reason it becomes some much easier to brush it off and accept defeat. Having lots of reasons add weight to your decision, making it easier to stick to.

I hope you have enjoyed and thanks for reading.

Thinking about why I learnt code also got me thinking about the “everyone should learn code” movement that was floating around a few years ago. In my next post, I wanted to give you my take, which may surprise you.