And What It’s Taught Me
Learning how to program has thrown me into a thought-provoking world with seemingly infinite knowledge to absorb. I’ve bought into this world to a degree I couldn’t have predicted. I never thought I would ask for books on algorithms for christmas! It’s been a wild ride, with the dream of coding professionally and the naivete that comes with being an idealistic young person leading me to make some terrible financial decisions. But I can tell you for a fact that it’s all been worth it. I’m not talking about financially, that’s going to take a little while to stabilize. No, I’m talking about mentally.
Before diving into what i’ve learned so far, i’d like to give a little background on what got me into programming. I started out college wanting to major in sports journalism, because I loved basketball. Soon after starting college, however, I realized my deep motivation to attempt to spread the privilege I grew up with: financial stability and unconditional support from my parents, things that most were deprived. Realizing this, I set out to become an urban planner; my aim being to design cities that optimize the mood, performance, and well being of its inhabitants. Not too long after this decision I became aware of the immense amount of bullshit and politics I would have to deal with as an urban planner. This does not fit with my personality and I foresaw a lot of friction and discontent with that structure in my career. I turned then to entrepreneurship. I came up with the (probably unoriginal) idea of an app that includes peer-to-peer forums for mentally ill people along with connections to therapists, self-evaluations, and relevant information. I developed the idea with the help of my good friend and mentor Mark and grew it to massive proportions, planning to completely revolutionize health care. Then the planning stopped and the doing started(kinda). I had about 10–20 screens for the app sketched down at the time. Mark was an avid programmer who very proficient at his craft. He introduced me to the world of hacking, automating, and data scraping; he taught me that this stuff was not magic, just a product of sharpened knowledge and dedication. I became enamored with the idea, but the implementation was going much more slowly. I wasn’t disciplined or organized enough to effectively learn Object Oriented Programming(OOP) principles while developing my business idea and going to school full time. The real learning how to program started this last summer, and will continue for probably the rest of my career.
Starting in this May, I started an impromptu internship with Mark. Basically the deal was I would create the design, style guide, and icons for his app idea for a decent stipend. This was a period of intense learning, as i’d never even used the design software for a small project before. It was really frustrating, as both Mark and I were expecting a faster learning curve. I felt many steps behind at every turn. Around the beginning of July, I started trying to implement my half-done designs in Xcode. This was equally as frustrating. I was stuck in the “tutorial roadblock” that many self-taught programmers run into. I was afraid to be fearlessly creative in my programming, and this led to over-dependence on beginner tutorials in learning the concepts. Copying and half-deciphering others’ code left me mentally exhausted and unfulfilled. Failure met me at every turn, leaving me feeling incompetent. It was only after I read through the Swift Standard Library (the project was in swift) and developed 3–5 simple practice apps that I felt remotely comfortable programming. Since then, i’ve learned this is the process for most that begin programming. Persistence and consistency are your best friends, and you shouldn’t get discouraged when something doesn’t seem to register at first. Once school started, my stint with Mark had ended but i’d become enamored with the complex-but-decipherable world of programming. I felt like power was at my fingertips just waiting to be absorbed and applied. My fluency with the Swift language increased and I became comfortable with the OOP concepts of encapsulation, inheritance, polymorphism, and separation of concerns. I started to read Design Patterns Explained and this boosted my knowledge of these essential software design concepts. Now i’m working on a news search/aggregation app that I want to release as my first app on the app store.
This transition from clueless-to-creative is what fuels me. It’s what keeps me going when I’m lost in the middle of a file, or when I don’t know where to start when figuring out a problem. The knowledge that I was able to get from drowning in information to passable in a few months invigorates me and drives me to learn new things. It gives me the confidence I need to go outside my comfort zone, and makes me want to tell people that they have the same learning capabilities. With persistence, dedication, and the habit of making one’s self do what is uncomfortable, anything can be achieved, accomplished, or absorbed. All the information is out there to take and run with.
Overall, learning how to program has given me the ability to stay consistent with and refine my learning process. This can be applied to any field, situation, or circumstance. If I want to start a business, I know how to become an expert in the market that I want to enter. If I want to become a better writer, I know to stop hesitating and make myself uncomfortable by writing as much as possible. The skill of learning that I have refined and enhanced over this journey will continue to add value to my life and assist me in overcoming obstacles of magnitude I could never predict. Even though i’m not an expert programmer yet, i’ve gained essential skills that I will cherish for the rest of my career.