Jason Kiernan is a 28 year old pharmacist who lives in the south-west of Ireland.
He's been working as a community pharmacist since he was more or less 21, but after a few years on the job, his work started to get pretty routine and boring.
So craving more of a challenge, Jason set out to get a degree in Computer Science from the University of London's distance learning program.
He breezed through his first year of courses, but into his second year he hit of bit of a wall with Algorithms.
Specifically Jason couldn't wrap his brain around something called Dykstra's algorithm. It's an algorithm for determining the shortest path inside of a graph of nodes.
Thankfully some of the tutorials on Data Structures that I offer on YouTube helped bring things into focus for Jason.
After being exposed to some of these free tutorials I offer, Jason actually decided to dive head first into Coders Campus and went through the Java Super Course and a few others to help speed up his learning.
Jason stresses how the time involved in learning all of the “theory” that you receive from a formal education is great, but it's not really something that you'll be using out in the real world. For this reason, he loved the Coders Campus as it focuses on exactly the skill-set that you need to develop in order to be successful out in the real world.
He outlines a hypothetical scenario where you take 4 years to get a degree in programming versus a scenario where you take 2 years to go out and learn to code on your own in a self-directed manner. If both paths lead to the same outcome (which they absolutely can), then you can do in 2 years what will take many others 4 years… so, imagine what you can do with an extra 2 year head start!
The Dark Side of Programming
Our conversation then steers into the darker side of programming.
Ladies and gentlemen, learning to code is VERY difficult. At some point in your journey, you will want to give up. You'll think that you're “not smart enough to be a programmer”.
Trust me, we've ALL been there, myself included.
With the right teacher(s), the desire to be a programmer, and enough time, I'm confident that anyone can become a programmer.
The problem is that SO many people give up early because they don't find good enough teachers, or they just don't truly have the desire to be programmers.
My advice is that if you truly do want to be a programmer and you're struggling to learn, make it a priority to find a teacher that “makes things click” when you learn from them. Because the right teacher can change the game for you.
How Important is it that I Learn the “right” Language
Jason admits then when he first started his journey of learning how to code, he was a bit obsessed about figuring out the “right” language to learn. He didn't want to learn a language and then spend years paying for a bad decision.
This is a VERY common question asked by beginners, and it spawns thousands of comments from programmers all saying that you should learn the language(s) that they know. People will subjectively argue about why “this language” or “that language” is to best to learn.
The truth of the matter is that, so long as you're learning a language that's fairly popular, you really can't go wrong.
There are two main reasons why this is the case:
- Once you've learned one language, it's SO much easier to learn a second one
- With respect to web development, there can be dozens of different languages used in a single web application
Diving further into the first point, learning your second language will be orders of magnitude easier than the first.
My first “real” attempt at learning a language was learning Java. I went through university and then used it out in the real world. I'd say that it took me a couple years of working with Java every day to feel quite comfortable with the language. And by “comfortable”, I mean that you could give me a large project to work on and I could get it done on my own within a reasonable amount of time (so long as I had access to the internet).
But then I learned the Objective-C language, and it only took me two months to go from knowing nothing about that language to publishing apps in Apple's App Store. So that's a decrease in learning curve by a factor greater than 10.
My advice here is to try your best to pick a language that will open doors for you. If your goal is to get a job as a programmer, then Java is a fantastic place to go because of its popularity in the working world. If your goal is do game development, then maybe C++ is your best bet as it has some great libraries and frameworks for game engines. If your goal is just to learn for fun and challenge yourself, maybe Python is your go to language because of its fairly easy to learn (compared to other languages). If your goal is to be on the cutting edge of technology then maybe choosing one of the new languages created by a mega-corporation is the choice for you.
The point here is that going from Java to C++, or Python to Java, or from GO to Python doesn't take too much additional effort because the fundamental aspects of programming don't change between languages. An IF statement is still an IF statement, a LOOP is still a LOOP, a variable is a variable… doesn't matter which language you're using.
The second point I'd like to expand on is the fact that some companies use SEVERAL programming languages within a single application.
Take Uber, for example, a super popular app these days that's used to hail a ride in real time from your mobile phone. Uber's application uses Python, Java, Objective-C, JavaScript, and Node.JS (and probably others too).
This myriad of languages can be made possible through the use of RESTful APIs. When creating a RESTful web application, you're allowing your app to essentially be “language independent”. This means that certain functions of the app can be done using one language, and another function of the app can be done using a second language. And these two functions can “call” one-another and communicate between each other just fine.
The reason this is possible is because we're using a somewhat “universal” language to communicate between the languages. A RESTful web application uses HTTP Requests to make the calls between functions, and the data that's returned is in JSON format (JavaScript Object Notation), which can then be decoded by the specific language you wish to use.
So a JSON response can be decoded into a Java Object, or a Python Object, or a Node.JS Object etc.
Pretty neat stuff!
A Hunger for Knowledge
Jason has made the connection that many of us have made in our lives, and that's the realization that computers are the future of humanity (whether you like it or not). And if you want to play an active role in that future, you need to know how to communicate directly with a computer. So learning software development has become a bit of an obsession for Jason.
He's spent countless nights working past 1AM completely enveloped in the flow of writing code. And the reason why Jason can be learning and coding well into the morning hours, is because he shares something that I have as well, a series hunger for knowledge.
Perhaps this is something that you have as well?
This is the reason why I quit my day-job as a professional programmer back in 2012. I wasn't really learning much at my job anymore, and I was seduced by the call of becoming an Entrepreneur. I had NO clue what was needing to be my own boss and create my own business from scratch… but that potential thrill was very similar to the thrill of creating my own application from scratch back when I was just starting to learn how to code.
So this is why Jason has been able to “keep at it” and not give up in his pursuit of learning the Java language. The coder's journey is a challenging road, but if you have that hunger to keep learning, then you'll do just fine in this field.
Parting words of Wisdom
So as our interview came to a close I asked Jason if he had any parting words of wisdom he could share with everyone.
He said not to be afraid to reach out and ask questions. There were TONS of “stupid questions” that he asked and would get responses from people saying “You're complete off base with where you're going here.” But he would always get the help that he needed, and he would learn from that experience.
Sure every once in a while you'll get a bit of a rude response from someone on the internet, but as Jason puts it “That's just human nature, you'll always see videos on YouTube with 10,000 likes and 10 thumbs down”, you can't please everyone and there's always someone out there having a bad day who wants to rain on your parade.
Jason also urges people to try and wade through the “fluff”, be critical of the time you've allocated to learning. Do you want to spend 3 hours learning some fancy theory that you might never use, or do you want to spend it going “hands on” and building something that will take shape before your very eyes.
And to finish things off, there's one last piece of advice that I'll give to you based on what I learned about Jason and his experience learning how to code.
Jason did something remarkable in my opinion when he recently reached out to potential employers and asked for an interview. Even though he knew that he didn't “know it all” he wanted to see where his potential gaps were and see if a company would actually be willing to hire him.
In the end, he got his wish and a company near his hometown invited him into an interview. They were so impressed with the amount of knowledge that he had, they were actually willing to open up a position for him if he could commit to working full-time for a number of years.
So in that moment, Jason achieved the goal that many of you are trying to get to, which is a job offer. The difference here is that he just reached out and tried to grab it TODAY as opposed to continuing to grow his skill-set to be “the perfect candidate”.
The analogy here is that “perfect” is the enemy of “good”. If you spend your life trying to be the perfect coder, you'll never get there. Your goal is to get “good enough” to apply and then see where life takes you.
The worse thing that can happen is that the potential employer will say “no you're not ready yet, come back when you know how to do [xyz]”, and that outcome is EXTREMELY valuable, because now you're armed with knowing EXACTLY what you need to land a job.
So all that's left to do, is to put in the work and fill that knowledge gap so you can come back swinging a second time.