Year in Review (2019)
I think the end of the year is good time to reflect and so here is my own review of 2019 with an eye towards what’s ahead in 2020.
1. Published Django for Professionals
Django for Professionals was the major goal of the year and it happened, in the summer, later than intended but nonetheless it was finished. I crammed a TON of information into it, probably too much in hindsight, and felt the limits of the book format. For every change in an earlier chapter I had to redo all the code in a later chapter which ultimately made writing it feel like a big Jenga tower. This severely dampened my enthusiasm for the project: I felt quite trapped by the weight of code before/after any changes.
I also accepted pre-orders last year–not money, but pre-orders–as I had expected to be done in December 2018. Receiving weekly emails from readers asking about progress was hard for me. I’ve learned that I don’t do well with deadlines and external pressure. It really weighs on me so going forward I won’t be pre-announcing any projects even though this goes against the Lean Startup idea of testing the waters.
The main area of the book that caused challenges was Docker. I was committed to using it, in part to avoid issues around Mac/Windows/Linux, but also because I believe many modern developers use Docker so I wanted to explain how the “pros” do development. Docker and Django is still in relative early days and after spending quite a bit of time talking to Django peers I came to the conclusion that everyone is doing it somewhat differently and I ultimately had to pick a path and move on. In hindsight, I think I was too cutting edge here. Too much time was spent inventing concise ways to use Docker with Django rather than just explaining existing methods.
But, in the end, the book was published. Readers have been extremely kind in their reviews. And I think as far as Django books go I’m done with three. I still maintain them and make constant small tweaks but future Django content will be in online-only, smaller course form from me.
2. Django Chat Podcast
It seemed crazy to me in 2018 that there wasn’t an active podcast on Django and so at the end of the year I started thinking about doing one. I think this was, in part, a way to procrastinate on the book which was causing so much trouble. I like to feel busy/productive and often with the book I didn’t.
At DjangoCon 2018 year I met Carlton Gibson who attended my talk on APIs and had some kind/helpful words immediately after. I asked him if he’d be my first guest on the show and he, instead, proposed being a co-host. We decided to both think about it over the holidays.
My natural instinct on things is to retain total control and not to delegate. It was born out of necessity when starting out when I had no resources and probably continues at present given my desire to move fast and without managing co-workers, which I’ve enjoyed doing in the past but find extremely time intensive. A long-term goal for me is to let go a bit more and work with others in various ways more than I do now. In any event, based in large part on my wife’s advice, Carlton and I decided to give it a go. And I have to say I think doing the podcast was by far my best professional decision of the year. It’s been wonderful to have a co-host whom I can learn from, discuss things with, and really have as a partner. I need more of this professionally.
We launched the first episode of Django Chat in March and have kept up a weekly cadence since then, which will result in 44ish episodes this year. It’s a mix of guests and deep-dives where the two of us discuss a particular topic. Listenership is at around 2,000 for a new episode in the first 7 days, which seems to be the industry metric for analytics, which puts us in quite modest territory but we’re still growing, I love doing it, and I think it helps the larger Django community so we plan to continue into 2020.
3. Conferences
I attended PyCon and DjangoCon US. PyCon was my first time, enjoyable, educational, and also overwhelming. It’s an order-of-magnitude larger event than DjangoCon and really brought home to me that Django and web development is a tiny piece of the larger Python ecosystem. Which I think is a good thing since I certainly am guilty of having blinders on a bit and seeing everything through a web lens.
I didn’t speak at the conference which I think left me feeling a bit aimless: what to do with the time? This is compounded by the fact that I’m self-employed, so conferences are not a vacation, they are work, and if I’m not meeting dozens of new people a day I feel like I should just be on a proper vacation instead. (Lightening up a bit is a long-term goal of mine :))
I did speak at DjangoCon again this year on the topic of Search. The shorter time slot of 25 minutes meant I didn’t spend quite as much time prepping as in 2018 when I had a 40-minute talk on API Authentication. As my second year I also knew more attendees and thanks to the podcast, found that more participants knew who I was. So that was a ton of fun and a nice ice breaker at communal tables.
4. wsvincent.com
I wrote a number of new tutorials on my personal site and traffic is now solidly in the six-figures on a monthly basis, which seems both modest in web terms and also quite enormous. I’m in the process of moving my Django content into a dedicated site and likely the Python/JavaScript posts into their own site as well. The blog started as a grab-bag of whatever was on my mind, technically, but I think it’s large enough in content where a reorg is in order. Look for something new on this front in 2020 from me.
I spun out my posts on installing Python 3 on various hardware into a dedicated site, installpython3.com, which I think will help the community. It’s a bit nuts how tricky this is for beginners: there’s so many options and virtual environments are confusing. Long term Python needs to improve local setup and bundling. And it needs to be in the browser somehow. Russell Keith-Magee gave an excellent keynote at PyCon on this topic that I highly recommend viewing.
5. Django Software Foundation
I was very honored to have been voted onto the board of the Django Software Foundation this year. This is the non-profit that actually runs Django, day-to-day, and is run entirely by volunteers. It manages the salaries of the two Django Fellows, Carlton Gibson and Mariusz Felisiak, provides grant money to conferences, and a whole lot more. I’m eager to help in any way I can.
6. Balance
On a more personal note, finding a better balance was a major goal for this year. I was severely burned out at the end of 2018 and still had issues with this in 2019. I’m feeling better now but learning how to pace myself, my energies, and commitments is a big focus.
The way I think about this is that I’ve been a good employee to myself the last two years but a pretty lousy boss. So I’m working on the latter. That means taking a morning here and there to do something with my kids, or see a friend who’s randomly in town. While I like to be disciplined with my work schedule, I do ultimately have quite a bit of flexibility and so embracing it from time-to-time is a good balance to periods when I’m working a lot with no breaks.
I started meditating on a regular basis in 2018 and this has had a profound impact on my state of mind. I won’t talk more about this other than to say it’s been extremely helpful and intellectually super interesting to tap into the mind a bit more. I recommend it.
I’m on pace to read 52 books this year, which I managed in 2018 as well. This sounds like a lot but it’s really only 30-60 minutes each evening. I want to spend more time here rather than reading news on my phone which is a black hole these days.
Looking ahead to 2020
The big news in 2020 is a personal one, which is that my wife and I are expecting our third child in February. I was teaching a course at Williams College when baby #2 was born in 2016 and was back in the classroom less than 48 hours after the birth. I’m not repeating that again this time.
I’m planning to launch a dedicated Django learning site before then which is my main focus for 2020. It will be a lot easier for me to put all my content there rather than have it scattered all over, which is how it feels now. It’s also a chance to maintain and polish a large-scale Django site which will be fun. If I want to go to 100% test coverage, I can, even though it doesn’t make business sense. Having that freedom is very appealing.
We’ll continue to do the podcast and I’m thinking about potentially a weekly Django newsletter, ideally in partnership with someone else, as well.
I have a ton of Django content already written that I can’t wait to share with everyone, as well as a number of other things planned. I think 2020 is the year when I can fully focus on teaching Django without constantly looking over my shoulder and worrying whether I should take a traditional job. We’ll see.
I also have half-written three books on different technical topics that may or may not see the light of day in 2020. They’re a good outlet when I’m blocked on something.
I’ve found that having regular online chats with fellow Django developers in incredibly helpful and takes the place of colleagues which I, technically, don’t have. This is something I’ve started allocating time to and plan to do more of in 2020.
And in conclusion I think my largest goal for 2020 is to chill out more, focus on being a parent, be grateful for what I have, and get out of the scarcity mindset that has dominated my thinking these past few years.