Great Resources That Can Help You Learn To Code

teamtreehouse

Hi Guys!

I hope that you are well! As I am well over a year into my coding journey, I just thought that I would put together a couple of the resources that have really helped me progress on my path! It’s a collection of online courses, books and meetups (in the UK) that have been a great help! Hopefully they will help you too!

Online Courses

Teamtreehouse.com

I can’t speak highly enough of these guys! Teamtreehouse.com is an online school that teaches a whole lot of courses to teach you to code and get you job ready at a reasonable price! They use a combination of video, code quizzes and have a great online community that will help you if you get stuck! I am currently taking the techdegree now and I have written some blogs about my progress! It’s definitely worth a look!

CodeAcademy.com

It’s a free online coding school that uses primarily text and code quizzes that teach you to code in a number of languages. What I have found great about CodeAcademy is that they walk you through a number of real-world projects so that you can gain experience. I use this alongside Treehouse and this has really reinforced my learning!

Books

HTML & CSS: Design and Build Web Sites and JavaScript & JQuery: Interactive Front-end Web Development by Jon Duckett

These books are brilliant! Duckett does a great job breaking down the key components of Front-End Web Design which is HTML and CSS in the first book and JavaScript and jQuery in the second book! The books are gorgeous to look at and I have found them to be great reference points. Take a look at my review of Duckett’s first book here!

Mind for Numbers: How to Excel at Math and Science (Even If You Flunked Algebra) by Barbara Oakley

This book honestly has transformed my learning journey. Oakley’s book challenges the assumptions that maths and science is a GOD given talent and that these skills can be learnt. Oakley’s book is about Maths and Science in particular but about learning how to learn. I have taken many of the ideas in this book and applied it my own life with great results! Read my review here!

Meetups/Workshops

Codebar.io

Codebar.io run free weekly workshops, regular events and try to create opportunities for our students making technology and coding more accessible to underrepresented groups. Now they have a number of branches in London and around the UK and branches in Berlin, Germany and Barcelona, Spain. These guys have been absolutely essential in my growth as a programmer and if you are in the UK or any of the other places, please look them up!

Thank you for reading! If there is any resources that you have found helpful in your path to learning to code, list them in the comments below or tweet me @karlwebdev!

As always, see you next Thursday!

Karlwebdev

 

The Number #1 Skill You Need To Be Great At Coding

Reading time: 5 mins

sherlock-vision

This man knows how to do this well…

Houston… We Have A Problem

Since starting to learn to code over a year ago and now 6 months into my Techdegree, I am in a very weird place in my journey. On one hand, when it comes to Javascript, I can just about get my head around the concepts and ace all the little code exercises that are part of the learning program.

But when it comes to creating a new project from scratch or when I am given a more complex challenge, I become stuck. I have reached what Eric Trautman said in his brilliant blogpost “Why Learning To Code Is So Damn Hard” the ‘Desert of Despair’. After a couple of months of scratching my head, I slowly realised that I was missing a key tool to help me survive this desert, Indiana Jones style…

Problem Solving

This I discovered was the million-euro answer. It’s problem solving. The Oxford Dictionary describes ‘problem-solving’ as the “process of finding solutions of difficult or complex issues”. Although good coders can write decent code and through some programs together, great coders use their code to solve problems. Like giving dogs and cats typewriters and expecting them to produce Shakespeare, was like my method of writing loads of code and hoping that answer would reveal itself – there had to be a better way.

4 Steps To Solve Problems

In my search for the answer, one book to my rescue. “How To Think Like A Programmer: Problem Solving For The Bewildered” by Paul Vickers was written for people like me: folks who just wanted to learn not just how to code but when to use it and build stuff. Vickers felt that a lot of coding books and online resources would teach you ‘how’ to code but would not tell you ‘why’ you would use a method and ‘when’ you would need to apply it. Vickers felt that the actual language i.e JavaScript or Ruby shouldn’t be the main focus but the problem that you are trying to fix.

Vicker’s book is extraordinary (book review coming soon) and he devised a 4 step framework that you could use to help you tackle most coding problems!

1) Understand The Problem

apollo-13

You know the catchphrase… I said it already!

Vickers believes that most of the coding problems that we have is simply because we do not have a enough of a grasp of it to solve it. Humans are good at ‘abstraction’ which means that we can look at something i.e a thing, an idea and a person and understand what it is without going to very specific details. For example, if I asked you to ‘think of a dog’, in general you would think of a small animal with four legs, fur and a tail without having to think about whether it was a poodle or a rottweiler.

But in coding, the issue is that these ‘abstractions’ lead to assumptions that can actual hinder us in solving the problem. A great personal example of this was once when I was teaching a school class, I had a video clip that I wanted to show them but it was showing without any sound. After 10 minutes of unhooking the speakers, checking the software drivers were up to date and turning the machine on and off, I realised that the actual volume in the Media Player was turned off! It’s only when I went through it step-by-step, did I realise the error in my thinking.

