Whoa! Two years spent on basic, fundamental programming concepts? Don’t worry. I’m almost positive it won’t take you as long as it took me — especially if you heed my unsolicited advice. I officially signed up for Launch School in March of 2019. I was excited to get started in my new journey learning the fundamentals of software engineering. Granted, I didn’t really start to consistently study for several more months, and had a variety of travel plans that interfered with my studies, but regardless I didn’t pass 109 until the end of March 2021.
I decided to pursue the Launch School path because I knew it would force me to cultivate in myself many of the virtues that I find praiseworthy . Programming requires focus, a keen sense of judiciousness, persistence, and an analytical thought process. Since I was a kid I’ve struggled with math word problems, doing things in a sequential order, focusing on a specific task at hand, remembering minor details about various systems and processes that I wasn’t passionate about. I decided that I would jump head first into this path, knowing that it would force me to forge myself into a better version of myself.
Imagine someone that is very shy, introverted, and deathly afraid of public speaking deciding to pursue a career in motivational speaking/coaching and engaging with large audiences. (I’ve given lectures to crowds of over 500 people, was good at it, and enjoyed it.) This would be an arduous journey for them. They would struggle, make little progress for extended periods of time, and would have to become comfortable with discomfort. They wouldn’t be the most naturally gifted speaker. However, if they could persevere they would be able to look at things from a different perspective than most public speakers, and relate to the audience in a different way. They would be able to contribute in a manner that many of their peers could possibly appreciate, and they would have grown immensely as a person.
The aforementioned is in a sense what I did — deciding to enroll in what is, in my opinion, the most rigorous and prestigious online learning program for software engineering in the world. Though instead of being shy and introverted, I’m pretty extraverted and have always struggled with the details and focus. You may find it odd that I would write an article about completing the first course in Launch School’s rigorous program; it’s not like I’ve completed the Core curriculum. It was an arduous journey for me. I’m writing this to encourage others not to be concerned about how long it takes. If you think it’s taking you too long, chances are it took me longer.
Before you start learning to program, you need to learn how to learn. Before you learn how to learn, I suggest finding out how you best learn. Is that grammatically correct? Probably not. This isn’t programming, so syntax doesn’t matter. Anyway, I wasn’t really familiar with how I learned.
Here’s some key Ancient Greek advice: “Know thyself.” One of the reasons it has taken me so long on this course is that I have had to literally augment many aspects of my personality. I highly recommend that you take the Myers- Briggs test at www.16personalities.com
While Myers-Briggs isn’t everything — and many people find it to be inaccurate — I think it does provide a good general idea of some of your more fundamental personality traits. Some people say they don’t like to understand MBTI because it “puts people in boxes”. I don’t use MBTI to put people in boxes; I use it to better understand myself and others. I’ve found it to be a very useful tool.
Pro Tip: If you’re the LEAST bit extroverted, as in if you take the 16 Personalities test and get EXXX, you may study best when engaging with other students. Though you should be able to study and learn on your own (I spent too much time studying alone, but I did further cultivate discipline, tenacity, persistence, and focus during my solitary time studying), many of your insights will probably come from listening to other students, explaining concepts to them, reviewing together, etc.
Also, another thing to keep in mind…if you’re used to bouncing around from place to place (though with the pandemic cruising along that may not be the case right now) doing various activities, it may initially be rather difficult to sit at a computer for hours on end focusing on complex abstract concepts. Take it piecemeal, and over time you’ll become more acclimated to it.
Pomodoro method is good for this.
Pomofocus is a customizable pomodoro timer that works on desktop & mobile browser. The aim of this app is to help you…
After failing over a thousand times to find something that would conduct electricity, someone asked Edison if he felt like a failure. He basically said, and I’m extremely paraphrasing here, “Nah, I just figured out a thousand things that aren’t conduits for electricity.” While it was disheartening to see people start Launch School after me, finish Core, move on to Capstone and finish, then get a job…I knew when I decided to go this route that it was going to be exceptionally difficult for me. If someone were to ask me if I felt like a failure for taking so long, I’d say no. I’d say that I never quit, and I finished 109 faster than those that gave up.
If you look into the various personality types that tend to be software engineers, you’ll notice that many of them share the following traits: Introverted (I) this isn’t necessarily analogous to programming but introverted individuals tend to not mind sitting at a computer for extended periods of time solving complex problems. Even though I’m the least extroverted of the extroverted personality types, ENTP, it was rather daunting sitting at the computer for extended periods of time, dealing with a variety of fairly complex concepts and trying to incorporate them into solutions.
Many programmers/students at Launch School seem to be either abstract thinkers (iNtutives) and some are very systematic observers of reality (Sensors), Judging (this doesn’t mean the judging of individuals, but judicious in behavior — exacting, organized, disciplined, structured, etc). If you get a P in your personality profile as opposed to J, that tends to mean that you enjoy going with the flow, not having a set schedule, seeing what possibilities are available, and getting a lot of work done in fits and spurts as opposed to a regimented schedule.
As someone with the dominant mental function (a mental function is basically a term given to certain patterns of how one processes information, relays information, etc) of Extraverted Intuition (think Thomas Edison, Benjamin Franklin, Socrates, Walt Disney, Ironman… who are all known for unique ideas and solutions, as opposed to the minutiae of details) dealing with details and breaking down problems — particularly Math problems — has always been a struggle for me. I managed to get decent enough grades in school, A’s and B’s…usually C’s in Math and in College Algebra, etc. Launch School, however, demands excellence just to pass. The only passing grade is an A. Maybe a B+.
Check out your personality type, and see how you learn. This may save you a lot of valuable time.
The Learning Styles of Every Myers-Briggs® Personality Type - Psychology Junkie
One of the questions I get asked the most by teachers and parents is if there is any connection between personality…
This video goes over the different personality types, and how they best learn material. I think this could be a useful starting point if you are unsure how you learn:
Once you have a good idea of how you learn, I recommend learning the fundamentals of programming first with an easy-to-read language like Ruby. Go ahead and master the material in 100 before joining the full program; the time you spend in 100 will pay dividends in the future, the same with 101.
Oftentimes what happens when you’re learning to program is you face what is called the two-layer problem. The first layer is the logic of the problem, how to break things down into a step by step manner to solve a problem or issue. Personally, my natural inclination is to see how various things can connect to other subjects ideas, the big picture of something, and various patterns. This is just something that comes naturally to me. Even when programming I would find that many of my solutions were substantially different than other students.
The second layer is the syntactical part. The thing is, if you’re not sure about how to solve the problem with logic, you’re going to be even more frustrated with the syntactical part because you’re trying to do two things at once; you’re trying to write out the logic and make the computer accept your “coding grammar”. I suggest writing out your steps in pseudocode first, then translate that into the programming language. I’ve seemed to have had an inverse of difficulty than that of most students I’ve studied with. I could understand/“solve” the problem rather quickly, but I would struggle translating that into code. This wasn’t for a lack of trying or effort, however.
Here’s an article from Launch School on the Two-Layered Problem aspect of programming:
The Two-Layer Problem
You have just finished reading your first programming book and somebody has asked you to solve the following problem:
Over the many months I’ve spent studying (technically years), I’ve gotten to the point where I could spend an inordinate amount of time on a specific problem and solving problems in general. I can now focus better than any point in my life, and I have the patience of a Zen Buddhist monk. Okay, maybe not that much patience, because my left eye still twitches whenever I see
undefined method 'whatever' for nil:NilClass. (Go ahead and introduce yourself to this error message now. It’s going to be close companion for a while.)
Consequently, you can’t get frustrated and mad because your code doesn’t work, or you have no idea how to put
barinto a sentence using concatenation. (Side note: Why
foo and why
bar? Because they don’t matter. You’ll get what I mean some day….) You have to take a deep breath, calm down and analyze the problem calmly and logically. Try to be like Spock while you are learning to code, and while you code. And be persistent like Spock. Don’t give up! Most of you may find programming comes naturally. Some of you…it may not. If you want it bad enough, keep at it. I honestly think that if I can get through the first course, I can finish the rest of Launch School. Additionally, I think if I can do it you can as well.
It took me a while to develop the discipline to force myself to study for hours a day. I’m not someone that is used to not understanding something quickly and that was very frustrating, so I had to force myself to get comfortable with discomfort. Perusing the learning styles and habits of ENTPs online, I have found that sometimes ENTPs are known to having a long learning curve to understand details of something complex. However, once we do understand the fundamentals of something, we can provide additional solutions that others may not conceive of, and learn it to an impressive amount of mastery. That all depends if we have the drive and determination to stick with it. Steve Wozniak for example is a famous ENTP known for helping start Apple.
I just kept telling myself that the money, creative work (technically…no pun intended…programming is the only form of art that is interactive with the viewer) and career possibilities would be worth it in the end — not to mention the self improvement. Very few ENTPs seem to master something, so I would like to master software engineering fundamentals. A common trope for ENTPs is “Jack of all trades and master of none.” I want to bring that saying back to its original format: “Jack of all trades and master of ONE.” It basically means that you should be good at a lot of things and really, really good at one thing.
Overall, it’s been a slog to get through the other side of 109, and sometimes I can’t believe that I’m actually through it. With my newfound sense of determination and pugnacity, I think I’m on the right path. I wish you the best in terms of figuring out how you learn best, and getting through Launch School — especially that first course.
Know thyself. Try Launch School if you really want to become a software engineer. Don’t start until you’re ready. Don’t quit. Don’t worry how long it’s gonna take; chances are it took me longer.
Things I Would Do Differently
Find a Group of Students to Study With
I started Launch School before the SPOT was a thing but that’s an awesome Slack channel to use. Other Launch School students volunteer to help other students understand key concepts, once again illustrating the type of students that attend Launch School.
Ideally, you’re going to want to study with students that are at about the same proficiency as you, find some students that are further along but willing to explain things (most likely in the SPOT), and take the time yourself to help other students understand a concept or are just starting out. Teaching/helping them will help cement the concepts in your mind. Personally, I learn best in a group.
Wait Until I Had More Time:
Not a good idea to start this program if outside commitments will be distracting (travel, family, etc)
Read Deep Work by Cal Newport
Really helped me with my workload. I highly recommend this book.
Read a Mind for Numbers by Barbara Oakley, PhD
Great book on analytical thinking, and how your brain works.
Use Anki to recall methods and concepts
Anki is the real deal for studying/memorization.
Just for Fun:
Random Life Problems of an ENTP: