World of Math Part 1

So I decided that I wanted to brush up on my math. I feel like for a software engineer math is not as important as for a computer scientist, but since I would like to become a well rounded software person I should still be good at both.

Through high school I was quite good at math especially in the early grades but, probably not because I couldn’t but rather because I was too lazy, I started to accumulate holes or gaps in my understanding to eventually led onto wider and wider gaps because math builds on top of what one already understands. At University I was mainly bad at math, understanding only glimpses of the theorems I saw thanks mainly to intuition.

Since I have now had a good introduction to full stack software engineering, databases, operating systems, and data structures and algorithms. I think that it is a great time to focus on the more theory heavy topic of math. Note that I don’t want to become good at all math, but I do want to become good at high school math and computer science math. Enough to be able to show off during interviews and to not fall behind when reading an advanced article or whitepaper would be nice.

In terms of high school math, Khan Academy has me covered. I had volunteered briefly with the organisation when they were looking for English to French translators a few years ago. It was a mission with Khan Academy and Library Sans Frontieres. I’m not sure how useful I was back then, but I helped to review a few history videos. All this to say that Khan Academy has always appealed to me I didn’t think I would end up being a customer!

Khan Academy has a great K-2 through K-12 math curriculum and tests to take. You can watch lessons, earn points and badges, and it also has a practice and mastery system. You can practice any lessons you wish by taking tests. You can then attempt to master your lessons by taking mastery tests, these tests can earn you points towards your mastery but also lose you points if you fail – making it important to double check answers to mastery questions.

The system is well designed, and you can tell (and I’ve read) that there is an AI behind it that forces you to learn topics in the order it thinks best and won’t let you attempt to master certain topics until it thinks you have practiced them enough. You can take mastery challenges on average every 8 hours.

Math by grade vs Math by subject

progress.png

I have completed all K-2 through K-8 math, but need to master a bit more of the K-8 topics. You may noticed that I also have a bit of Algebra and Geometry under my belt. This is partly because when I first discovered the site, I started thought that it would be good to study By Subject. I didn’t realize that K-2 to K-8 meant because we have a completely different education system in France where we learn by grade throughout high school. But it turns out that in America they learn first by grade from K-2 to K-8, and in senior high school they learn their math by subject.

It was a real big surprise for me to go from Early Math to Arithmetic and Algebra, I thought the learning curve was quite steep there for a moment! But it is best to start by completing the math by grade, and then move onto completing the math by subject.

I think this is maybe a bit confusing for people like me who are not from the US. The math by age should the left hand side column and the math by subject should be the right hand side column. And perhaps there should be some sort of intuitive visual guide or notice when the website can detect that you are from countries other than the US.

Rate of Progression

rate-of-progress

I read posts on quora about that tried to estimate the time it would take someone to complete the World of Math challenge on Khan Academy (100% math mastery) and the consensus was that it could take from 11 years to 15 hours depending on one’s skill level in Math and motivation.

How much time World of Math?

How long does it take to do World of Math?

Most the top posts on reddit.com/r/Khan also concern the World of Math challenge and try to estimate its time to completion.

So far the graph above will show that I have spent 39.2 hours on the World of Math mission. This doesn’t account for all the time I have spent on the challenge outside the website: asking for help on forums such as r/learnmath, and learning from articles and videos on youtube – which is probably another 5 hours.

My current completion of the mission is 58%.

The progression is however not linear. It is very easy to progress through the mission at first. But you can see that the more I have been progressing, the more videos I have been watching and the slower by pace has been.

I am about to tackle more involved topics such as Algebra I & II, Calculus, Statistics and Probabilities, Trigonometry, and then advanced topics such as Linear Algebra and Differential Equations. I know a bit of each of those topics, but although K-2 K-8 was mostly revision, I think that it will take me much longer to go through the rest of these lessons because it will actually involved a lot of learning – and learning takes time.

I imagine that in 1 to 9 months from now I will have seen the light at the end of the tunnel and maybe even continued onto discrete math which is a University level math class considered very useful for computer scientists.

Icing on the cake

Got a mill’ points in the bank and 13 day streak, whoop whoop.

My journey to get my first job

Back in 2011 I graduated with a reasonably good Computer Science degree from University of Abertay Dundee. Towards the end of my studies, the financial crisis was in full swing in the UK, and I realized that I although I was technically competent, I wanted to gain experience in a field that would push and develop my business and people skills – universal skills that have wide applications in life. I joined the Oxylane group as a manager, and learnt a lot of valuable life lessons during my years at the company.