If you are confronted with a large, complex problem, break it down it smaller, simpler chunks and solve those instead. Another tip I gained from the book is that if you become stuck, explain the problem to yourself as you would a small child: this will force you not to think less abstractively and take it step-by-step and this really works!

2) Devise The Steps

ironman-rocketboot

As they say the Iron Man suit wasn’t built in one day…

Once you think that you have understood the problem and broke it down to it’s core components, not you can start planning the steps that will give you the solution. This is not a static process: while planning the steps, you may find that there still maybe flaws in your thinking and you may have to go back to Step 1. Don’t worry, as the planning helps strengthen your understanding of the problem and lead you to new possibilities that you just would not of known in the planning stage.

Vickers suggests that you should display plans in more than one way i.e flowcharts and pictures so that it forces you to look at your plan from at least more than angle and this can help you get a different perspective on how it can be done.

3) Execute The Solution

wright-brothers

The Wright Brothers had the right idea…

Once you have done Steps 1 and 2, its now time to put the plan into action. So does that mean that as soon as you click ‘launch’, your job is done and you can sip your Tetley tea? Not on your life. To quote that great philosopher Mike Tyson, “everyone has a plan until they get punched in the face”. Remember as much as you plan, it’s not possible that you will perceive every possible outcome. Your code will have to go through a ‘testing phase’ where you will have to remove bugs and rearrange your code until everything runs smoothly.

At this point, it very easy to get discouraged when your program doesn’t work properly but remember this is normal when you ‘ship’ your solution. Good programmers understand this and don’t let the bugs and the failures hinder them and they keep on truckin’.

4) Reflect Upon The Solution/What Did You Learn?

obama-thinking

This fella will have a lot of time to reflect now…

So you executed, everything works smoothly and you are ready to jump on your horse and ride into the sunset. Not so fast Clint. The best programmers will often look at their solutions and evaluate them to see what they could learn. Great programmers ask themselves questions like:

  • What could I have done better that would make the program faster/more responsive/less bug prone?
  • What did I do well?
  • If I had time, what could I add/take away that will make the program better for the client/user?

Good coders don’t work in isolation. They allow peers and other users to critique their work and make suggestions on how they can improve. Throughout this phase, Vickers believes that good coders write documentation not just for other users but themselves which helps consolidate everything that they have learnt.

Conclusion

Although this framework is incredibly simple (as it should be), it has been a real eye-opener for me as it gave me a plan of attack in which to help create better solutions.

Another aspect I liked about this framework was that made me feel that it was OK not to have the right answer straight away and we have to sometimes have to fail many times before we get the ideal solution. Of late, while learning to build more complex programs, I felt frustrated much of the time and dare I say it, part of me was questioning whether I really had ‘the chops’ to learn coding and was feeling a little lost. This framework has given me confidence that ‘failure is not final’ and in fact is the true path to successful and happy coding!

Thank you for reading! What did you think? As always, leave your comments below or tweet at me @karlwebdev.

See You next Thursday

Karlwebdev

4 Ways That Blogging Will Help You Code Better

Reading time: 4 minutes
shakespeare-blog

“A blog by any other name is still a blog”

Good Afternoon People!
I hope that this blogpost finds you well! Phew! It’s been 18 months since I took the ‘red pill’ and jumped into the world of programming and 6 months since I started to blog my journey!
Before I forget, I just want to say a massive thank you to everyone that has read my blog, retweeted, commented and if I was lucky, subscribed to the blog. Blogging has been real adventure, fun most of the time but sometimes scary, but your comments, tweets and feedback have given me the strength to pull up my socks and keep moving!
Here are 4 ways that blogging has helped me become a better developer:

1) Blogging forces you to teach what you know – which helps you teach yourself

There have been many times where I thought that I knew a coding concept well – in fact I was so confident that I would try to write a blog post about it. Piece of cake right? Not. On. Your. Life. Technical blogs for me have been been the most difficult to write and have often had me tagging on my invisible hair.
Technical blogs have often done 2 things to me:
A) Expose the gaps in my knowledge – More often than not, in the process of writing, I find that there are things that I didn’t quite understand and it exposes my assumptions around the subject. Writing forces me to break things down into small understandable chunks to explain to the reader – which in turn helps cement the concept in my head. This has done wonders for confidence and self esteem.
B) Research – This forced me to read up on the things that I didn’t know and track down the answers that I sought. This sharpened my fact finding skills and introduced me to resources like Stack Overflow and the Mozilla Developer Network (MDN) which has helped me massively.

2) Blogging keeps you disciplined

People say that learning to code is like a marathon, but I disagree – marathons are boring. I would it’s more like the Tough Mudder – it will sometimes bring you to you knees and you will have to get your hands dirty!
I have written many times how in the beginning, coding seemed so easy but then I went into ‘The Dip’ and I went through the same process as blogging. Although it was easy in the beginning, there have been times where I got frustrated, was tired and wanted to give up. But blogging keep me honest. Delivering a post every week helped me develop patience and perseverance to keep on going. Writing about my struggles and connecting with other helped me to learn that these feelings were normal and keep me going. Willpower is like a ‘muscle’ that you can work on to make stronger – blogging has definitely helped work it out and this has helped me stay focused in my coding journey.

