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!