How much can you really learn in a year of part-time programming of machine learning algorithms?
The journey to master machine learning algorithms is not for the faint of heart. I took up this mission a year ago.
I had no experience in programming but despite this, I truly believed that I would be able to if not master, at least get to the level where I was able to run the tests I wanted.
Some of you may know that I set out on this journey to write a book using machine learning to predict success in different areas.
What I will say is that I have not yet started to write that book.
One day I will write that book.…
However, to date, I have found myself engrossed in the world of programmers. I have found comfort in an unexpected and inspiring community of talented individuals.
Unlike a year ago, I now feel comfortable interacting as me in this world. I have met many people and learned even more than I could have anticipated in the world of programmers.
In addition to this, I have actually managed to learn a thing or two about both programming and blogging.
Today I am taking a look back over this last year to review what I have achieved, what went well and what I would do differently next time.
Let’s kick this off with everything I have learned about programming
1. The Journey of 1000 Miles Starts With The First Step
You just have to get started.
It’s as simple as that. You need to take the plunge and start learning.
There are a lot of different courses out there that you can try but don’t worry too much about which programming course you take.
The syllabus will be broadly the same whichever programming course you choose. Therefore, it is more important to find one that works well with your life and learning styles so that you can stick with it.
I chose the Udacity Introduction to Programming nanodegree. For me, this was a good choice as there were plenty of hands-on projects which helped me to solidify my learnings and become a more confident programmer.
To get started with machine learning I then went on to the Machine Learning A-Z course on Udemy. Again, this course suited me as it was a lot of practical tutorials.
The programming tutorials in the Udemy course were not as in-depth as those in the Udacity program. However, they were good enough to give me a broad understanding of how to code the different algorithms.
Initially, when I was trying to decide which course to take I was terrified of paying for the wrong one and regretting it. As I go through the journey to become a data scientist, however, I have realized that it is the projects you practice on after the courses that really teach you.
That being said, your best course of action is to choose a program that makes sense to you and teaches you the coding language you need. Once that’s done, the real work begins!
2. Stick with it – you can master this
Learning a programming language is hard. There will be days when you feel utterly defeated and you do not believe you will ever master it.
Don’t let this feeling stop you trying.
You have to persevere.
If there is some code that you just cannot work out, take a break. Go do something else for a while.
But then come back to it.
Don’t give up on it. Trust me, you’re going to feel amazing when you finally crack it!
3. Libraries are great, aren’t they?
When you’re looking to master machine learning, the day you discover the comprehensive algorithm libraries is a beautiful one.
One of the hurdles many people fear when they decide to start learning about machine learning is mathematics.
Whilst having a solid intuitive understanding of the processes being implemented by the algorithms is important, you no longer need to be able to code them.
Free libraries such as Scikit-Learn and TensorFlow make the process of implementing machine learning algorithms much simpler.
In many cases, you can run powerful experiments with just a few lines of code.
This ease of access is wonderful news for early experimenters with different techniques.
4. Get yourself a system
In programming, as in life, it is important to have systems that work for you.
I have found great comfort in designing different systems that allow me to run my experiments in a step by step process.
By organizing the process of launching and running different machine learning experiments into a process, I find them less overwhelming.
When you are able to break a data science experiment down into smaller steps it becomes easier to implement.
Especially when you are just getting started, it is important to ensure you are breaking your projects down into manageable steps.
As you become more experienced this will become second nature. Ultimately, you won’t have to think about how to set up your machine learning experiment but it’s good to follow a system initially.
5. Don’t be afraid to play around
One of the best ways to learn any programming language is by just playing around with different operations.
Don’t worry, you’re not going to break your computer!
You should enjoy looking up different solutions to problems you come across. There’s more than one way to skin a cat so they say!
When it comes to programming, there are multiple ways to get to the same output. Enjoy trying different options.
I challenge you to see if you can find the optimum operation that allows you to use the fewest lines of code.
One of the highlights of my first week of working on my own projects to practice was learning about different ways to encode categorical variables.
The machine learning course I took taught me to use a feature map and OneHotEncoder for encoding categorical variables. This encoding process was important as it allowed me to run experiments on data where one of the inputs was not numeric, i.e. Country.
When I was experimenting, I came across the get_dummies function. Using get_dummies I was able to do all of my encodings in one step, taking just one line of code.
Do some research and play around, see what useful functions you can find.
6. Sharing is Caring
Get used to sharing your code and putting it up on a platform like GitHub.
I know this sounds scary but it’s a great way to share your progress and get help.
This is one I have just started to do.
I’m not going to lie, as a beginner putting your code out into the world is an uncomfortable feeling. What if people criticize you? How will you rebuild your confidence to try again?
You need to remember that feedback is a gift, it will help you to ultimately become a better programmer.
Also, once you are more confident, you will be able to help others.
The other big benefit of sharing your code on GitHub (or similar), is that it becomes your public portfolio.
Having a portfolio of work will become important as you move towards getting paid for the programming work you do.
7. Write it down to process what you are learning
One of the biggest impacts on my ability to master different concepts in machine learning has been writing my blog.
Writing up what I am learning into a structured document has helped me to solidify my understanding.
The process of blogging about different machine learning techniques forces me to:
- Do additional research beyond the scope of a course to understand a topic
- Go through a tutorial multiple times to ensure I understand the content
- Practice implementing what I have learned soon after completion of the course
Furthermore, by writing it down in my own words, I find I am much more able to remember the content.
I strongly encourage you to consider keeping a blog or journal of your programming journey.
Take the notes you have written during your programming lessons and write them up into an article.
You will find you are able to quickly identify any areas you didn’t understand as well as solidifying the concepts taught.
Section 2: What I learned about Blogging!
Those were my seven big takeaways from learning python over the past year.
It seems fitting to conclude this section on what I learned about programming here before moving onto what blogging has taught me.
What I will say of my first year programming is you need to be having fun.
As I have become more confident with the python language I am enjoying experimenting with increasingly complex data.
You get used to interpreting people’s responses on StackOverflow. Then you are able to find the little hacks that reduce the amount of code you need to do. Finally, you become confident in trying out different things and when you get that traceback error – you know how to fix it!
The next set of learnings I am bucketing under the things I learned from blogging. In actual fact, everything I have listed here could be applied to your programming journey.
8. You’re on your own kid
This was the single biggest challenge I had to overcome in my first year of both programming and blogging.
Setting out on a mission that involves being self-taught, means that to some extent you are on your own.
If you, like me, are used to a more structured learning environment then this can come as quite a shock.
The only thing you can do is keep going. This need to push forward is a topic that has come up quite a lot in this reflective article.
You will come up against a lot of different challenges as you get more familiar with the technical side of blogging.
If you want to get ahead, I recommend checking out these two posts that can help you find the right way forward:
9. Learn to balance things out quickly
Another big challenge when you start up a new project is learning to balance your time.
I found this particularly tough when I started out.
At the beginning of a project, you have so much passion that you just want to keep going. This passion can mean that you forget to pay attention to other areas of your life or business.
It becomes important that you find a balance so that you are able to manage everything that is important to you.
Furthermore, you need to ensure that you are not stretching yourself to thin.
To help with this you can try batch working to maximize your productivity. In addition to this, you should make sure that you are tackling no more than 3 things each day that are the most impactful to your business or blog.
Combining these techniques will help you reduce overwhelm to balance out the work quickly.
10. Know who it is you are trying to reach
If you want your blog to be successful, you need to know who you are trying to reach.
Spend some time thinking about who it is you want to write for. This process will help you to attract more of the readers that enjoy your content as well as making sure you are only writing content in a way you enjoy.
11. Automate, automate, automate!
Automation is your best friend when you get into blogging.
You will find that there are many more things to do on your blog than expected.
Luckily, a lot of these tasks can be automated.
Get comfortable with processes and tools that allow you to automate.
Trust me you will not regret it!
This resource page gives some of the tools I use.
12. Live within your seasons
The final learning I will share with you is one that surprised me.
Furthermore, it is one I am still working on.
Don’t force yourself to push too hard. You will regret it and it will take the joy out of what you are doing.
Spend time getting to know yourself and optimizing for how you need to work.
One of the joys of a career in programming or blogging is the ability to work for yourself.
The drawback of this lifestyle is you need to get good at regulating yourself and keeping motivated.
If you are a person like me who struggles with different phases and mental health, it means you need to really understand when to tackle different tasks.
You are the person who knows yourself best.
You know when you work best, so optimize your schedule to take advantage of that.
Finally, don’t be afraid to put in boundaries. You need to make sure you’re not overworking yourself. Ensure you take days off and don’t work all hours.
If you’re too burned out to do anything, you will never grow.
What’s next for Artificially Intelligent Claire?
I have learned a lot over the last year but what comes next?
I have decided to take two big steps forward in the second half of 2019. The first is that I will be sharing my own projects more broadly.
I have set up a GitHub page with my code and I soon plan to also take on freelance projects.
Taking this step is moving from merely a learner, to actually use my new skills in different contexts.
Of course I will continue to learn.
However, I think it is important that if you put effort into learning a skill you want to use professionally, you take the plunge and start getting paid!
I encourage you to do the same! Trust me you’re ready/
The second big step is to monetize my blog. This I am doing more to show myself that the work I do on this blog is worthwhile.
Over the coming months, I will be launching a few different things on here that I know you are going to love. Watch this space!
But first, let me reveal the new logo (that’s right I have a logo – gotta be legit now!)
What do you think? Let me know in the comments.