3) Blogging helps you make connections

Not all of my blogs have been about tech and I have spoken bout a range of subjects from my childhood, teaching and wider culture.

Through my adventures in social media, I have spoken with many interesting people and if they were discussing a topic that I was passionate about, I would point them to one of my blogposts and would use it a springboard for further discussion – this helped me foster deeper connections than I would get just typing 140 characters!

At an event a while back, I spoke to a tech recruiter about my career change plans and she helpfully suggested that I blog about tech because

a) It will show that you have interest in the subject

b) Your blog can be evidence of your learning and can help you eventually get jobs in the field.

The recruiter then said something that blew my mind away – She said that:

“blogs are the new CVs as rather than get a bland two page document listing your grades, your blog will tell what projects that you are working on, what are you truly passionate about and what you personality is like. Basically your blog will tell me whether you will fit in our organisation”

Wow. Your blog can help you land a job before you even send an application.

4) Blogging teaches you to give back

Huh? But you have just started I hear you cry! what can I possibly give? Well a lot actually. As a teacher, sometimes I will be teaching a large class of students who are not getting the concept that I am trying to teach them. Nothing that I explain is working. But just when I want to give up, a plucky young student will stand up and explain it to the class in terms that only they will understand and voila! The whole class is cooking with gas.

Never underestimate the power of peer-to-peer learning.

Also I wouldn’t be pursuing this dream if it wasn’t for all the teachers, volunteers and mentors who took the time to help me on my way. Don’t wait to be Mark Zuckerberg: start sharing what you know because the way that may explain it could help more people than you realise!

Thank you for reading and as always leave your comments below or tweet me @karlwebdev to let me know what you think!

This is the last blog before Christmas so thank you for reading and please have a very cheerful, relaxing and merry Christmas!

I have one more blog to drop before 2017 meet me here next Thursday!

Sayonara

Karlwebdev

 

 

 

How To Stay Motivated When Coding Gets Hard

Reading time: 4 minutes

sisyphus-image

The Dip Revisited

Learning to code can be hard… and painful.

In Seth Godin’s book, ‘The Dip’ Seth describes the ‘The Dip’ as the place between being a beginner and becoming a master when learning a new a skill. The Dip is the place where you realise how much you need to learn and this place is full of frustration, confusion and failure. ‘The Dip’ is the place where most people give up – and convince themselves they had no business learning that skill in the first place.

IMG_3599

But ‘The Dip’ is not an enemy but a friend, weeding out the uncommitted and for those that get on the other side,  gives them a invaluable skillset that helps them rise to the top of their field and claim all the rewards that go with it.

Frustration

I have definitely hit ‘The Dip’ in my Techdegree. Learning HTML & CSS were quite straight forward: I could make pretty little websites with relative ease. When I made my first webpage, I stood back like a proud father watching his son taking his first steps – I thought that I would be the Lionel Messi of FrontEnd Development in no time…

Then I started learning JavaScript.

Very quickly I realised like Dorothy in ‘The Wizard Of Oz’, I wasn’t in Kansas anymore. As a non-Computer-Science graduate, I found some of the terms and methods baffling: conditional statements, while loops, do while loops, functions, arguments and parameters were smacking me around like jabs from Anthony Joshua. Code challenges were no longer fun but exercises in frustration and irritation. The small voice in my head morphed into Donald Trump screaming things like “why did you think you could ever code?” And “what were you thinking? Give up NOW!”

But then I realised I was staring at my Dip. 

To enter my Promised Land, I had to cross the Valley of Death. And here I am. It’s not pleasant, but here are 3 strategies that I’m using to navigate this mother like Indiana Jones.

1) Stay Consistent 

When I first started to learn how to code, my routine was as follows

  • Watch the video
  • Do the Code Challenge 
  • Apply what I learnt to a personal project 
  • Get happy
  • Kiss my wife

 And so on. Since I’ve hit my Dip it’s become:

  • Watch the video
  • Get confused
  • Fail the Code Challenge 
  • Google the answer 
  • Get frustrated 
  • Watch Dragonball Super until I calm down

And loop. The relationship between coding and I went from ‘The Notebook’ with Ryan Gosling & Rachel McAdams to ‘The Break Up’ with Vince Vaughn and Jennifer Anniston – but not as funny. But when I started the Techdegree, I made a promise to code an hour a day, six days a week no matter what.

As my favourite book, ‘The Slight Edge’ says:

Showing up is essential. Showing up consistently is powerful.

If I start missing days, I break up the daily rhythm of learning that I have created over the year & this will make it easier to give up. Learning to code is a marathon & not a sprint & like a good long distance runner, maintaining a good, consistent pace is the key to finishing the race well.

2) Take Breaks

The other day, I was learning the difference between local and global function scopes and had to design in JavaScript, a counter based on what I had learnt. After what felts like hours working on this project, I was ready to put my red headband on & dragon punch the screen.

