15 Things I Learned at MakerSquare
1. Classmates are one of the most important parts of a learning experience.
At MakerSquare we pair-programmed 4 days per week. Before the class I thought that I was going to hate this process because I generally prefer to work independently, but I found that it greatly enhanced my learning experience. Problem-solving directly with another person opened my mind to new ways of addressing problems, and that increased perspective frequently led to better products, and made me a better problem-solver. It was also great to have a partner to help with simple questions I had as well as prevent me from making silly errors like typos and forgotten semi-colons that can frequently be extremely frustrating.
Pairing made me a better programmer, and it led to us producing better products, but it could have been a negative experience if I had a partner who was not diligent or focused. A bad partner could really slow me down and decrease my productivity and learning for an entire day or even week. This is why I think that the caliber of your classmates is an important consideration in a choosing a career accelerator, and why I think potential students should definitely consider selectivity rate when choosing a code school. Most of my classmates at MakerSquare were excellent developers, and avidly learning alongside me, I think they do a great job vetting students and have a fairly low percentage of accepted applicants.
2. Lots of web development!
Of course at MakerSquare I learned web development. I learned Ruby, JavaScript, Rails, Backbone, and HTML/CSS. In addition to learning how to work with those languages and frameworks I learned about a lot of technologies for more efficient development, such as Git and SASS, but also principles of software design, object oriented programming, and how to build more engaging web applications using tools like AJAX and public APIs. I learned an unbelievable amount in a short period of time, and I was constantly doing, putting into practice things I was learning and researching and improving at my own pace.
3. Rails can be confusing.
As a pretty literal and logical person, I found the "magic" of Rails a bit confusing at first. I was frustrated because here I was trying to learn development and Rails is just making magical things happen without any clear explanation. As I learned more about Rails and developed a further understanding of how it worked I got much more comfortable with it, but initially it was confusing and frustrating.
4. JavaScript is awesome.
I had a vague concept of JavaScript before starting MakerSquare, but I thought it was just kinda this icing on the cake of web application - the trappings a developer added to make a page more dynamic and interactive. At MakerSquare I learned the power of JavaScript. It deepened my understanding of programming beyond what it would have been from just learning Ruby, and I my first hackathon project, 4 weeks into MakerSquare, was a web application entirely in JavaScript.
At MakerSquare one of the main abilities they want to develop in students and web development professionals is independence. I thought people who were web development pros knew pretty much everything about the web and had that knowledge stored in their minds. At MakerSquare I learned they are just very good at googling. They certainly do have a lot of professional knowledge that is very valuable to what they do, but knowing how to google things is one of the most important development skills there is. At MakerSquare because of their emphasis on independence and preparing us for jobs, our first inquiry was always to Google, before consulting an instructor. So we learned to google everything first, and improved our search abilities, which helped us become more independent, confident developers.
6. I am a terrible typist.
After the first week of class, pairing everyday and working through projects with classmates, it became apparent to me that I am a pretty bad typer. I knew basically no useful keyboard shortcuts, and had typos galore. I improved throughout the course as I picked up tips and tricks from instructors and classmates, but my keyboard efficiency is definitely still a work in progress.
7. The empowerment that comes with being able to build something on your own.
I get lots of ideas, and I've always been pretty enthusiastic about them, but couldn't actually make them happen. Now I can actually do something about it. I have the tools to create what I envision in my mind. Having that ability is wonderfully empowering, and encourages me to be even more creative.
8. The value of mentorship.
My mentorship experience at MakerSquare was excellent. It was one of the most valuable elements of my time there and opened my eyes to what mentorship can be. I went to my mentor with any problems I was facing in class, but found our conversations about engineering principles, or business in the startup world much more valuable. I learned many things that were outside of the scope of the course, but primary interests of mine, through mentorship. The MakerSquare team did a great job of matching students to mentors, and I really appreciated the effort they put into that.
The MakerSquare founders were also excellent mentors. They were engaged and invested in my experience as a student, and in my career aspirations after the course. They were very generous with their time and listened to my questions and gave sincere and valuable answers and advice.
9. Everyone needs a web application
I had 4 or 5 freelance offers within a month of finishing up school. Everyone wants a website or application and they are willing to pay you to build them. Most of the projects are fairly simple, and I could tackle them on my own after going through MakerSquare.
Or perhaps better put, embrace the challenge of development and keep working at problems that arise. Sometimes things don't seem to be working as they should, but there is always a reason. I learned to be patient. It is ok, in fact preferable, to take the necessary time to research and fully understand a problem in order to solve it.
11. Design chops are nice to have.
For side projects, small jobs, startups, anywhere really, developers always end up having to do some amount of design work; or at least be familiar with how to properly work with designs and design software. This is definitely a worthwhile skill on which web developers spend a little bit of time, especially if it interests them and they enjoy working on side projects.
12. It's not all about who you know, but it helps.
Communication skills, development ability, hard work, and a good portfolio and resume are the most important things to have in a job search as a developer, but it is nice to have a good professional network as well. Opportunities generally come through relationships, as does professional growth, so it is important to have a good professional community around you.
13. The addictive nature of a development project.
When I was into a project I could just keep going. It was hard to take breaks. There was always some problem to finish or exciting new feature to tackle and it could be hard to take myself away from a project, especially mentally. Even if I was able to stop working to have dinner with my wife and talk with her for a few minutes, it was very challenging to keep my mind focused on what I was doing rather than letting my thoughts wander to a problem or feature. I found that the only way I could deal with this problem was to take more extended breaks, like an entire day, or several hours away from the code at a time.
14. Development is sooo much more than coding, and that is what makes it fun.
I learned the value of taking time to properly engineer a project, domain driven development, and a well thought out data structure. I also greatly improved in ux/ui just by having to put myself in the mind of a user over and over again on projects. Writing code to just get something done can be done quickly and in a million different ways, which can also be fun, but taking the time to properly design a project was what gave me the most joy.
15. Career Accelerators are the future.
It was a fantastic learning experience and this is the way education is headed. I believe the future of education will leverage online education for a foundation and preparation, but following that foundational knowledge will be an intense period of study or apprenticeship. During this period apprentices will polish up skills, and build a professional network. This was a great model for me to learn web development, and I believe it will prove to be an excellent model for people to learn many different skills in the years to come.