Sunday, September 25, 2016

I just scribbled off 'intern' from my name tag!

Yes the title of this post is full of braggadocio, but come on! It's been a long year. It feels good to have made it this far. Before I started writing this post, I read back through all of the previous posts, and it's amazing.

I'd be lying if I said that I 100% believed that I could get hired as a developer within a year. A big part of me wanted to believe it, and that was a huge motivating factor during the countless late nights, and missed social and family events.

Was it worth it? Yes!

I get up every day, excited for the next challenge. I tell my daughter that I get to play on the computer all day which, to me, is pretty accurate. I mean seriously, I solve puzzles all day, and I get paid to do it. So what are we going to talk about now? I haven't figured that out yet. But I know that writing my thoughts out, and sharing my journey with those of you that took the time to read this blog, has been a revelation.

So I've got some ideas. Not sure yet where this is going to go. But I do know that I want it to be purposeful. If I write something that is of no use to anyone else, then I can just write it down in my Moleskine.

Even now, though, I am running out of words. I don't want this to be the end, and now that I have proven to myself that I am capable of the follow through, I know it doesn't have to be...

Friday, April 29, 2016

Living Proof

I am currently a full-stack, Ruby on Rails, intern. 10 whole months have passed since I started learning to program. Three years ago, I was jobless, friendless, dreamless, hopeless, and at times, even homeless.

I meandered through time and space well into my 20’s while all of the characteristics of becoming an adult completely eluded me. I could not figure out this thing called life. Growing up, I was afforded every opportunity imaginable. Classified as "Gifted" early on in grade school, the world was my oyster. The only thing standing in my way was, well, me. 

Knowing I was my own damn kryptonite, and constantly being told by everyone I came across that I had "so much potential," I continued to stumble. I didn't know how to deal. I had not been given the secret book that people get when they are born that teaches them how to live in this world.

Having managed to make it out of high school alive, I figured that I would start to get it right. Now I was an adult. Not so. Things went downhill soon after graduation. I failed out of college within the first year. I made a few attempts to go back, but I never was able to give it a real chance.

So, there I was: 25, nothing accomplished of note and no prospects. I remember sitting in my bed late at night thinking, "this is it, huh?" I was living alone in the house I grew up in. The rest of my family had moved on. This was perfectly ironic: I was unable to move on from my childhood, while everyone else had since gone. There I was, left to myself and my own thoughts.

I reached a point where I couldn't do it any more. I’d become the master of burning things to the ground. All within a few months time, I ruined a long term relationship with a woman who truly cared about me. I’d managed to get myself fired from a seemingly endless number of jobs. I lost the freedom of being legally able to drive, as well as the financial means to own a car. In a moment of desperation, I asked for help. I had absolutely zero options. So I called my mom and sister.

The details of what followed are too long to share here, but know that I have come from a dark place. Now surrounded by light, as the result of a lot of hard work, my outlook is vastly improved over those days. I started to put my life back together, piece by piece. Bit by bit. I stumbled along the way, many times, but I kept moving forward, regardless.

To say things are different now would be a gross understatement. Not only am I able to function as a member of society, but I am excelling in many areas of my life. After a couple of years finding my footing, the one thing I still hadn't found was a career. I have many interests, and I am constantly chasing knowledge, but I hadn't really focused on any one thing in order to progress enough make something of it.

Around this time last year, I sort of stumbled into computer programming and software development. It made sense, as I have always enjoyed problem solving and math. What started as a spark that peaked my interest, quickly became a raging inferno of desire and determination to become a professional software developer.

There have been countless late nights, some turning into early mornings, nose buried deep into a book or computer screen. Many sacrifices were made, with the hope that it would all pay off in the end. And it has started to pay off already. I have landed several freelance projects, getting paid to develop websites. I currently work as a developer at an internship, and have an interview coming up in a couple of weeks for a paid position.

While I am not there yet, I can taste the finish line. I say this, knowing that if I truly want master this skill, then I must keep in mind that there is no finish line. This is the kind of trade that requires constant learning and continuing education.