I had enough. In a huff and puff, I switched to a personal project to ease my frustration. Later, when I returned to the problem, I felt like I transformed into Neo and not I could see The Matrix – the answer was staring at me right in my face.

neo_stops_bullets

Taking breaks gives you coding super powers… Like Keanu Reeves.

This is what Dr Barbara Oakley in her book ‘A Mind For Numbers’ described as ‘The Einstellung Effect’. This is where you conscious mind becomes so focused on the problem that it narrows your thinking and your options. When stop thinking about the problem and focus on something else, your subconscious mind takes over, working on it in the background and because it’s  a lot more ‘diffuse’ can be more creative & often help you think of creative breakthroughs. 

I’m learning that rather than stressing over a really difficult problem and ranting about it like Kanye West at an awards ceremony, to switch to another easier and more enjoyable task or simply take a walk to clear my head. Breaks can lead to your breakthrough!

3) Don’t Double Down, Double Back

One of the greatest things that I have ever done is to keep a journal (No ‘Dear Diary’ jokes please – some of the greatest minds like Benjamin Franklin, Thomas Edison, Henry David Thoreau and Alice Walker kept diaries OK?) Writing about my daily professional & personal experiences has helped me improve my life greatly. One of the great advantages of journalling is that over time, is that it has allowed me to see certain patterns and habits that keep on cropping up in my life and this awareness allows me to see if I can change them.

journal-global

You don’t have to be a dictator to have one…

One of the habits that I realised that I was doing was, learning exactly in the way that I was taught in school. I watched the videos and took notes about what I saw – that’s it. But over time I couldn’t… do… nada. It felt like all the info that I was learning was jumping out of my head like Jason Statham out of a burning building… I was going around in circles. But only became aware of this by reflecting and looking at my journals and through reading and experimenting, I came up with a completely new process that boosted my coding ability.

If something is not working, it’s very easy to ‘double down’, ‘hang tough’ and ‘push through the pain’. But as coding has shown me, sometimes we need to take a couple of steps back and look at how we are doing things and see if there is a way that to do them better. I try to code for 6 days a week and rest on the 7th. This gives me the time to reflect on what well, what didn’t go so well and I constantly try to look at how I can improve my systems and processes.

I hope that these suggestions will help you but I am still learning myself! Are there any strategies that help you when the going gets tough? Leave your comments below and/or tweet me @karlwebdev – as always I look forward to hearing from you!

As always, thank you for reading and I will see you next Thursday!

Karlwebdev

Code like A Rockstar: How Programming A Website Is Like Producing A Killer Song

Reading time: 5 minutes

u2-pic

JavaScript killed the radio star…

Introduction

Before I got involved with coding or even teaching, I cherished music. From the age of 12, my whole world revolved around making tracks, performing and “gasp” getting signed to a record label and winning a Grammy! Marrying either Alicia keys or Beyoncé would have been the icing on the cake. (Jay-Z and Swiss Beats beat me to it! Dammit!)

Although my Puff Daddyesque dreams never came to be, I am incredibly grateful to music, for giving me the unique set of skills that have benefitted me in every area of my life. Music Production taught me how creativity and technical know-how can come together in perfect harmony: the sweet art of melody and composition meeting the cold science of audio engineering creates the stuff that becomes the soundtrack to your life. Music production taught me that creativity without knowledge, creates original but undisciplined songs that confuse the listener. But songs that are technically correct but lack that creativity sound decent but they are stale, lifeless & boring.  Getting the balance right is key.

Many people are baffled by music production. Walking into a professional recording studio can be like stepping into NASA Headquarters just before the first Apollo mission. 

But as I teach my students in music college, a great song goes through 3 important stages.

  1. Composition – creating the rough idea for the track & is usually just a riff or loop

      2. Arrangement – fleshing out the idea, adding a clear sequence & other instruments

      3. Post-Production – adding effects & sonically enhancing the track to sound ‘polished’.

The Penny Drops…

When I started to learn about Front-End Development, I really struggled to get my head around the strange concepts: variables, selectors, concatenation, attributes and refactoring were attacking my brain like Bruce Lee in a fury. I just couldn’t get my head around it and it made me miserable. But as I went further along, I realised that a website had its own framework.

  1. HTML – Forms the basic structure of the website

      2. CSS – Deals with the presentation of the website (makes it look pretty!)

      3. JavaScript – Adds interactivity & enhances to the website

The two processes were remarkably similar… and when I realised this, it just clicked for me and the same passion that I had for creating the perfect song transferred to creating the perfect website. Here’s how the two processes compare.

1) Drop The Beat! HTML Is The ‘Composition’ Of The Website

As good ol’ Kanye showed us, composition is all about the ‘big idea’ of the song. Whenever I created my best beats, it would start with me playing around with the sample, tinkling the piano keys or playing with the cool sound effect. Once inspiration caught me, I would scramble to add of a basic elements until I had a basic ‘loop’ going.

