An Epiphany While Learning Django
Tags: django, webdev, python, codenewbie
Published: 2023-03-18 20:55:38

I’m a middle-aged _gringo_ who lives in Mexico. More than once, I have taught English here, and all too often; most of my students would completely _over-complicate_ their learning path on their journey to learning English. There are so many times I would tell my students, “If you do exactly as I tell you, you will be proficient at speaking English. One day, _who knows_, you might even attain fluency. Seriously, the process is easier than you think.” Recently, I was reminded of how _oblivious_ I was to heeding my own advice when it came to learning to program in Python.

A couple of years ago, I embarked on the _journey_ to becoming a _software engineer_, and it has been so difficult because I wouldn’t do what people who were trying to help me suggested that I do. Seriously, I fought this _process_ so hard that I now understand something that I didn’t understand before.

If  you are like me, and are doing the _self-taught_ route, no-doubt you have heard of courses like _Python For Everybody_ by _Charles Severance_. I have never taken any of his courses, but I have watched a few interviews of him outlining the learning process of a Developer. So, I wasn’t surprised when I found myself learning things like Object Oriented Programming when learning Django because he explicitly said that Django teaches you OOP.

Honestly, I really feel like I let Django intimidate me. After a year of dragging my feet, I started out on the Django website building that _blessed_ Poll App, and then I realized that Django isn’t as hard as I thought. It’s funny because I had the same exact experience with Arch Linux where I wouldn’t do the command-line installation for about 3 years because of the same reason. When I finally did install it, I realized that there was just an _imaginary boogeyman_ scaring me away, and I now feel this way about Django.

If you haven’t _guessed_ by now, I have some skills loosely related to programming. I had created a few websites without a back-end, and I could get it to resize to where you could _make sense_ of it on your cellphone. I knew HTML and CSS so well that I felt confident that I could look at any free template _online_ and remake the layout. Also, I built a few development tools for development with the extensive use of google, Stack Overflow, IRC Chat, and many other forums. Unfortunately, _none_ of that prior experience helped me here.

Being hip to _Single Page Apps (SPA)_, I knew there was a lot that I could do _without_ a back-end; but I might as well build WordPress sites if I'm honest. I had some friends doing this, but it never appealed to me. I just thought that if people knew how _painless_ it is to get a WordPress website up, that they would stop paying for it. It would be better to learn to _programming_ where you could actually solve problems, but _learning_ how to do this was proving much more _difficult_ than I ever imagined it would be.

The thing I didn’t realize was the role that _databases_ played in web development, and how this just streamlines the whole development process. I would just _visualize_ databases as information in _rows_ and _columns_, but it never occurred to me that with OOP, you can have an _admin account_, _post_ pages from there and it will automatically be _renamed_ in the _url_. And this is all thanks to the database you set-up with a little basic OOP. This _facilitates_ the process so much, and also adheres to the DRY (Don’t Repeat Yourself) philosophy of _back-end_ development.

I remember preparing for my _capstone project_ that a mentor told me that it had to have a database of some sort. To be very honest, I drew a complete blank at the time because I had this project that meant the world to me that I was busy developing, but there was no databases involved. Unfortunately, I had the opportunity to scale my project into a _kick-ass_ project by getting a Django app to do a lot of the dirty work of my project. If I'm honest, I think I could have managed to get a Django app up when I was working on it, but that's not what I did.

It was so overwhelming that I gave up for a few months, and I don’t know exactly what changed in the air to get me to try again. That was almost a year ago, and things were still intimidating and the learning curve is still kinda steep. I still get _stumped_ most days on Leetcode, but I know that if I continue to _grind_; I will be that kick-ass developer for a good company or I might freelance. Either way, there is a rainbow at the _end_ of the tunnel. Well, kinda...

Today, I know a few people who are like me, trying to hustle their way through learning how to code. I think you have to have a little bit of a chip on your shoulder in order to stick with this because there are a lot of _ups_ and _downs_. Maybe, you are like me in that you are _smarter_ than the average person, in your _forties_, but you have been _marginalized_ by people or circumstance. 

_Bottom line_, I think it is natural for people to get _stuck_ at certain points in _software development_. If I had to do this again, I think I would try to _heed_ my own _advice_ to my English students in that I would _relax_ and _trust_ those who were trying to tell me how to _evolve_ into a competent developer. When they were talking databases, I would realize how far I was from my goal and that I need to just _trust the process_ and trust those people trying to help me. 

It _might have_ been an easier process.