In many ways, the fact that I will never be "done" is what attracts me the most. It goes against everything I used to want, which is the absolute best thing for me. I am sharing this because I know now that I am not the only person that has struggled. I used to think that no one knew how I felt, no one could understand me. Now that I see how wrong I was, I hope that no one has to feel that way. It is never, ever, ever too late. 

I am living proof.

Tuesday, March 29, 2016

My two cents

We have all been there: new to a trade or starting to learn a skill with no prior knowledge. So what does it take to get from complete newbie to master of your craft?

I don't know much about being the master of any craft, but each day I separate myself from the version of me that had no idea how to write code. And 9 months in, the path to becoming a professional developer is clearer than ever. This post is going to explain some of the things I have learned along the way, with some examples of moves I have made that ended up being in my favor. While my interests and skill set have lead me into the world of computer programming, I believe that most of these methods can be applied to any new skill or trade. 

The first, and most important, thing I did was start DOING. I started out by scouring the web for hours on end, trying to figure out the best way to become a software developer. With the massive amount of information available to us today, I found that it was easy to simply stay on this step forever. I could search up and down and never find two strategies that were exactly the same. This is where I got my first break, as my brother-in-law is a (successful) developer, so I asked him where start. I probably should have done this first, but anyway.

Once I got started, I quickly found that this overwhelming amount of information exists for almost any topic imaginable, and especially when it comes to programming. It was important for me to develop a rough outline of what I wanted to accomplish. By starting out with a goal, I could then fill in the means to that end with some clarity. Again, having someone in my life that had what I wanted, and had been through what I was about to go through was priceless.

So, now I have this course of action to follow, or at least a very rough outline. The next thing that I benefited from was figuring out how I would spend my time doing this. I have a family, work full time, participate in some social groups regularly, and so on. Time management. I have never been very organized, but since I was already about to start this radical new journey, I might as well throw in some basic life skills as well. Learning how to budget my time has completely changed my life. I essentially treat the hours in a day like money in the bank. It will forever be a work in progress, but working at it consistently has served me well. 

Most of the time, learning a completely new skill involves much more than focusing on one thing. Learning to code is much more than simply learning a programming language. You have to know your way around a computer, familiarize yourself with the command line (that screen you see on a hacker's computer in the movies), learn more effective ways to search the web for answers, etc, etc. Also, learning to think like a computer scientist is crucial. What I am getting at is that there are all sorts of ancillary skills needed in order to do this. It's not good enough to just know a little bit, because these skills are the foundation for every project you will ever build, so to have a chance to excel as a developer, you have to pay attention to the little things -to be able to see the forest for the trees. (Side note: Ever since I learned what that idiom means, I have wanted to use it properly in a sentence. I believe I just have!) 

Recently, I started getting involved in the programming community. If you know me well, you probably know why it took me so long to do this. But this is important. Having all the talent in the world means zilch if no one knows about it. I found local meet-ups, discussions, and events where like minded people get together to talk about their craft. I know this sort of thing happens in every industry, and its a great thing to be a part of. I went to a career fair the other day. I went around to every both asking employers what specialties they were looking for. So now, I know exactly what I need to be working on. My rough outline has now become a well-revised blueprint. 

I like to save the best for last, so here it is. The most important advice I could give anyone would be to build relationships. Start early, and work at it often. Every single milestone I have reached was because of a relationship I had with another human being. Whether it was my brother-in-law, or a friend-who-know-a-guy. I would not be where I am today without the help of others.

 A good friend shared an idea with me recently that I want to share now. 

"We create possibilities for ourselves, but it is other's who create opportunities for us.

Tuesday, March 15, 2016

Working Title / Under Construction (So Many Puns!)

It's now been two weeks since I started working on a real life application. I have been thinking about that first "hello world!" program I wrote 8 months ago. Now I am submitting code to a company's most prized possession. Extremely intimidating is the phrase that comes to mind.

So I show up to work the first day, not scared, but anxious. I spent the first day setting up my work environment and getting acquainted. Once all that was finished, it was time to get into the code. Turns out I know much less than I can even imagine.

I spent countless hours over many months learning to code by following along The Odin Project -as well as a few tutorials not on their curriculum- and I can tell you that nothing compares to a real project. There are no tutorials that I know of that cover all the information and sheer scope of a real world application. There are so many intricacies, personal styles of the people that have committed code to the repository, and variances in the overall "way we do things."

The first task I was given was to write up an email template. Sounds easy enough: use some HTML and inline styling to take the designer's mockup and turn into a usable product. It turns out that nothing is as easy as it sounds, and it took me a week to get it done (actually it still isn't 100%). I can tell you that in all my studying it was never suggested that I work on my email technique. But that's just the way it is, and there is absolutely no substitute for work experience.