The loop acts the basic sketch of the track & the concept that the rest of the track will be built around. Creating a loop gives the producer a rough idea where every think should go i.e. where the rapper spits his bars and where singer belts the chorus. Although loops may not take long to develop, you quickly see if it has that “magic” – that feeling that the track will be special. If you get the loop right, then all the other sections will be easier to complete. As they say in the music industry “you can’t polish a turd” – if the idea is garbage, then the song will be a non-starter.

Likewise when creating a website,  HTML provides as the tools to create a structure of what the site needs to become. HTML like a loop is a rough sketch of our website – allowing us to quickly decide where all the main parts will be from our navigation menu to our search bar. Although HTML won’t create the prettiest website, like a loop, HTML allows us to see whether our site has that “magic” & will it work. The best websites are deceptively simple, clean and let you see “the big idea” straight away. A poorly structured site will chase users away.

2) “I Can Make Arrangements”: CSS As The ‘Arrangement’ Of The Website

Thank you Pharrell & JT! Once you have the your basic idea, you would move to the arrangement phase. Arrangement is turning your 30 second movie pitch into an epic motion picture with a beginning, middle and end: full of tension, twists and turns & finishing with a great climax.

At this stage, an arranger’s knowledge of music theory is absolutely key. An arranger needs to have an in-depth knowledge of his genre and ask herself questions like:

Who will listen to this track?

What additional instruments do I need?

What key is the song in?

Do I want to make it sound happy/sad/mysterious?

How many verses/choruses does it need?

The arranger takes that 30 second loop & takes the listener on a 4 minute journey adding the instruments, melodies & soundscapes that bring out the emotional content. As the track evolves, the arranger is not afraid to remove parts of the original composition if it is no longer useful & may find themselves troubleshooting sections of the song as some instruments or melodies may clash together. An arranger must be patient, borrowing from all the knowledge of music history but allowing for new ideas.

Likewise CSS takes your basic HTML website that you have created on with the use of colours, layout and design, turns it into a beautiful website that takes the user on a visual journey. CSS uses the HTML structure to target specific elements to make the site pretty! Like an arranger, a web developer must draw from a bank of technical and design experience to know what is worked in the past but also keep an eye for future design trends and stay ahead of the curve. A great designer constantly asks questions about what is the site’s target audience, the overall theme and how the design compliments with the overall goals of the creators and more.

Like an arranger, a great developer be brave enough to add elements if needed or take away elements if they distract from the overall experience. This is especially critical as a designer must use “responsive design” techniques to factor in screen sizes & may have to change different elements around for the site to be viewed from mobile devices all the way up desktop computers. Sometimes the design will not render how it should and a web developer will often have to troubleshoot parts of their CSS & work around the problem and making sure that the user has a great experience on whatever device that they use.

3) Flipping The Script! How JavaScript is the ‘Post-Production’ of our website

Bruce Swedien was the Quincy Jones’ main sound engineer to mix Michael Jackson’s Thriller – the greatest selling album of all time! His mixes are legendary!

Whoa… We’ve arranged the track but it still sounds…off. Parts of the track sound too loud or too soft. The track when played on a boombox sounds radically different when played on an iPhone and although it’s finished it sounds like a demo & doesn’t have that ‘polish’. This is where Post-Production comes in. The track will be passed to a sound engineer who will take the track through the process of mixing & balancing the levels, adding effects to enhance the most important parts & sonically sculpt the track so it sounds more dynamic & enriching to the listener.

At this point, a sound engineer may introduce a fixed like delay or reverb to make the vocal sound more ‘epic’ and standout against the instruments. He may use a tool called an equaliser to cut or boost certain harmonic frequencies (pitches) in a sound i.e. make the trumpet sound ‘less bright’ so that it doesn’t smother the piano and may place the lead guitar and keyboard sounds in the left and right speakers respectively (panning) which helps create a sense of ‘space’. The sound engineer has to decide what file format to export the song to, as the different compression rates have a drastic effect on the sound & try to balance the track so that it will sound as good on as many different devices as possible. Some argue that this is the least musical stage, but is no less important than the others.

Likewise JavaScript takes your beautifully designed yet static website and makes it a fully interactive experience that you are users will rave about. A JavaScript programmer on and take parts of the website and bring them to life for more personalised experience for the user such as creating interactive timetables, ever changing photo galleries or forms that will ask you to complete different parts depending on the user.

A good JavaScript programmer, like a sound engineer, must have in-depth knowledge of the language & decide what would be the correct tools for the job. She may use JQuery to execute a variety of common JavaScript tasks, which make the code easier to run in the browser. Or she may use AJAX which can allow you to update individual parts of he page for ease and speed & must continue to learn about the ever changing frameworks & libraries & how it will effect future websites.

To a newbie, JavaScript seems mysterious & unworldly. But like sound engineering, with a bit of practice and dedication, newbies will discover that their sites will become more polished and take user experience to a higher level.

You Matter

So what is the point of all of this? Is creating a website really like making a song? A metaphor can only stretch so far and this piece is far from perfect.

