Matt Ambrogi

Recurse Center Weekly Recap #2

In a way, this felt like the first real week of Recurse Center. I spent week one getting oriented and meeting other Recursers. This week was heads down.

I had wanted to start my batch by building a few apps with Django Rest Framework and React. I got started on that this week. I learned a lot. At the beginning of this week, I had never built an API or a React app. By the end of the week I had a functional (though very simple) blogging app with a React front-end and a Django back-end capable of CRUD operations and authentication.

I spent Monday and Tuesday running through the book Django for API’s. I was pleasantly surprised by the simplicity of DRF. I found the process of turning a Django project into an API very intuitive. I was psyched to get through the book in two days.

I hadn’t realized that figuring out how to connect my API to React would be much more complicated (for me) than building the API itself.

I spent Wednesday, Thursday, and Friday following a tutorial that helped me build a completely separate front-end project to consume my API. I had fun sharing what I learned on Friday at demos.

On one hand I felt a bit frustrated that I worked all week and only had a lame blog app to show for it. But I did get a lot from it.

In terms of technical skills:

  • I learned how to build an API using Django Rest Framework. Plus, how to write some basic tests, explore the API, and generate schemas and documentation.
  • I improved my understanding of how APIs and HTTP work.
  • I learned about different types of authentication. Specifically token vs session based approaches.
  • While I hadn’t planned to get there yet, I learned a bunch about React. This was my first time building something with React. At the highest level, I learned what it is and isn’t. I also started to get familiar with some specifics: functional and class components, managing state, hooks, routers, and more.

More importantly, my mental models around web development expanded in many ways.

  • I had an interest in building a project with a completely separate React front-end, Django back-end for a few reasons. But prior to this week, they were all theoretical. Now I have a much much stronger understanding of why I might, or might not, want to do this again in the future.
  • I now have a much greater appreciation for what monolithic Django provides out of the box. It is really remarkable how many common tasks Django has thought through and allowed you, as the developer, to handle with very little code. Django mixins and custom template tags are two examples. Many things that are just very easy in Django are lost when using a completely separate React front-end. I’m sure someone skilled with React wouldn’t be impeded by these hurdles. For the moment, I am.

I also gained a bit more clarity on how I want to spend my time.

While the first week was too packed with meetings, this week had too few. I spent too much time working on my own this week. So much of what makes RC amazing is the ability to work with others, pair, have my code reviewed. Every conversation I’ve had so far has taught me something valuable. So I’m looking forward to leaning into working with others more in the coming weeks.

The most impactful conversation I had this week was only 15 minutes. long It was with one of the RC facilitators and we briefly talked about breadth vs depth. I have a lot of thoughts on this that are not yet fully formed. I hope to write them up some day.

One thing we talked about stuck out: going deep into one thing is almost always the best approach. This is because going deep on any one thing helps you then understand everything else better. Becoming an expert in one framework then gives you a lens to view other’s through. Anyone who has learned a foreign language knows that comparisons to your own language are the primary learning device. The same applies here. It’s only by doing deep on one thing that you take the time for dive into source code, underlying concepts, etc. And that’s what helps you most. Even if it turns out that wasn’t the thing you wanted to dive into.

Some thoughts:

  • My biggest take away from this week was beginning to understand the pros and cons of an API based vs. monolithic approach. I also know infinitely more about React than I did one week ago.
  • I took some notes on my first impressions after integrating React and Django. Specifically around pros and cons. Why I may or may not do it again. I’d like to polish those up and share them at some point.
  • I’ve been thinking a lot about progress and breadth vs depth at the beginning of a learning journey. I’d like to write about these ideas soon.
  • One realization: when I first started teaching myself Django a year ago, I got pretty good, but still felt like an amateur. Why? Because I could get the job done, but wasn’t confident that I was laying my code and models out in the right way. That’s something I should focus on improving as I go forward. Code reviews and pairing are the best way to do that.

What’s next for me:

  • I’ll be on a snowboarding trip Tuesday-Sunday of Week 3. I’m psyched for the trip, but bummed that I’ll be missing this week. I really just got into a groove. All good. I’m going to use this week to experiment with a few more things in my first React/Django project. Then I’m going to spend some time reviewing React fundamentals. At the beginning of Week 4, I’d like to jump into a new React/DRF project. One that I’m interested in.
  • After that project I’m interested in a few things: building a project with Flask, training and deploying a model, starting to spend time daily on algorithms.

- 1 toast