With that said, I feel like an internship is the best situation for me. While I've definitely suffered from "imposter's syndrome"  a few times already, I don't have the added stress of feeling the need to perform for a paycheck. Since I was upfront and honest about where I was at in my understanding of computer programming, I can take a step back and understand that while I may not have completely understood what I was signing up for, my mentor surely did.

This is not to say that I can just sit back and relax, or that I feel no pressure to level up quickly; I need to keep doing what I have been for the passed several months. Whatever task is sent my way, I will give it every ounce of energy I can, with the understanding that I will never know all there is to know about anything.

After two weeks of working here, I still believe 100% that I am exactly where I'm supposed to be, and that this path lies before me is the correct one to be traversing.

Wednesday, March 2, 2016

Will work for knowledge.

Man, life is good! Through a series of extremely fortunate events, I landed an internship at a real company, working on real software. Not only will I be working on a legit application, but I get real world work experience, deadlines and all. It was only 8 months ago that I wrote my first 'Hello, world!' program, not knowing the first thing about computer programming. I think its worth explaining how this opportunity came about.

When I first started learning to code, I was constantly searching the web for things like "How to learn computer programming" or "Learn software development," and things like that. In addition to all the code bootcamps and online schools, tutorials, and curricula (did you know that is the plural form of curriculum? Neither did I!) I found a blog written by Joshua Kemp. This guy taught himself to code and laid out a clear cut path for wannabes like myself. His story is also very cool, and is worth checking out.

Well, I ended up reading every single post of his from beginning to end - over three years of posts. In his first post, he basically said that he was starting a blog to keep himself accountable. I thought that was a great idea and decided to do the same. I have not blogged anywhere near as consistent as he, but I did blog nonetheless.

In addition to putting myself out there and keeping me accountable, this tactic also made it known to my friends and family that I was pursuing this goal. Fast forward to a couple of weeks ago, I had just finished an RoR app by following along Michael Hartl's Rails Tutorial and promptly posted a link to it on Facebook. A friend of mine came across it around the same time that the CTO of his company mentioned that he was looking for an apprentice. He put us in touch and the rest is history.

I didn't even mention the best part: the guy I am working under is a bonafide computer scientist. I personally believe he is a genius. Not only is he knowledgable, but he is also patient and willing to help me out with whatever I don't understand (which quite frankly is a large amount). The company is established enough that there is tons of work to do, yet small enough that I will be able to have direct access to my mentor day in and day out. At this point in my coding career, I have to believe this is the absolute best thing that could have happened for me.

As the title of this post implies, this is an unpaid internship. I have to say, I still think I am getting the better end of the deal on this one. No amount of tutorials or books or videos can beat working on a real project with a willing and able teacher/mentor.

A lot of things had to happen for this scenario to take place, and I have worked very hard for the last several months. But that work is already starting to pay off. I have finally found a career I can honestly say I love. My wish is that everyone I know finds the same, as there is nothing like the feeling that you found your calling.

I will continue to write about this miraculous journey, with the hopes that someone, somewhere is inspired to chase down their dreams. So here is to the future, and especially to the now!

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...