But the real point is that, as a newbie, even though you may not have a computer science background, you have picked up a variety of skills that with a bit of imagination & creative thinking can be used to help you learn to code better. For me, it was music but for you it could be cooking, rock climbing, sewing or playing badminton. Nothing is wasted. Technology & society, needs your unique viewpoints to help us solve the tremendous problems that face us in the future. Go ahead. Lean in and create your own song whatever it maybe and rock the world.

Thank you reading! Leave some comments below and let me know what you think. Follow me on twitter @karlwebdev!

See you next Thursday!

Karlwebdev

The One Hour Study Method That Drastically Improved My Coding

Reading time: 8 minutes

rocky-banner


What training montages did for Rocky is what this method did for my code – and it can do it for you too!

Introduction

Learning to code has been one of the greatest decisions that I have ever made in my life. It has been incredibly challenging, but like L’Oreal it has been worth it!

But having a teaching career as well as a family and other commitments, have made it difficult for me to be able to dedicate the huge blocks of time that I would love to and I usually only have one hour a day to play with.

As I wrote before, I really struggled at the beginning as I felt that I wasn’t retaining any information. I thought that I had to continually go back over the same resources again and again because I just kept forgetting.

But being a student of Personal Development taught me that there is always a better way so I stumbled upon the Study, Do, Model cycle.

That gave me great results but I know that I could push it even further. Then I stumbled upon a marvellous book called “A Mind For Numbers: How To Excel At Maths And Science” by Dr Barbara Oakley.

Focused Versus Diffuse Learning

focuseddifused

Dr Oakley’s book (which I am going to do a book review on very soon) was mind blowing. The book itself is a companion piece to an online course called “Learning How to Learn” which is available on Coursera. Dr Oakley has researched extensively on how human beings best learn & designed the course around her findings.

The book rests on the theme that when we are learning any new subject, we are actually switching between two modes: focused learning and diffuse learning. ‘Focused learning’ is where our conscious mind is fully focused on the problem at hand i.e. working out a maths question on the exam paper. This mode is what most of us know through formal education.

But what is equally as important is what she called ‘diffuse learning’ – this is where the mind is left to wonder and not focus on the problem at all. Diffuse learning is a more relaxed mode where the mind subconsciously works on the problem in the background.

Question: how many times have you had a difficult coding problem that really drive you crazy and you took a short break to cool off – only to it to find when you returned, the answer magically staring in your face? No, Harry Potter didn’t zap your grey matter – what happened was, when you took your focus off the issue, your subconscious mind took over and was ‘freer’ to make connections with all the different knowledge centres in your brain. Freaky huh? The book argues that we learn optimally when we balance our time between focused & diffuse learning.

The One Hour Study Method

Prior to reading the book, my coding practice merely consisted of watching videos & doing a couple of code challenges and I was getting very frustrated. But based on the suggestions in the book I changed my whole structure to the following:

20 minutes – Completing flashcards to test myself on what I learnt in a prior sessions

30 minutes  – Following video/book instruction in 5-8 minute blocks then immediately applying what I am learning

10 minutes – reading popular blogs/watching videos about the ‘tech’ industry in general

TOTAL = 1 HOUR

1) 20 minutes of Flashcards.

Dr Oakley felt that ‘cramming’ (intense study on a subject for a short period of time) produced poor results. The problem is NOT remembering the information. Our subconscious minds are fantastic at remembering most of the information that comes our way. The real problem is retrieval – the ability to recall the information at will.

The best analogy I can think of, is that your mind is like a massive warehouse: all the info that you absorb, gets stored deep in the warehouse but there is no labelling system so when the stuff comes in, it’s chucked in a random box & filed away in a messy heap and you can only stumble on it by accident.

messy-warehouse

Our minds are not as efficient as we would like to think…

Re-reading your notes won’t help either. How many times have you read a page in a book & you had to read it 5 times to understand the main points? That’s because your brain goes into ‘passive’ mode as it doesn’t have to work hard to do anything with the info – it’s all in your face!

Asking questions like “what is the difference between CSS & HTML?” forces your brain to switch to ‘active’ mode where it has to search for the information & strengthens the neural pathways so it makes the info easier to retrieve. Asking questions is like, not only sorting, labelling & filing the stuff properly in your mind but figuring out the shortest path to get the stuff when you need it. The best way to do this is via flashcards.

When I first started, I manually wrote out paper flashcards. But as my knowledge base grew, it became harder to manage & know what Flashcards I had to review, when next to review them etc so I switched over to Anki – an electronic flashcard system that did it all for me.

anki-screenshot

Once I create a flashcard, Anki automates when I will need to test myself on it again and gives me a lot of stats on how long it took for me to answer the question, difficulty etc…

This mean I was deliberately practicing what I had learnt & my recall ability shot up dramatically. Flashcards are the ‘what’ of your learning.

2) 30 minutes of watching instructional videos in 5-8 minute blocks then applying what I had just learnt.

The book talks about the concept of ‘chunking’ which means putting pieces of information together which are bound by meaning. Remember when we spoke of building our neural pathways to make it easier to retrieve information? ‘Chunking’ takes these individual pathways and weaves together the form and information superhighway. For example, when you order food at a fancy restaurant, you are doing a number of unrelated things:

  • Reading the menu- you need to know the language and the context
  • Calculating the cost – maths, percentages, decimal points
  • Food – know/imagine what the different flavours of food

