My Coding Journey + UPenn MCIT Initial Impressions 👀

My Coding Journey + UPenn MCIT Initial Impressions 👀

How's it Going?

You ever hop on a Zoom call for work and the conversation goes something like this:

Bill: "Hey Jerry, how's it going?"

Jerry: "You know, it's going. Busy as always"

Bill: "Yep, thank God it's almost Friday though right?" awkward laugh

Jerry: "Yep" awkward laughs

awkward silence

That's how I feel sometimes when someone asks me, "How's the master's going?" My response is usually a simple "It's going," but deep down, every time I open my coding terminal, I feel like throwing my computer out the window. My courses are progressing slowly, but pursuing my master's in coding has easily been one of the toughest challenges in my educational career.

Is Coding Really That Hard???

Great question. I'm glad you asked. To give you some background, I've been coding for about a year now, specifically for six months as part of my degree. Honestly, the most difficult aspect of coding was setting up my computing environment. It involved downloading a programming language and creating the right setup to write and run code. I remember searching on Google for answers to questions like:

  • What is an IDE?

  • IDE vs Text Editor vs Terminal vs REPL

  • What is a terminal?

  • How do I run Python?

It was confusing at first, but eventually, things started to click. However, setting up the environment alone was quite a brain teaser. Then came the ~fun~ part learning to code 🥳

Learning to code itself wasn't that challenging; in fact, it made a lot of sense! The real challenge, like with most things, lies in applying the code. The basic flow of learning code typically follows this format:

Data Types -> Variables -> Loops -> Conditionals & Operators -> Functions -> Data Structures -> Read/Write IO

It's not as daunting as it seems. If you stick with it—meaning, truly dedicating months to it—you'll start to see progress. I remember for the longest time, I struggled to grasp the difference between print statements and return statements, like the examples below:

print(5)

vs 

return 5

Then, one day, I had an epiphany, and from that moment on, there was no turning back!

I liken a programmer to a digital Picasso, using code syntax and logic to build an artlike experience.

Two Classes Later...

I've finished one course in my master's program, and I'm now tackling the second with a deadline in August. It has been an emotional rollercoaster, and recently, I stumbled upon a post describing the stages of a software engineer's (SWE) life, which strangely resonated with me. I find myself stuck in the Reality & Imposter Syndrome phase, and there are three significant reasons behind it:

  1. Constantly comparing myself to my classmates and feeling inadequate

  2. Struggling with burnout, as the workload takes a toll on my well-being

  3. Feeling uncertain about the direction of my career, which adds to the pressure and self-doubt

Reason 1: Comparison to Classmates

In my classes, there are wizards – PhD students from esteemed institutions like Stanford or Brown, seeking to transition to Computer Science. For these guys, coding, selecting the right data structure for time efficiency, and understanding the distinctions between an interface and an abstract class come naturally. However; for someone like me, it takes much longer to grasp these complex concepts. To be frank, sometimes I feel like an idiot and that I'll never become an engineer.

Reason 2: Struggling with Burnout

Did someone say burnout? Trying to handle my full-time job while also keeping up with my friends, family, wife, and faith commitments is tough. Every week, there's this constant pressure to work on assignments, and I can't shake the fear of not upskilling by taking on a new coding project. I used to code for fun, but now I code for grades. It's kind of like a professional athlete hating the sport they used to love because now they do it as a job. The sucky part for me is I pay lots of money to do something that is killing me (metaphorically) while athletes get paid to do their job 🤭

Reason 3: Uncertain Career Trajectory

I don't know what I want out of my degree yet. On one side, I'm into developer roles, you know, the whole production app writing thing. But then, those developer-adjacent roles like Product Manager or Developer Advocate also seem pretty exciting, using my skills in different ways. And let's not forget about the allure of leadership positions, where I could be the one guiding and motivating others. Considering how tough my CS degree is, it'd make sense to go for a developer role, right? But here's the irony – having a formal education alone won't land me the job. In this super competitive space, they'll heavily test me on solving complicated data structure and algorithm questions, which kinda gives me anxiety 🫠, but there's no escaping them.

Where do I go from here?

While I touched upon the struggles of my degree and learning to code, it hasn't been all doom and gloom. In fact, there have been some great moments too! I've had the pleasure of meeting amazing classmates and becoming part of an engaged coding community, where we all support each other in pursuit of a shared goal.

Furthermore, I've gained extensive knowledge about various coding languages, delved into the realm of object-oriented programming, explored software design, and even improved my programming efficiency.

It's been a challenging but rewarding experience that's expanded my outlook on the world of software development. Regardless of the challenges I've faced, I'm still encouraged to push through and hopefully reach Stage 5: Acceptance and Empowerment ✅

Faith Reflections

Proverbs 3:5 "Trust in the Lord with all your heart and lean not on your own understanding". As much as I want to be a beast SWE, it is God who empowers me to think and code. Thank God for giving me a brain to process really hard things and eventually make sense of them. Would He put me in a career that is both satisfying and glorifying to how He made me to be :)