I’ve mentioned a few times already how I began my software engineering journey. In short, the bulk of it has been me self-teaching myself various programming concepts by not only picking my mentor's brain but also by outsourcing different books, tutorials, Udemy courses, etc. The moral of the story, there was no formal curriculum or track laid out for me to follow. I gathered the accessible resources and started laying down some code. After a few months of gaining comfort, I then began to start completing some freelance web development projects along the way.
That all began in early 2020, fast forward to May of 2021, I decided to enroll in college. Being in the military has a few perks, one of them being tuition assistance which allows me to take x amount of courses at very little to no cost. How could I not capitalize on this opportunity? After some research, I stumbled across Arizona State University’s fully online Bachelor of Science – Software Engineering degree and wasted no time getting started.
Don’t get me wrong, I do understand that learning about how to develop java programs using primitive types, using predefined classes, and understanding the use of static methods plus more can be inherently important. But at the same time, I also believe that a student should be able to have more flexibility in their ability to cater their learning to what they plan to do in the future, not spend multiple semesters making slow progress towards understanding Java.
Another shift I saw was a shift in how many random programming projects and freelance clients I was able to take on. When you’re moving at your own pace as well as sometimes learning concepts as you need them, you have more freedom to apply your knowledge a little more rapidly. You have more free time to do such. Once I got into school this all changed. As I’ve mentioned before, I already attended college in the past, so I understand that students are required to take outside classes in addition to the ones in their major, but as a Software Engineering major, I found myself becoming fairly frustrated with spending hours on end rolling through English papers, history assignments, and even some biology requirements when in reality, I just wanted to do more projects and continue to compile code.
Now college does has had some bright points for me as well. For example, in my Introduction to Engineering course, I was introduced to working with an Arduino board, dealing with sensors, actuators, and other electrical engineering tools. I also became familiar with creating CAD models and better understood how to create and the importance of creating 3D sketches. This course was amazing for me and I valued the broad Engineering concepts I learned, especially the teamwork component. For the final project, we had to work as a team of 4, myself being the software engineer, we also had one mechanical engineer and two electrical engineers. Collaborating on a project to create a fully functional engineering solution from cradle to grave was no easy task. I probably wouldn’t know where to start. But, thanks to FSE100, I now understand the ins and outs a bit more of working as an engineering team.
My main takeaway from all of this is, if you want to learn a specific concept or language, you have to outsource the resources yourself and be prepared to anchor down during your free time. For example, I am in between the fall and spring semesters right now with about 6 weeks of free time. During this time, I am intensely focusing on furthering my knowledge of Python in regards to Machine Learning & Data Analytics as well as trying to complete at least 3 projects to apply this learning because I know this isn’t something I’m going to learn via college.
A college curriculum is a great tool if you’re excited to learn more of the broad topics of programming and touch a little bit of every concept. This is often perfect for future Software Engineers who have no idea what language they would like to specialize in nor the sector, rather that’s web development, app development, machine learning, or anything else. If you lack self-motivation and truly need those deadlines to structured curriculum to keep you on track, that is 100%, okay, but also understand that this is also another sign that college is most likely the best route for you.
The most valuable lesson you should learn regardless of the route you take is to use your free time wisely. You can attend college and still become a freelance software engineer while you are still pursuing the degree. In your free time, you can progress through Udemy courses, meet with your mentor, complete a few practice projects, and slowly become comfortable in your preferred specialty of engineering and eventually grow to have wonderful success freelancing. It all stems back to what you’re doing when class is not in session.
I am no career coach, college advisor, or programming boot camp marketer. In my opinion, neither path is drastically better than the other because it all depends on the person. Self-teaching yourself to program comes with a barrage of cons while it also comes with a plethora of pros, but this same thing also applies to college. Even if the self-taught route isn’t exactly for you, you could spend a few months in a fully immersive programming boot camp compared to 4 full years at a university. It all depends on the student and what they believe puts them in the best position to succeed.
My advice is to explicitly decide on what your goals are. Deeply analyze the possible degrees you could obtain, and do the same for boot camps, courses, and other resources at your disposal. After you spend some time identifying your goals and analyzing the routes available to achieve those goals, it is completely up to you to decide what is best for you.
Good luck and always remember, slow motion is better than no motion. At some point, you just have to take that first step and figure the rest out along the way.
Did you find this article valuable?
Support Jarred Taylor by becoming a sponsor. Any amount is appreciated!