These things involve very different skills but your brain formed a chunk called ‘order food in a fancy restaurant’ and it allows you not only to do those things but effortlessly & at the same time.

leo-toast

If you can order food in a restaurant them you’re a genius…

Chunking is the ‘when’ of learning – it’s no good learning millions of different pieces of information but not knowing when to apply them.

This means that jumping from one topic to another quickly will not give your brain the time to connect all the information together. You must organise your material in similar groupings. This is why I took Teamtreehouse’s TechDegree, which did all the hard work for me. The TechDegree is an online bootcamp that gives you all the essentials skills to become hired as Front-End Developer. It has an extensive syllabus that builds on itself & after each section, gives you code challenges & projects to complete based on what you learnt. This method allows my brain to build a solid foundation of knowledge that i can use at will.

3) Watch a 10 minute talk/video about the tech industry or read a popular blog

Research has shown that after 45 minutes of concentration, our attention span starts to dwindle so I stop coding and I try to watch or read something about the tech industry. I do this, so I can come out of ‘focused mode’ and go into ‘diffuse mode’. This provides my ‘why’ of learning. Looking at the trends and new discoveries in the industry, allows me to see “the big picture” and gives me clarity on what direction my learning is going in. There is no point in learning the skills, if you don’t know where they will fit into the marketplace. These ideas go into my unconscious mind and it acts as a guide of what to learn next.

mountain-top

You need to see far so that you can go far.

Of course I am not perfect and I may skim down on one part or the other. It’s not easy, as this method forces you to slowdown rather than whizz through 100 videos.

But this method has transformed my coding ability. I feel more confident, retain more information & start to see more connections between different areas making me learn faster. I have been using this method for 3 months, and what I have seen is a quantum leap in my progress.

If this seems a bit too crazy for you, I would say start small. Do you 20 minutes of flashcards or some form of testing yourself and then do 40 minutes of your regular stuff. Being proactive by testing yourself will you yield significant results, I promise you!

If you need a hand, please reach out and I will explain more about my system.

Please let me know what you think in the comments below.

See you next Thursday!

Karlwebdev

The Simple Idea That Helped Me Learn To Code Better

Reading Time: 5 minutes

4720969-obi-wan-kenobi-star-wars-5

I am fully on my way to becoming a coding Jedi Knight

Introduction

I have been teaching for 5 years and I always thought that I was fast learner. In July last year, I thought that within 6 months, I would be the Brad Pitt of Web Development… But I struggled miserably.

I studied the same way that I studied for every major exam: I read the books, watched the videos, took the notes, did the quizzes but I still struggled to align a paragraph let alone build a webpage.

I didn’t understand what I was doing wrong but then I came across a book called ‘The Slight Edge’ (click to see my review) and that changed my whole learning system.

I had to relearn how to learn.

As embarrassing as it was, the model that I got from a £10 book helped me more than the thousands that I spent on my teaching qualifications!

The Study, Do, Model Cyclestudydomod

The model is very simple and I will show you how I adapted this model to help me learn to code so far.

Study

tumblr_lk46f2dum81qbgz4po1_500

Pity. Fool.

 

Almost all of us who have been to school know this method really well: we read the books and take notes but for me this didn’t work. How times have you read a page from a book & forget all the content a minute later?

You must become an active learner.

Don’t just read the books but especially with the with coding, go to author’s website & do the projects that go with the book, read blogs & comment, listen to podcasts etc. You want your brain to be hit by as many different sensory inputs as possible: visually, auditorily & kinaesthetically and will make it more likely to stick in your brain!

Do

maxresdefault (1)

Do It!!!

Reading and even watching the online videos is not enough, you must do it. Common sense right? But here’s the problem with most online resources: You will get a code challenge or task to do. You will pass it but you will never do it again. That’s not how we learn. We must repeatedly do similar tasks again and again for it to go from our short-term memory to our long-term memory. Repeatedly going over the same skill until you’ve mastered it is known as deliberate practice and this is what separates amateurs from masters. Productivity blogger James Clear describes deliberate practice as working “on a skill that requires one to 3 practice sessions to master”. In other words, the first time you pass that code challenge won’t make it stick a memory, kid.

You must create a deliberate system where deliberate practice is done regularly.

For me, this is done in two ways:

  1. After I learn the skill, I try where I can, to apply it to a personal project to see how it would work in real life.
  2. Create a physical flashcard and test myself regularly. Currently I’m using electronic version called ‘Anki’ (I’ll write a post on that later)

Constant repetitions make you become ‘fluent’ in your coding language, making it 2nd nature & leaving your brain to think creatively and able to deal with any challenges on the project.

Modelling

zoolander-2

Blue Steel.

You can learn to code from a book or even watching a video but nothing will ever compare with learning from a real life human being, period. Human beings are social animals and the way that we learn by observing & mimicking other humans. This has been hardwired into our brains & is our default setting, sorry folks.