Fast forward to 2014 and it had then been a few years since I had seen the inside of a compiler,  although the principles and understanding of computer science were still there and will probably always be with me.

However, my coding skills were rusty and I was going to have to relearn a lot. I took a good look at where the software industry was at before creating a learning plan. Web development was the hot thing at the time, with people coming out of 3 month bootcamps able to find jobs in the Silicon Valley for $100’000.

I didn’t really have the money for a bootcamp, as the ones I looked at costed around $10’000 in tuition and were all almost exclusively in high cost of life areas such as New York and Los Angeles. But as it turns out, one doesn’t need to attend university or bootcamps to get a job in the industry, and I already knew that because I knew quite a lot of software developers didn’t have a degree.

Since I already had the credential of holding a degree, I chose to go the self-taught route and study at my own pace during my spare time.

 

“The research part”

The first part was making sure I wasn’t wasting my time, as my goal was quite clearly to get a foot in the door as a software developer. I spent weeks researching and reading up on the industry and its various entry paths. Luckily, if one wants a career in programming, there are many ways to get one’s foot in the door.

At the time, React existed but was not as widely adopted as it is today. Ruby on Rails was popular but starting to fade. And the MEAN stack was growing in popularity, the Angular ecosystem in particular was revolutionizing frontend development.

The learning plan I came up with included revisiting some important CS fundamentals including Operating System, Networking, Data Structure and Algorithms. And also becoming familiar with the MEAN stack by building a high quality portfolio of one or two polished applications. I still believe that one really good application with interesting design and implementation decisions is going to be more impressive, and a better talking piece during interviews, than building many lesser quality apps.

 

“The learning part”

I learnt from any resource I could find. Of which there are many. My focus was mainly on online courses, tutorials and books.

Keeping my time expectations in check that was by far the hardest aspect of this adventure for me. My mind was fixated on the smashing the “learning plan”, and I wanted it learn it all right there and then! Learning is painfully slow if one is too focused on the day to day progress, it’s much better to take a look at one’s progress after a couple months of learning, because learning takes times.

From my experience and from the others testimonies that I have read, it can take anywhere from 3 to 24 months of learning to land a coding job as a self-taught developer – depending on prior experience and location. I still feel like 12-24 months is the most reasonable target one should set himself: plenty of time to learn things in detail while not going overboard.

One of the pitfalls of learning can be that beyond two years it becomes easy to not be able to see the forest for the trees. There is no end to the amount that you can learn about and you need a cutoff point or will you get lost, and you will lose sight out your outcomes. That is why your learning plan is important: it should clearly set out your goals.

Be careful of “goal creep” however. Goal creep is adding more goals to your original plan that might not add that much value.

It took me 2 years all in all or around 2000 hours. Despite my prior knowledge and degree, it took so long because I wanted to feel very comfortable in my new trade before getting a job and actually be able to make meaningful contributions to my team rather than having to struggle at the beginning.

 

The Portfolio”

Simply put, you are probably not going to find a job doing something you cannot demonstrate you are already capable of doing.

I made a first good polished application, my Kanban app. Kanbans are a type of time management tool, invented by Japanese car manufacturer Toyota to keep track of the various stages of their projects. If you want to know what a Kanban looks like check out Trello, my app was an almost identical clone that had a “The Simpsons” themed to it.

I also had a second polished application. I made a lightweight version of AngularJS. It is still to this day one of my proudest realizations, and it took 3 months of full time devotion to complete. This is the project that really made me into a better programmer simply because popular open source projects tend to be incredibly well engineered and one because there is a lot to learn from studying and contributing to them.

 

“Outcome”

Because I had a solid learning plan, didn’t try to take shortcuts in learning and didn’t add more goals, I was able to accomplish my goal in the time I had forecasting.

My junior-level portfolio was excellent and once I was ready to start searching, it was the easiest time I had ever had finding a job. All sorts of interesting opportunities came my way.

This experience has perhaps more importantly given me the skills and methodology needed to keep on self-learning throughout my career. It was a huge undertaking and has made me noticeably more confident in myself.

I eventually decided on taking up an Full Stack Developer internship position at TransferWise in Tallinn. After which I had the option to work at the Quebecer startup studio Maple Inside where I currently work as a Full Stack Developer on an ongoing basis.