March 18, 2017

Square One: That Time I Quit Grad School to Become a Programmer

Square One: That Time I Quit Grad School to Become a Programmer

This watershed moment in my life seems worthy of documentation. So I thought, "Why not start a blog? The internet can always use more blogs, right?"

Right?

Well, whatever. Here's my blog.


Background

I've been deliberating for some months now about whether or not I should drop out of my master's degree program and learn to compose software professionally.

I've been in seminary for the past two years pursuing a Master of Divinity degree, studying theology, biblical studies, and pastoral ministry, because I wanted to be a pastor. That desire sprang from several discoveries and experiences I had over the course of my adolescent and college years, experiences which upended my decade-long streak of skepticisim about the Christian religion and the historicity of the Bible. I had encountered the Reformed theological tradition (also sometimes referred to as Calvinism) and its most brilliant scholars and theologians, past and present. In their writings and sermons, I found all the answers to my biggest hang-ups about Christianity and the Bible. I found them to offer the most sensible approach to interpreting the Bible, an approach that took the original authors seriously as historical individuals and communicators and that believed them to be commissioned and impelled by God to write what they did. It made the whole Bible finally make sense to me and preserved it from the typical hyper-subjective interpretations I had usually gotten from other Christians.

These findings and this new perspective on Christianity and the Bible (new to me, at least) were so revolutionary for my thinking and outlook on all aspects of life, it was truly copernican. I wondered why more people were not familiar with Reformed Christianity or at least its contributions to theology and biblical interpretation. I was so enthused about my newfound faith in Christ and understanding of the Bible that I wanted to pursue a degree in biblical studies and spend my life helping others understand and live by the teachings of God's Word. Perhaps this is my calling, I thought.

So that's (mostly) how I got here. But now, after two years of very intense seminary curriculum, my urge to be a pastor has waned dramatically. That sense of calling now feels void. I have learned more about the Bible, theology, and the history of Christianity than I ever imagined possible, but I no longer have the desire to play the role of pastor and Bible teacher in peoples' lives. It's not 100% clear to me why I've had this change of heart. Many reasons do come to mind, but none of them (I don't think) are anything I wasn't already aware of prior to attending seminary. Something about me has changed that makes the work of a pastor seem unattractive to me now.

I think some of what's going on is that I've learned just about all I want to know about Christianity and the Bible. I don't have a lot of curiousity left for it. And the Bible and Christian doctrine don't exactly change, so there isn't much more to learn or keep up with anyway. On top of that, pastors already tend to focus their teaching and preaching on a fairly small subset of Christian teachings that is more suitable for addressing the concerns of lay people. I don't really want my life's work to involve reiterating over the same topics week after week, year after year. I'd rather be working on projects that require me to continually learn new things, gain new skills, and solve new problems every day.

There's so much more I could say. But I should leave it there. I just don't want to be a pastor, and therefore it doesn't make sense for me to spend another two years in seminary for a degree I don't need.

So yesterday, I submitted my academic withdrawal papers and stopped going to class.

Now I'm learning to code.

Why Software?

I have also been working part-time for the past two years. I manage the marketing for a private school here in Philadelphia, creating and managing the website, running email and social media ad campaigns, digitizing the application process, yada-yada-yada. I was not qualified for the job when I started, but thankfully the school didn't have the budget to hire someone who was, so I got an opportunity to learn some new things.

As a part-time marketer, I needed to focus my efforts. My intuition was that digital marketing would have the highest return on investment among the various marketing avenues, so that's what I invested my time in. As I got a feel for what tools to use and how to get the best outcomes, I started to realize that a lot of these online tools had useful features and integrations I wanted to use, but they required knowledge of coding to set up. So I learned how HTML and CSS work. I learned bits about JavaScript here and there. I learn how browsers read HTML and execute scripts, how to load scripts asynchronously without breaking dependency chains. I tinkered with Chrome's developer tools and figured out how to manipulate DOM elements. I slowly got my hands into more and more code and found myself feeling an enjoyable sense of satisfaction when I managed to successfully implement some bit of code (usually someone else's) into our school's website or marketing tech-stack. I wanted to know more. And that's where it all started: tinkering on the job as a marketer.

I've also had the chance to play with a lot of different software on the job as I've looked for tools to help me accomplish my marketing goals and as I've tried to help the administrative staff implement some software for information management, communication, grading, and so on. Playing with all these different web apps and software made me aware of just how good and how bad software can be. This made me super aware of what I liked and didn't like about various apps, and made me begin thinking about features that I thought would offer an improvement to the currently offered product. This experience playing with all kinds of different apps simply added fuel to the flame. I wanted to build a superior product of my own.

What's Ahead: Learn, Learn, Learn, Learn, Learn and Hopefully a Job

Of course, I haven't actually had any real programming experience at this point, so I don't know 100% if I'll even like doing it professionally. But my intuition is that my personality and intellectual aptitudes suit me very well for it. The only way to really know, though, is to start learning. And there is a lot to learn.

I actually started doing freeCodeCamp in my (very scarce) free time a couple months ago, working through their front-end certificate course, which primarily covers HTML, CSS, and JavaScript. More recently, I also started Codecademy's JavaScript course last week, which covers the most basic fundamentals of the JavaScript programming language. I've almost finished it already. I also bought some courses on Udemy that cover both front-end and back-end programming. A couple of the courses are full-length bootcamp experiences. I'm pretty excited to try these out because of how comprehensive they are and how well-reviewed they are.

I'm also researching actual coding bootcamps like App Academy, Flatiron School, and Thinkful. These programs are quite expensive, but from what I've read online, they're very successful at making their students into competent programmers who get good jobs. Having a program like that to provide a structured curriculum and a motivating and accelerated learning environment sounds really appealing to me. It has been really overwhelming so far trying to figure out what to learn on my own!

The little that I have learned so far has been pretty enjoyable, especially JavaScript. A lot of it just feels like logic puzzles and basic problem solving, which I find to be pretty stimulating and satisfying when solved. However, I've foudnd that working on this stuff alone for days on end isn't the best, that's another reason why doing a intensive bootcamp experience looks pretty attractive to me.

I have no idea where this road is going to take me or how long it's going to take to learn all that I need to know in order to be qualified for a software engineering role. But I feel a steely resolve to grit my teeth and make it happen as fast as possible. It is a little nerve racking attempting to become a software engineer without a computer science degree, but I know for a fact I can learn everything on my own that I could in a university classroom. I have yet to fail to learn anything that I have set my mind to. I have no reason to think programming will be any different. And while there may be some disadvantage in the job hunt when it comes to being evaluated on paper, I know there are plenty of recruiters and HR managers out their in tech departments and companies who know that it is skill and knowledge that matters, not diplomas or extra letters after names. If I can prove my knowledge and abilities by building real programs and apps that are on par with or better than what any CS grad could do, then I am confident I will have no trouble finding work.

Let's hope I'm right!