But it goes deeper. Models give you critical feedback about your approach and how to improve your skill that can save you hours of frustrating online searches & mistakes. Andre 3000 had a great anecdote where he compared mentoring to playing a computer game with his teenage son. Andre said:

If you played that video game for the last two years and you’re proficient at it and I just jump on the game, you’re quickly going to say: ‘Hey, Dad, the trap is right there. When you get over there, you have to go, hop hop hop hop hop.’ Now, if you didn’t say that, it might take me a year to figure that out…So a mentor is: I’ve done this, so I’m helping you get past that place.

Finding models in the coding arena doesn’t have to be a scary thing. The code community is very friendly and very open and have very active communities all around the globe. Just look up ‘code meet ups’ and put your area in Google. If you are in the London/south east area, one place that’s helped me immensely is codebar – they run coding workshops for aspiring coders is especially from underrepresented communities. having a friendly face look over my code and help me has not only helped my code improve but been very motivating & encouraging.

Conclusion

If I were to weigh it, I would say that I do you weighting for each part should be a third overall. Of course there will be times where you might do one part more then the other but try to invest in all the other areas.

Think of the Study/Do/Model method like a tyre on the car: for the wheel to roll smoothly on the road of learning, each part must be filled. You can still drive with a 1/3 of air in the tyre but it will be a bumpy ride & you will be stopped by the police & fined!

Thank you for reading & leave some comments in my blog page and/or tweet me!

Karlwebdev

3 Things Every Newbie Must Know About Coding

Reading Time: 5 minutes

Everyone-should-know-how-to-program-a-computer-steve-jobs-840x560

Introduction 

Officially on July 17th, 2015, was the day I decided to take coding seriously and started the journey to become a web developer. Learning to code is like riding a rollercoaster: there will be times that you will be climbing up the track and will feel like you are “on top of the world”. Then there will be other times that you will be plummeting feeling sick and this disorientated!

In honour of my first year anniversary, he is free critical lessons that I discovered and it will hopefully hope you have a smoother ride!

1.Coding Is Hard… But That’s Good.

The Internet has millions of fantastic resources that will help you learn to code. But as fantastic as they are, you must be aware of some of the “mistruths” out there. Websites and books that say “learn JavaScript in one hour “or “learn python in one minute” tempt us newbies into thinking we can book on the next mark Zuckerberg in the same time it takes to make your instant coffee!

But what I have found was that although I was making functioning website or programs, I still lacked the understanding why it works. As soon as I came across a bug or a glitch, I had no idea how to even begin to fix it and that’s where my greatest frustration would lie.

But slowly I discovered the best coders do 2 things:

  1. The best coders are excellent at troubleshooting and debugging the code.
  2. The best coders use code to solve other people’s problems

That’s also what makes coding so satisfying. Your ability to overcome these obstacles, whether in your code or solving a need, is what makes you valuable. Don’t shy away from problems – embrace them! This takes time and effort. Expect that coding is hard and don’t beat yourself up if you don’t feel you’re making fast enough progress. Be kind to yourself.

2. Coding Takes Time & Effort

Some resources will convince you that with “as little as five minutes a day, you would be able to code like a professional in one month”– unlikely. To be a good coder need to significant investment of considerable time and effort.

Let us take it from another angle: as you know, great relationships need time and presence to make them grow. Going on the dates, the phone calls, the walks in the park, the ‘cards and the candy’ light that spark and keep the flame alive hopefully for a lifetime.

Likewise I have learned that you need to buy the books, attend the talks, go to the workshops and chill at the hangouts to become a better coder. Just one resource is not enough, otherwise you will plateau. Carve out one hour of your day at least: skip that reality TV show, wake up slightly earlier, reach out to people on Twitter/LinkedIn/Facebook and network of people in the field. If you get stuck with one resorts, switch gears and try something else – it will be pay off!

3. Coding Is Totally Worth It.

Coding is hard and takes time and effort but it’s a wonderful and enjoyable skill to learn. To me, coding is as close to magic as I’ll get on this side of Hogwarts.

Despite all the frustrations and days of confusion that I inevitably get while learning, when I write a piece of code and it renders correctly or I fix that bug, there is no feeling in the world like it.

The reason why I feel so deeply in love with music was the idea that I could create something from my imagination and present it to the world. Coding allows you to do the same thing and once you get the bug (pun intended) you won’t stop.

I’ve come to realise that coding is not a sprint nor a marathon – it’s more like a really long steeplechase.

Youth+Olympics+Day+4+Athletics+gyK80y2k7yjl

Will be times that you will be gliding on the track, then your find yourself jumping over hurdles face first and some ditch water – to get up and do it over and over again. Code is everywhere and even if you don’t take it as a career, learning to code will gives you the passport to see how technology is changing the way that we live, way beyond what our grandparents physically thought was possible. There are still days I want to give up, but it’s the lightbulb moments that makes the struggle worthwhile.

Thank you for reading, sign up to my blog and leave your comments.

Share this post on all your social networks & tweet at me @karlwebdev