Tuesday, June 19, 2012

Code Academy - So, what now?

I am sitting here scratching my head wondering where the past eleven weeks went.  I can't believe this spring quarter of Code Academy is over already.  It seems like yesterday that I was banging my head against the desk as I was trying to figure out a ruby problem given as homework.  Code Academy has been an unbelievable experience, and I would suggest it for anyone who has struggled to learn how to code on their own.  Here are a few things I walk away from this experience with:
  • Programming is a lot easier to learn when you have a teacher like Jeff.
  • The best practice is muscle memory.  Anytime I did not practice what we learned I usually forgot it by the next week.  Anything I practiced 2-3 times was ingrained my my mind and i never hard to look back a notes.
  • Learning how to 'learn' is as important as learning how to program. 
  • Pair programming is much more important then I ever thought when I cam in on day one.  I learned a lot by working with different people each day / week.
  • The Chicago development community is second to none when it comes to helping people out that are learning. 
  • Passion and persistence can take you further than you expect.
After wrapping up the classroom portion of CA, I participated in my first ever hackathon that was not associated with Code Academy.  The Hackatrain was a unique experience.  While riding the brown line around Chicago, I worked hard at creating something new.  I decided to test myself and see what I was really able to build in 6-7 hours.  My goal was to build a music app that allowed users to upload a MP3.  It would be loaded into a community playlist, and the user could not upload another MP3 until their original one received at least 3 "hell yeah" votes.  If their song ended up getting more than 3 "totally bunk" votes, then it would be removed from the playlist and they could try again.  The goal was to have a streaming playlist my friends and I could use to share new music with each other.  By the time it was ready to present I had created an app that allowed users to sign up, sign in, and upload music to an Amazon S3 bucket.  The music that was uploaded was listed on the main page and a user could select a song and listen to it.  I had to use a backup plan for managing the uploads and it made it a bit hard for me to complete the voting system in time.  It is not the cleanest code, but I walked away with a smile on my face and I did not feel ashamed one bit when showing other more experienced developers what I was able to accomplish.

So, what now?  That is a great question, and I really do not know the answer.  I am still passionate about getting Reading Glue launched.  I submitted an application for the Lean Startup Challenge, and hope to get accepted.  Regardless of the challenge, I will be working hard to prove or disprove the business idea.  At least I now know that I have the skill set to build most ideas that come to mind.  I was also asked to mentor for the summer quarter.  I am really excited to share what I have learned, and I think this will be a great way to stay on my toes.  Something else interesting also came up this week.  I have an interview on Thursday with a local startup for a junior developer position.  When I started this program 11 weeks ago, I had no intentions of making a career change as a software developer.  I slowly fell in love with development, and I am really excited to be seeking opportunities to continue my learning of this craft.

Sunday, June 3, 2012

Code Academy Week 8: Not Just About Coding

On Tuesday I pair programmed with Brian from the M/W/F class.  Before we got down reviewing my code together, we decided to head to Chipotle and grab a bite to eat.  While eating we discussed our backgrounds and what brought us to Code Academy.  We dove into a great conversation about how Code Academy is not just a game changer in our lives, but how Code Academy is part of a much larger disrupt that is taking over education in our society.  I decided to take a little different direction with this week's post, and share my personal opinions on this subject.

We are told from the time we are in high school (and in many cases earlier in life) that in order to be successful you need to go to college.  Is this really true?  It has become normal in our society to pass judgement on a person based on their academic accomplishments or lack there of.  My favorite are companies that have a hard line rule about even interviewing a person that does not have a required degree.  Our society is so caught up in college and degrees that we are forgetting that there are multiple paths to finding success in life, and not all of the paths include getting a college diploma.

Do you know a person that has gone to college and later changed their degree several times before finally finding what they like?  How much of the current college debt is attributed to students not knowing what they want to do?  How many people have graduated from college and are now working in a field that has nothing to do with their degree?  I am confident you know someone that falls into one of these scenarios.  We will all continue to know someone who falls into one of those scenarios if we as a society do not change our mindsets.  Going to college is not the only way to be successful.  Not all students are ready for college right after high school. Once we become more accepting of these facts in our society, I think we will open the door for people to do some amazing things.

To be honest, this subject is very personal for me.  I do not hold a college degree.  I have been judged by others when they find this out.  Too many, it does not matter that I dedicated 4 years of my life as an apprentice in the tool and die trade.  I am a journeyman tool maker.  I started off my life becoming a craftsman who mastered the skills needed to build complex tools.  This includes understanding engineering, design, machining, and in some cases a little bit of black magic to get everything to work.  There is no four year degree (or even masters program) that can give you this type of experience.  I loved my time as a tool and die maker.  After completing my apprenticeship, I left to go to college.  Why?  Because that is what I was supposed to do if I wanted to be a success in the eyes of society.  For the most part I found college boring.  My favorite classes were those that involved labs.  Building and experimenting are my favorite ways to learn.  After two years, I decided college was not for me.  I took an engineering job that seemed to compliment my college and tooling experience.

Thirteen years later I have realized the mistake I made by bending to society's opinions.  I recently realized that one of the reasons I like coding so much is that it is so similar to the tool and die trade I fell in love with as a teenager.  As a tool and die maker we were given a rough tool design to work with.  I would then need to figure out the detailed design of tooling components I was going to build.  This is much like being given a set of user stories, and trying to architect how your software is going to be built.  In tool and die I would start machining parts by lathe, mill, and surface grinder.  Many people know how to run these machines, but only a true craftsman can make art from these machines.  My experience working with some great programmers over the past 8 weeks has shown me the same thing is true when it comes to writing code.  After building a tool you must have a trial and make sure your tool is producing parts that are in spec.  It is important to make sure the tool is running smoothly and does not have maintenance issues.  To the outsider this seems to be the easiest part of the tool and die process.  In fact, it is actually very hard for your common die maker.  One thing I have observed is that some of the greatest craftsman I worked with never spent much time with this process.  They mastered the "black magic" by planning for these issues when they were building the tool.  The same can be said in software development through means of agile and test driven development.

I could go on for days listing how my experiences of tool and die and software development are similar.  I would have never found this out had I not enrolled in Code Academy.  I was able to know in the first 4 weeks if software development was something that fit me or not.  I am not only learning about software development, but I am also learning how to learn.  This is something that is not taught in colleges.  It is my opinion that this type of education setup is going to be critical if we want to try and better our society in the future.  We need to quit pushing college as the only option for a person to find success in life.  In a recent controversial interview on 60 Minutes, Peter Thiel said "We have a society where successful people are encouraged to go to college,  but it is a mistake to think that college is what makes people successful."  If anyone has made it to the end of this blog post, then I beg you to please remember that quote.  Remember that quote the next time you make the assumption that someone is successful because of their degrees.  Remember that quote the next time you meet someone who doesn't have a degree.  Remember that quote the day your child questions the need to go to college or not.