Tuesday, February 2, 2016

Finish line on the horizon

It's coming up on 7 months since my first post, which means its been almost 7 months since I started learning to code. I can feel the progress. My brain functions differently now. I can almost feel it processing things and I am more aware of every step I take.

While I didn't necessarily meet my goal of blogging consistently, I have kept up with the more important aspect of the goals I initially outlined by burning the midnight oil on the computer regularly.

Many adjustments have been made in order to keep up a fast pace. Recently I began training myself to function on 6 hours of sleep nightly. I figured that I could squeeze in at least 2 extra hours on the computer nightly by sleeping less. It's working so far.

This week Salem and I finished up the second set of problems for CS50. Man, I have a lot of respect for anyone that can succeed at Harvard. This is an entry level course and the second week's problem sets are already very intense. Luckily I have a bit of background knowledge, so the material isn't completely foreign to me. It is difficult though, and having someone to collaborate with helps tremendously.

In addition to CS50, I am finishing up a tutorial on Rails that has me building a Twitter-clone. It's my first Rails project from scratch, and the building blocks for the Craigslist-style website I will be making for a friend.

Having several projects underway at all times gives me plenty of things to do on any given night, as well as keep things interesting. Sometimes that's all it takes when I'm having one of those days and just want to lay around and watch TV.

This is an opportunity to drastically change my life for the better, and all I have to do is keep striving for the finish line... One late night at a time.


Friday, January 22, 2016

So close, yet so far away.

Any time you take on a new hobby or start to learn a new subject, there comes a point where the shininess wears off, the allure starts to fade, and it becomes work.

That's how programming has been for me, honestly. At first everything was awesome. Each and every little "intro" tutorial would yield a small but huge success, and the vast amount of knowledge available was awe-inspiring. I wouldn't hesitate to show off my simple programs (Hello World, anyone?!?!) and revel in my awesomeness.

But after a few months of continuous study, fun time is over, and the real work begins. You get to the intermediate tutorials (good ones are relatively more difficult to find, I might add) and now you are looking at weeks of work. No more freshly finished programs every hour or so, we are talking days and weeks! This is where I start to lose interest. The instant gratification is waning, the results appear to be slowing; the fun is gone. So I stop. I find something new, or just do nothing new for a while. 

If you know what I am talking about, then you know how it feels looking back on all the times this has happened, and seeing a bunch of unfinished dreams and ideas that were never realized. I started to believe that this was just the way things were, and the way they were gonna be for me. 

All it takes is grit. 

See, I have been learning how to code for almost 6 months now. I am well into the "work" stage, and I haven't given up. It's hard! Every day I make what feels like inches of progress. That tutorial I am working on: 8 days in, averaging 5 hours a day of work. Not even half-way finished. But I know that the end product is going to be exponentially more gratifying than those initial programs. 

What's more, just the fact that I can say that I am still at it feels amazing. Knowing that I am pushing myself further than I can ever remember in the past, and that there is something waiting for me on the other side of all of this: a career.

This is about more than learning a skill to better myself, this is about bettering myself by doing things differently than I always have. 

Back to work!






Thursday, January 14, 2016

What are we going to do today, Brain?

Things are getting real. I mean literally: I am building my first Ruby on Rails (RoR) app. Ok, it's just a sample app, made by following along Michael Hartl's Rails Tutorial. It is a simple Twitter clone, but it's a real app nonetheless.

This tutorial takes you from a blank slate, all the way to deploying a finished, working product. It teaches test-driven-development, version control with git, setting up a development environment, Ruby, Rails, etc, etc. Every section of every chapter subtly reminds me of the massive amount of information I still have yet to learn. There are links to almost every topic that is covered that he expects someone like me to not understand. At first, this was a bit annoying and seemed cumbersome. Turns out I truly appreciate the thoroughness and consideration.

Aside from the tutorial, I am working on a couple of projects using WordPress. While these websites are relatively simple and I do not plan on mastering PHP, they are still great exercises in understanding file structure. Also, there is plenty of HMTL and CSS practice to be had. I am also making money while I learn to code, which is pretty sweet!

As if my plate was not overly full already, I finally found a fellow  programmer in training  who is willing to take Harvard's CS50 course on EDX with me. CS50 is an introduction to computer science course. I have to say this is extremely exciting because I believe that in order to ever be a great programmer, I need to learn the fundamentals of computer science. Ideally, I will get much further into this topic than just the fundamentals -but this is a good start, as far as I'm concerned.

I have been wanting to take this course for a while now, but after looking over the course syllabus and watching the first few lectures, I felt strongly (it is recommended) that two should play this game. Well, thank you Salem Hamidi! Turns out I went to high school and played baseball with him, and he is also an aspiring programmer. I won't put his life story on here, but props are due. Thank you sir!

If it seems like I have a lot going on, that's because I do. I also have a life to live, believe it or not. But right now becoming a software engineer is a high priority, and sacrifices have to be made sometimes. Until this point in my life, my priorities were all out of whack. Sometimes I feel like I wasted a lot of time and didn't think about my future enough. But then I remember: I actually thought about my future quite a bit, I just didn't do anything about it.

Today, me and my brain are working on a better future for the both of us.

Wednesday, January 6, 2016

This is my late New Year's post. I have a habit of getting things done late. Maybe I should make it one of my new year's resolutions to fix that. Maybe one should be to fix my grammar.

The truth is, there are so many things about me that I would like to "fix." There are so many, in fact, that to list them would turn this post into a sad diary entry. I have good news though: I am moving passed the HTML and CSS portion my programming adventure, and getting into the real stuff.

My next project is a Craigslist-type website, which I will be building using Ruby on Rails. Very Exciting! I also have a couple of smaller projects that I will be making using WordPress.

