I will be starting the in-person portion of Fullstack Academy tomorrow morning. I am really excited to meet everyone else from my cohort and I think that we will all be able to learn a lot from each other. It feels as if I have been waiting so long for this moment and I am definitely ready to dive in!
Why Fullstack Academy?
I decided to attend Fullstack Academy because I believe that this program provides all of the things that I am looking for in a bootcamp:
- Immersionย – Learning more about best programming practices and about the technologies currently being used in industry. Ever since I made the conscious decision to pursue a career in software and technology, I have been looking forward to being able to dedicate my time fully 24/7 to learning as much as I can.
- Mentorshipย – Access to people that have worked in the software development industry who have a passion for teaching others.
- Structure – Having access to a curated curriculum will help me absorb skills that will help me with my career transition. I believe that given enough time, these skills can be self-learned, even without the help from a bootcamp. However, I think that the structure of a formal program will help me jump-start the learning process.
Having already received a four year B.S. in Mechanical Engineering, I did not feel like it would be the best use of my time and money to go back to an undergraduate program to pursue another B.S. in Computer Science or Computer Engineering.
I discussed it over with friends who have already pursued a B.S. in Computer Science and our impression is that the first two years of the curriculum, most of our classes were about the same (same math, physics, chemistry, etc.) and that the first two years of a CS curriculum only have roughly 6 unique classes relevant to the CS major: Introduction to Computer Science, Basic Data Structures, Computer Organization and Systems Programming, Mathematics for Algorithms and Systems Analysis, Advanced Data Structures, and Software Engineering Tools & Techniques. Some of these topics were covered in my own undergraduate degree, as we also had to learn about programming in order to use it in solving domain specific problems in mechanical engineering.
During the past year and a half, I have been slowly working through the equivalents of these courses offered through online platforms like EdX or Coursera (for example, EdX’s CS50 which is taught at Harvard). Even after I conclude my time at Fullstack Academy, I intend to continue to self-teach myself, following the curriculum of a standard 4-year Computer Science degree to further solidify my understanding. I have also started looking into potential masters programs that I can enroll in that will further enhance my knowledge of Computer Science and how it relates to developing software in the present day.
It is my belief that without a strong basis in the underlying concepts, the software that I design and develop will stand on shaky grounds. I believe that, in general, there are two types of engineers: those who understand the underlying concepts intimately and can tackle challenging and innovative work and those who can get by only by relying on a few high level tools. I consider myself a life-long learner and am excited by the vast repository of knowledge that the field of Computer Science contains.
(mechanicalEngineer) => softwareEngineer;
I have worked as a Mechanical Engineer for the past 4 years – I was lucky enough to be able to start working in my field professionally after I finished my undergraduate degree. I worked in two different companies over this time, once as a Mechanical Engineer and the other as a Mechanical Design Engineer. I used SolidWorks and AutoCAD (as well as other CAM/CAE software) extensively during this time and leaned on the skills that I learned in college. Although I enjoyed my job and was comfortable in the sense that I could keep working as a mechanical engineer and ‘get by’, after some time, I felt that I was starting to plateau. After the initial periods of intense growth, I realized that I had stopped learning new things on the job. Over the course of the last couple of years, I began to think about my future – when you are in school, the goal seems set: you finish your degree, you start working in your field, and then … ? I reached the point in my career where I started to think about what it was about my job that excited me and challenged me. I distilled it down to this: I enjoy solving problems and I want to use my skills to help people. It seems like software and technology is the perfect fit for this.
With Mechanical Engineering, I found the following limitations:
- Lack of resources – Unlike programming/software, you will NOT be able to find blogs, podcasts, meetups, online communities, educational games, conferences or other learning outlets that are teaching ‘mechanical engineering’ or trying to advance the field. The closest equivalent that I was able to find was the DIY/Maker movement but even then, it is limited in its scope. If I want to learn something new in mechanical engineering, the best bet I had was to find a relevant book? There is also a very limited social aspect that is very isolating. The field of mechanical engineering is fairly stable, it seemed like the work that I was doing would continue to be done in the same way for years (or decades?) to come – whereas it seems like software and technology is constantly changing and affecting our daily lives more rapidly.
- Materials and Hardware aren’t cheap. In order to work on projects, the costs of the materials is prohibitively expensive, be it plastics, metals or wood. Even with the advent of cheaper manufacturing processes, as one person, you are still very much limited in what you can build and design. Prototyping is not accessible in terms of cost or access. This is where I think it is different with software. With as little as an old laptop and the shakiest of internet connections, it is still possible to create new products. Not only that – there are whole communities devoted to doing so, in a vast amount of different niches and specialties. I believe that the open source mentality lends itself more to innovation and creativity.
With this career change, I think that I will still be able to solve problems that can help people. I would like to be a creator in the field instead of just a passive consumer and I am excited by the fact that there is so much to learn about software development.
Motivations & the Future
This program is set to last until early April – I will continue to update my progress throughout and will (eventually) provide a detailed description of what I learned and what I have already learned in the remote portion of the program. I have already started planning and scheming on what I will be pursuing after the program – be on the lookout for updates then! Until then, I am thrilled to start this new path in earnest and I look forward to seeing what 2018 will bring ๐