My first #100DaysOfCode
What I learnt, the resources I used and why I will be doing it again.
On January first this year like many I set myself a resolve to code every day. I hoped this would help push me with learning programming and keep me motivated. To hold myself accountable I chose to do this with the#100DaysOfCode challenge. The principle is that you code for at least an hour each day for 100 continuous days and log your progress. The challenge aims to create a community where you feel supported and encouraged, tweeting help or advice to other members , all through the hashtag #100DaysOfCode. Various Twitter Bots also reweet the hashed Tweets spreading and amplifying the communication.
As I was already coding almost every day I felt the challenge would be achievable and a good way to document my progress. Monday to Friday I was attending a Web development course at Indisoft focused on PHP and JavaScript. Through it I made three web applications. Alongside this I was already part way through Andrew Ng’s Machine learning course on Coursera. I also had started to attend Meetups in particular PyLadies Berlin, which I later joined as an organiser, and Women Who Go. Additionally to these activities I completed a weekend workshop on the IoT using MicroPython’s Pyboard and joined the open source project Nextcloud as part of my application for the RGSoC 2018 scholarship.
From this you maybe get the idea I spread myself a little thin, however since leaving my job last year I am fully committed 24/7 (well…just about) to learning to programme and getting into the Tech industry. I’m very keen to work within the Data Science and Machine learning field however initially I was not completely sure with which language I wanted to begin with. I hoped through exploration I would be able to find the area and language/frameworks I liked best. I have learnt alot both technically and about my own preferences and I am now a lot closer to my goal of working in tech. Below I outline what I have learnt from the experience, the resources I used, and my plans for my second round of #100DaysOfCode!
Documenting your progress every day is time consuming….
Alongside tweeting each day I tried to be dutiful in filling out the #100DaysOfCode log on Github. (You can check out my log here.) I also wanted to journal more of my experience and aimed to make regular posts to my wordpress account, though I stopped doing this rather quickly. I was enjoying the coding but ended resenting how much time the documentation was taking. I also forgot a few days of tweeting and felt myself being very repetitive to the point where I didn’t feel the merit in posting. In the end I decided coding was more important to me and did my best to keep up the log and twitter but didn’t beat myself up when I missed one or two days. For the log I often went back and filled this in at the end of the week. I noticed I was not the only one, plenty of people were tweeting that they had forgotten to post. While I appreciated the accountability the log gave me, it was clear I made the right choice to focus on the actual coding. Having said that I will try keep up my log in round two and aim to commit more articles surrounding my projects and experience when I have something meaningful to say.
… and it can get very repetitive….
As I had a bundle of projects I was working on the first few weeks I always felt I had something new to tweet but as time went on I felt my tweets were getting repetitive. In the end I decided to stop tweeting my progress and instead commit to tweeting a resource or article each day. This way I hoped the content would be more interesting for my fellow coders and also for myself. It also has provided a handy log for finding different resources I have used throughout the 100 Days.
It feels like everyone is advancing quicker than you are…
This is perhaps the only downsides of this project, while mostly I felt uplifted and motivated at other times I felt utter despair reading tweets from others and comparing them to the progress I was making. My goal hasn’t really been to get a job as quick as possible, however seeing many people post that they had become a paid developer after a few short months made me question the path I was taking. Of course on the flip side it has been really rewarding seeing familiar names pop up and is one of the biggest benefits of taking part in the challenge. I have also seen a lot of support from people when people have posted their worries or lack of motivation and also partaken in this myself.
At the end of the day you have to focus on your own progress and not let yourself get overwhelmed. With the tech industry growing at such a big rate there is plenty of space for all those making the move of to programming as well as many more to find positions in their respective fields of interest. Looking back and seeing how my work has progressed was definitely a big support at any times I felt disheartened.
Resources:
Scheduling my time with google calendar goals…
To keep myself on track to achieving the goals I had set myself I used google calendar goals feature which allows you to choose weekly or daily time blocks (for instance an hour/ 2 hours) for a certain activity, it then searches your calendar and finds a free slot (you can also preference the time of day for the activity). These can easily be moved around after being created and as you do so google learns when the best slot for the different activities is. You can also set reminders and tick off an activity once it has been done. An example for myself was to practice on codewars.com four times a week ideally in the morning for an hour.
Bookmarking resources in google chrome…
I happen to use chrome as it connects with my google account but using the bookmarks on any browser I found is a really efficient way to categorize resources. I split mine by language and also whether they were a course or an article. This helped me efficiently find them when I wanted to go back to them and also easily share them with others (you can export the bookmarks into a html file with clickable links)
Organising email subscriptions…
As part of exploring various resources I signed up to a number of email subscriptions that send tips, advice, short tutorials or updates. I also labelled this and put them in different folders for quick reference. This is also possible to automate through gmail, and I imagine a number of other email clients I just happen to use gmail.
Over the 100 Days I found numerous tutorials, practice sandboxes, articles and online services. Far too many in fact to list here, I have therefore decided to make a curated list of those I found most useful. The below cover my interests in both Web development using PHP & JavaScript, Data Science and Machine learning with emphasis on Python, SQL and also a little GoLang.
Podcasts
- Syntax — web development podcast mainly orientated around JavaScript with Wes Bos and Scott Tolinski
- Learn to Code with me — Laurence Bradford interviews different tech professionals finding out how they got into the industry and offering tips for listeners.
- Machine Learning Guide — @lefnire constructs a syllabus for learning Machine learning with basic principles explained and a huge list of resources.
Books
- Weapons of Math Destruction — Cathy puts out a good argument for why we must be careful with the algorithms we deploy into the world.
- JavaScript von Kopf bis Fuss — I used this version in German, though it also available in English. If you like amore comic approach to learning this book series is a good laugh.
- Einsteigh in PHP7 and MySQL (German) really well laid out and up to date book with good examples.
Email subscriptions
- Learn D3.js in 5 Days — Ben Clinkinbeard offers a great email course which spans 5 days but you also continue to recieve tips and news afterwards.
- Data Elixir — a weekly newsletter of curated data science news and resources from around the web.
Online Schools
- Codeacademy — quite frankly the best starting point for anyone wanting to learn to code.
- Flat Iron Bootcamp — really great format because you work within their test enviroment, getting you comfortable with using a IDE and working with Tests. They also have a great online community.
- PluralSight — they offer a free trial but afterwards you need a paid subscription, however the content is worth it. Codeschool have also joined forces with PluralSight now.
- Node School — bite size lessons that you run through the command line.
- Freecodecamp — a little slow at first if you have started the above, but they have a great community and challenges to test your skills.
Specific Tutorials
- Machine Learning with Andrew Ng by Coursera — great course for getting to grips with Machine Learning, quite involved so make sure you set plenty of time aside but it is well worth persevering.
- 30Days of JavaScript by WesBos — fantastic course for JavaScript once you have some of the basics under your belt. The course contains 30 projects to complete over 30 days ( or at your pace).
- Einfuhrung in Go (German) — teacher Andreas gives detailed explanation and examples for all you need to know to get started with Golang.
- Automate the Boring Stuff with Python — Al has great humour and the pace and detail of the course are spot on, absolute best Python course I have taken yet!
- Practical PHP — Brad is a very engaging instructor, however I mainly looked at the code examples to apply them to my own projects.
Practice makes perfect
- Codewars.com — train your coding skills
- PyBites — hone your python skills
Moving forwards — round 2….
I completed my first round while attending the Nextcloud Hackweek which I got involved in through my application for RGSoC ( I will be posting another article about that experience and will link it here.) I then took a short break to organise myself and continue with the application process for RGSoC, I’m extremely happy to say we were successful in our application and as part of my next round I will be working on Nextcloud as a official Rails Girl Summer Of Code participant.
I have also been accepted into the Bertelsmann and Udacity Data Science Scholarship Program, 15000 people worldwide were awarded places on the challenge which last three months. At the end 1500 will be offered Udacity Nanodegree places, so fingers crossed I am successful.
Alongside those the two scholarships I plan to focus more on Python with a view on Machine Learning and Data Science, including taking some course on the maths which form its foundation. I will continue to tweet progress where it feels meaningful and post articles/resources. I also aim to manage more writing regarding my experiences of the two scholarships and also my progress in general.
The support, community and motivation from #100DaysOfCode has really spurred me on and I am excited to see where the next round leads me! You can follow my progress on twitter @sleepypioneer and through my github account also @sleepypioneer
I'm inspired
Nice ... keep it up