Monday, April 17, 2017

Experience of #100DaysOfCode

I did a post at the beginning and now I am doing one at the end (I should have done in between, but I can't go back now) of 100 days of code. You think that 100 days is a long time, but it isn't even a third of the year and the time flew by! Some days coding was really difficult and I wasn't able to get a full hour of coding done while other days were much easier and I didn't feel that an hour of coding was enough (don't worry on those days I would spend more time coding). But do I feel that it was beneficial to take time out of each day to learn to code?

I often thought that it was too difficult to code everyday, after all, I do have things to do on the weekends, like go to a movie or something. Okay, honestly, I have a three year old and I can't tell you the last time I did that on a weekend. It still felt that coding everyday, including weekends was going to be too difficult, at first. I stuck to it and coded everyday (the 100 days of code does allow you to take a day off every now and again and I took advantage of that on a few occasions). I also felt that coding on Saturday and Sunday got easier as the end got closer, in fact I almost felt my day wasn't complete without doing some code for the day.

I also logged my progress every night in a log file on github and posted tweets to Twitter each night. Knowing that the people on Twitter would see my progress helped keep me motivated and a few times I actually got support from the Twitter community when I posted a question. This helped in knowing that, if I got stuck, there was someone out there in the Twitterverse that knows the answer and would be able to help. Keeping the log is very helpful and I will continue keeping some sort of log about my learning. Maybe I will keep the same format as the link above (that is what I used tonight) or maybe I will find something that will work better for me, only time will tell.

Did I learn anything while doing all this? The answer is yes, I did learn more then a few things. My first project was to learn how to build an API. I have a working API now, it is still on a local DB and hasn't been deployed, but it works! And I have made a number of Xamarin Cross-Platform apps using Xamarin.Forms, although I must admit, none of these were my own ideas and either came from Xamarin University, Pluralsight, or Udemy. Even though the mobile apps were not what I dreamed up, they did teach me so much about the different platforms available and XAML.

Why do these matter to me? The team I work on at work is over an API that was just released a few months ago. The team built it from ground up and I tested it. Often, the developers would talk about the context or the model or pretty much anything else and I was clueless. Now I hear what they are saying and am actually able to comprehend what it actually means. I have even fixed a few bugs on my own (I have been given the ability to do this, I didn't go rogue). It feels good to be able to pick up an item from our backlog and debug the issue AND actually find the root cause. Then when I send out that pull request, it feels good!

We have other tools at work that my team does not own. Some of those are written using XAML. Before 100 days of code I would have no idea how to debug anything in these products. In fact, I would avoid them at all cost, because I would not only waste my time looking for the issues, I would also waste another developers time having them walk me through the issue and how to fix it. Guess what! I have also been able to dive into these products and fix one bug in XAML code (we just got one product under our charter that is in XAML so I get the API and XAML now). This bug didn't require me going to another dev asking for hours of help to debug the issue.

Was it worth it? There is definitely something to coding every day. I was able to fix bugs before 100 days of code, but I didn't spend enough time learning for myself. 100 days of code made me think about a project or two of my own. These personal side projects kept me wanting to learn every day and kept my motivation high. The side benefits to my personal projects were that I learned better what my team and department do every day. So, yes I think it was worth coding every day for 100 days. Will I keep coding every day? I think that I will code a lot more often then I did before. I have formed new habits. I used to sit down and watch T.V. at night after everyone else had gone to bed. Now, I code. I enjoy the coding every night so much more then watching T.V. I think watching T.V. was a time filler for me. I wanted to learn how to code, but I didn't know where to start or what I should be doing. I had to actually think about what I was going to do and this was the best thing for me. I have a list of things that I need to do to continue learning to code and there is so much more to learn!

Would I do it again? That is the question. I do enjoy coding every night, but having to do it every night is rather difficult. Some nights you just don't want to do it and you have to tell yourself this is a pledge I made to myself and just do it. I may do it again in the future, we will see. For now, I will keep coding most nights and keep posting progress.

My Github Projects during 100 days of code:
100 days of code log
Xamarin Layouts
Xamarin "Essentials" Project
Movie API
Others at https://github.com/robertjorg/ (I know I need to clean them up, at least a little bit!)

Tell me and I forget. Teach me and I remember. Involve me and I learn. - Benjamin Franklin