As I sit here, writing this post, I feel very determined. I sort of let myself slack off over the holidays. Even the short period of time away from the terminal has got me a little anxious. I know to never do that again. At least not for a while.

Time to set up my first RoR environment. Wish me luck...

Thursday, December 24, 2015

Squeeze every minute out of those 24 hours

Life is short, and days are shorter.

That's a good one. I may have come up with a proverb there. Maybe that will show up on one of those calendars with a daily motivational quote. Until then, how about I stop wasting time.

Currently I work full time, I have a family, I have certain social obligations, I am learning to code, and I need to eat and sleep daily. The thing that allows me to do all this is something I've never really had a good grasp on in the past: time management. It is quite simple when you put pen to paper. Just simply write out what you need to do. Next, prioritize those things. Finally, figure out an amount of time that is either required or that you hope to give to each thing.

I literally had to break everything down. I had to figure out how much of my time my job REALLY takes up. It isn't as simple as 40 hours a week. There is time spent getting ready, commuting, and so on. So when I applied this level of detail to everything on my list, I came up with a very clear plan. I also had to decide which of the things were not very important at this time in my life.

Now, my days have structure. I have a very good idea of where my time is being spent. Think of it like a budget, only the resource I am budgeting for is time instead of money. On a good day, I am about 90% in line with what I planned. But that's not all, as I've also definitively set priorities and distinguished the needs from the wants.

This is just one of the many changes I have made in my life these past few months. Ever since I decided that I wanted to learn how to code, each day has been a test. Each day that ends with a few more lines logged, is yet another day of proving to my self that I can and will do this. And yes, I had to actually prove it to myself. Any time I have had a new idea or found a new interest, it would just be a matter of time before I was on to the next. But not this time. This time I am for real.

One day I may be able to write well enough to get my thoughts and experiences down in a logical and entertaining format. One day I may be able to meditate for more than 45 seconds. One day I may even be able to run a full marathon. But one thing for sure is that one day I will be a paid software developer.

Thursday, November 19, 2015

Lift-off the Dock*

It's been too long. I am so bad at keeping up with this. So much has happened since the last post. I don't even know where to begin. But I can type almost as fast as I can think now, so I'm just gonna go with it. Stream of consciousness blogging. Is that a thing?

So, I have built a website. Not just one from The Odin Project. I wanted to put my newfound skills to real world use. I posted on Facebook that I was willing to build a website for a lucky someone. I believe I wrote about this in the last blog.

Anyway, I built the site: www.coilbutter.com. This was a fun project because I really like the e-liquid they make, so helping them get their name out there was fulfilling in itself, let alone the fact that I actually made the website. I used Word Press to make the site, which helped out a lot. It still took every bit of my limited knowledge to set up and customize the site. Man, I am only 4 months removed from not knowing a lick of HTML and CSS.

The great thing about learning programming is the instant gratification it gives me: I have a problem, I come up with a solution, I make it, problem solved. There are many missteps in between, but the end result is that a problem was solved. And the crazy part is that I haven't even got to the real programming yet. I just made a website. Not software or something that actually does anything.

But that all changed tonight. I have had this idea for a new way to shop for a certain product (sorry about the ambiguity there) and I am now in the process making it happen. I am lucky that I have someone to guide me along in this process, and I definitely recommend that anyone trying to learn a new skill find a mentor. Tonight we set up a virtual machine through Docker. It basically sets up a mini internet so that I can play around with the project I am building in real time. I wish I understood how it worked, and if you are curious, google it.

That brings me to something that has been on my mind all night. So many people have come before me and done some truly awesome things to make my life easier. I mean, aside from the fact that I don't have to hunt for my food or worry about dying from the water I drink. But these tools that are so freely available to me are remarkable. I hope that one day I can contribute something to this world that leaves a mark. It doesn't have to make me rich- it would be enough if it just made someone else's life easier.

I am sure there is plenty more that can be written to fill the gap between this post and the last, but for now, this will have to do.

Sunday, October 11, 2015

Finding a purpose

I have always learned best by doing. In elementary school they told me I am a kinesthetic learner. Turns out, that is a highly recommended way to learn to code: Do, break, fix, repeat! Match made in heaven.

Right now my schooling has me working on HTML, CSS, and Javascript. Unfortunately, I am fresh out of ideas for websites to build. So I posted on Facebook that I am willing to do some work for someone in need, and I ended up with a couple of projects to work on. This is exciting! Now I can use my time and energy on the code instead of spending it thinking of an idea or my own project.

While HTML, CSS, and Javascript are not languages I plan on mastering, they are an integral part of anything built online. What good is a piece of software nowadays if you don't have a website up to show it off to the world? So I am doing what needs to be done. The Odin Project -the online school I am using to learn code, and henceforth referred to as TOP- wants me to learn these languages, so I will learn them. Simple as that.

One thing I definitely want to point out is that there is no substitute for real world practice. I have completed every tutorial and read every word of every page that TOP has lead me toward, yet it took me almost 8 hours to set up my website on a server and to get it up and running. Nothing I previously learned had prepared me for that. I was constantly running into issues and had to search for answers. I am told this is also how a lot of work gets done by actual developers.

Either way, the payoff was well worth it, as usual. My website is up and everything is coming along smoothly. I am still enjoying every second, and I am learning so many things every day. This is something I can see myself doing for a very long time.

When I started out a few months ago, I honestly believed that it was too late. I thought I was too old, too far behind everyone else, and just had too much going on to dedicate the time to this. Now I realize what a terrible way that is to look at it. It's a terrible way to look at anything. I am a human, and that means I can do anything I set my mind to. Wasn't it the Egyptians who built those big buildings in the desert without machines? Yeah, I think I can figure this thing out. I just have to keep at it.