Summary
There are many aspects of learning how to program and at least as many ways to go about it. This is multiplicative with the different problem domains and subject areas where software development is applied. In this episode William Vincent discusses his experiences learning how web development mid-career and then writing a series of books to make the learning curve for Django newcomers shallower. This includes his thoughts on the business aspects of technical writing and teaching, the challenges of keeping content up to date with the current state of software, and the ever-present lack of sufficient information for new programmers.
Preface
- Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
- When you’re ready to launch your next app you’ll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 40Gbit network, all controlled by a brand new API you’ve got everything you need to scale up. Go to podcastinit.com/linode to get a $20 credit and launch a new server in under a minute.
- Visit the site to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at @Podcast__init__ or email hosts@podcastinit.com)
- To help other people find the show please leave a review on iTunes, or Google Play Music, tell your friends and co-workers, and share it on social media.
- Join the community in the new Zulip chat workspace at podcastinit.com/chat
- Your host as usual is Tobias Macey and today I’m interviewing William Vincent about his experience learning to code mid-career and then writing a series of books to bring you along on his journey from beginner to advanced Django developer
Interview
- Introductions
- How did you get introduced to Python?
- How has your experience as someone who began working as a developer mid-career influenced your approach to software?
- How do you compare Python options for web development (Django/Flask) to others such as Ruby on Rails or Node/Express in the JavaScript world?
- What was your motivation for writing a beginner guide to Django?
- What was the most difficult aspect of determining the appropriate level of depth for the content?
- At what point did you decide to publish the tutorial you were compiling as a book?
- In the posts that you wrote about your experience authoring the books you give a detailed description of the economics of being an author. Can you discuss your thoughts on that?
- Focusing on a library or framework, such as Django, increases the maintenance burden of a book, versus one that is written about fundamental principles of computing. What are your thoughts on the tradeoffs involved in selecting a topic for a technical book?
- Challenges of creating useful intermediate content (lots of beginner tutorials and deep dives, not much in the middle)
- After your initial foray into technical authoring you decided to follow it with two more books. What other topics are you covering with those?
- Once you are finished with the third do you plan to continue writing, or will you shift your focus to something else?
- Translating content to reach a larger audience
- What advice would you give to someone who is considering writing a book of their own?
- What alternative avenues do you think would be more valuable for themselves and their audience?
- Alternative avenues for providing useful training to developers
Keep In Touch
Picks
- Tobias
- William
- awesome-django
- The Digital Doctor by Robert Wachter
Links
- Quizlet
- Django
- Learn Python The Hard Way
- Invent Your Own Computer Games with Python
- Ruby on Rails
- Node.js
- Express
- LearnBoost
- David Heinemeier Hanson
- Meteor.js
- Class-Based Views
- Rails Tutorial
- Leanpub
- Gumroad
- Stack Overflow
- Egghead.io
- Frontend Masters
- Gatsby.js
- Jekyll
- Pachyderm
- Data Engineering Podcast
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA
Hello, and welcome to podcast dot in it, the podcast about Python and the people who make it great. When you're ready to launch your next app, you'll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 200 gigabit network, all controlled by a brand new API, you've got everything you need to scale. Go to podcastinit.com/linode to get a $20 credit and launch a new server in under a minute. And visit the site at podcastinit.com to subscribe to the show, sign up for the newsletter, and read the show notes. Your host as usual is Tobias Macy. And today, I'm interviewing William Vincent about his experience learning to code mid career and then writing a series of books to bring you along on his journey from beginner to advanced Django developer. So, Will, could you start by introducing yourself? My name is Will Vincent. I'm a developer and writer based in Boston. I started my career as a book editor, and I've worked at several early stage startups on first the business and then the engineering sides, and recently published a couple books on Django as well as writing about programming on my personal site, wsvinson.com. And do you remember how you first got introduced to Python? I do. Yeah. So I was working at Quizlet,
[00:01:18] Unknown:
running operations. This is back in 2011, 2012. And I had a little bit of experience with programming. I built static sites for book authors actually back in 2008 when I was an editor and said, oh, man. Like, writing websites seems like a good idea. So the choice was really between Django and Rails, and Quizlet used PHP, so that wasn't that appealing because we were dealing with all its warts and bugs. So really, I got into Python because I wanted to get into Django. I wanted to build websites. And I think first tutorials I did is probably learn Python the hard way, Zed Shaw's, and then also the invent your own computer games with Python. I think those were the 2 entryways, but it was definitely rocky for me. I think, you know, now it's a lot easier, a lot more linear ways to get into Python programming. And as you mentioned, your
[00:01:59] Unknown:
initial career trajectory wasn't as a developer. So I'm wondering if you can talk a bit about your motivation and experience of actually going from reading through and practicing some of those introductory tutorials to actually then working as a developer professionally.
[00:02:17] Unknown:
Sure. I mean, it was really painful is the short answer. And this is right before boot camps became a thing. I mean, the way I learned how to code was I tried to do it while I was working full time, and that's hard to do, especially when you're working at a startup. And then I eventually left Quizlet and my wife and I moved to a rural place for 2 years and I basically was in a room and figured it out, built out my first startup with Django. So it was pretty rocky. And yeah, and I think a lot of, you know, a lot of the things I learned is because I approached as an adult was I didn't, I wasn't unquestioning about it. When you learn things, if you learn how to code when you're younger, you just sort of adapt to how it is. And the whole time I kept thinking, why is it like this? Why is local configuration so hard? Right? I still think that. You know, why why is there a lack of good up to date resources? Why is this uniquely challenging to learn? There's no textbook for it, unlike almost every other thing out there. So a lot of that was a lot of that frustration, I try to turn into my own blog posts and books, and it's given me a lot of empathy for for newcomers because I learned it at a a later age than some other developers. And when you were first
[00:03:18] Unknown:
going through those stages of learning to program and learning to write web applications, what was your overall impression of the options available for web development in Python, such as Django and Flask versus some of the other options, such as Ruby on Rails or Node and Express in the script world or some of the other libraries and frameworks and languages such as Java or others? Yeah. That's a good question.
[00:03:45] Unknown:
So at the time, it was really in the start up communities in San Francisco that I was familiar with. Rails was really the big thing. Node had just come on the scene. Actually, the the people who did a lot of the work, I'm gonna say their names wrong, Guillermo Rausch, TJ Halowasek, were just down the street at another ed tech startup, Learnboost. But Node and Express weren't people weren't really using those. So it was really Rails or or Django seemed to be what, you know, people are using to get up and running fast. And I basically just picked 1. In hindsight, it probably would have been easier to start off with Rails because there were better beginner resources at the time. But I think I liked Python just a little bit better, and I had to pick 1. So I stuck with it. Yeah. It's it's interesting now, you know, with a little bit more experience when I think about you know, I think of Django and Rails being sort of in 1 corner and then micro frameworks like Flask and Express and the other. David Hanamura Hansen used the dis distinction of describing them as trucks versus a bag of Legos you shake on the floor.
So you can tell he's biased there. But, you know, I think it's it's a bit of a personal preference for developers, but I'm strongly on the give me a truck. Give me something that works. Give me something that's tested. Even if I don't agree with every choice, I wanna focus on what's new and different rather than reinventing the wheel. So Django is fantastic programming, the more I appreciate all the thought and care that's gone into it. I did a whole startup with a cofounder using Meteor JS in 2015. So I, you know, learned this lesson the hard way of, oh, the new and shiny toy is maybe fun at first, but quickly comes a problem when you have other you know, you don't wanna have to keep up with your framework. You wanna focus on business things and new features. Yeah. When I was first getting into web development after working as a sysadmin for a little while, I had first been exposed to Rails and worked with that for a while.
[00:05:25] Unknown:
And they, as you mentioned, have a lot of great introductory tutorials. Mhmm. But most of them just say, just do it this way. Everything will work magically. And as long as you don't try to go outside of these boundaries, then you'll be fine. But as soon as you start to try and do something nonstandard or that wasn't already baked into some of the considerations
[00:05:46] Unknown:
for the framework, then you have to then go down this rabbit hole of picking apart what is actually happening behind those covers. Whereas with Django, it's a little bit more direct about what the connection points are and how everything is wired together, which requires more upfront investment, but in my opinion, makes it a little bit easier to keep moving once you do get beyond that initial learning phase. And going actually back and forth between Rails and Django during my early development experience was fairly useful because I was able to juxtapose the way those things were done so I could take the sort of connection points that I learned in Django to understand what Rails was actually doing under the covers. No. I completely agree. And I yeah. I think if there's a spectrum, Rails is definitely, you know, a magic box that just worked, then Django, and then you get to Flask and Express. Yeah. And the more experience I have, the more I appreciate Django's middle ground where it is a it is a steeper learning curve at first. There is more config. I mean, just user models and user registration. You know, you just get given that in some other frameworks, but you can customize as much as you want. So, the thing I think about a lot with, you know, magic you mentioned, especially as you become more comfortable with programming, you don't like anything that's magic. You don't trust it. And I often hear a lot of times with frameworks or new things, people say, well, it's too much magic. A good example would be class based views and function based views, for example, which is not fully decided in the Django world. But when you're a beginner, everything is magic. And so I think a lot of the challenge for people learning and for people teaching is figuring out what's the progression of showing things. How do you do I need to dive into this side area or can I just say, yeah, that works for now? I think a lot of the a lot of that depends on, you know, who you're targeting. Right? If you're targeting a true beginner, you're targeting intermediate developer. And a lot of most official documentation is for intermediate developers who are new to the framework but not new to, say, web development. So this is the Django docs are a good example. The Django docs are fantastic, but they assume that you know web development and they probably assume that you've built a couple other things in PHP or something else. I mean, if you haven't, I mean, I think this is really the big challenge with learning how to code websites is you have to learn a programming language or multiple ones, right, at least Python, JavaScript. You have to learn web development. That's its whole other field, and then you have to learn the specific quirks of whatever framework. And so figuring out how to do that in a linear way or you know? Because now for for you and me, right, like, we've built we've worked with multiple frameworks. It's much faster and easier to jump into a new programming language, a new framework. We kind of get where it's going, but when you're just starting out, it's all magic. It's all confusing.
[00:08:10] Unknown:
And, also, it can be difficult if you're going straight to the deep end of building web application without having first understood just the basics of the programming language. Because 1 of the things I heard a lot when I was working as a Rails developer is stories of people who came into programming via Ruby on Rails, and they were able to get up and running with building web applications, but that they didn't actually understand what the boundaries were between Ruby on Rails, the framework, and Ruby, the language. And so they would try to write just a command line program, for instance, and they wouldn't understand what was actually part of the language specification versus things that were
[00:08:50] Unknown:
the necessarily know, if you haven't already worked with Python before, what's part of Django versus what's part of the language itself. Yeah. I agree. And I think part of that is that's the challenge of learning how to code is why you're doing it. Right? I mean, it's I think, personally, I think a lot of it I think about it in the same way as musicians. Do you you know, why do you play why do you play guitar? It's probably not because you wanna learn music theory or you wanna play scales. It's because you wanna play Jimmy Hendrix or something. Same way, like, you know, a lot of people come in because they wanna build a game. They wanna build a website. You don't necessarily want to learn programming languages, but you do need to learn them. So it's figuring out that order of how do you get enough of a taste and the excitement of building something, but also still building the fundamentals when so many people are self taught. So, yeah, I think that's a big challenge. Right? I mean, how fun is it to grind through Python practice problems? I mean, for me, it's fun now. It wasn't fun before. Probably a a computer science major would say that's fun, but I think for most people, they're they're more outcome driven. There's a reason why they're learning how to code rather than, you know, just diving into the internals. And so at some point, you decided that it would be a good idea to capture a lot of the lessons that you learned as far as how to actually get up and running with Django
[00:10:04] Unknown:
and develop an application with it. So I'm curious what your motivation was to actually go through all that work of writing down these lessons and wondering how you figured out sort of what tone and what approach to take to make it so that people would be able to get up to speed and be effective
[00:10:23] Unknown:
writing a Django application as a beginner? Sure. So a lot of it was my own notes for myself, just because there's so much to learn. And when you have a bigger project, I spent 2 years on my first Django project, you you sort of forget where you started from. How you know, could I recreate this? And so I wanted to document my own things that I'd learned. And I also kept hearing you know, I kept keep hearing the advice, build a bunch of toy projects in whatever framework or language you're using, but there weren't at the time. And I think there still aren't that many examples of it. I mean, still, if if you said, where can I find a good example of a Django blog? Right? Because CRUD blog, for developers, that's sort of boring, but I don't know where that exists, actually. And there's many ways you could do that. If you ask 5 developers to write a Django blog, I mean, I could think of 10 different ways that would be subtly and in some big ways different. So a lot of it was my own notes, and then I thought, well, other people would probably be interested in this. I guess, thinking about it, a lot of the writing happened when I was working with Meteor, actually, because I was getting a little bit away from Django and realizing I was forgetting some of it. And, yeah, I just like writing. I like teaching. I like the challenge of it. I basically wrote the stuff for myself, thinking there were other people who might appreciate what made sense in my head when I was, learning this stuff. And then the great thing about keeping that kept me put putting the time in is that I started getting feedback and comments from people, and so that kinda motivated me to keep going and decide, maybe make it a book, make it something real because nobody what does it take to make a book? Anyone can do it these days, and a book feels much more real than, you know, an online tutorial. And a lot of people have this conception that in order to be a book author, you have to be an expert
[00:12:00] Unknown:
and somebody who is well known in a given field. And it but as you mentioned, anybody who has the ability to write a book because all you need to do is be able to put words together and form some sort of narrative. But then beyond that, there are a lot of business aspects of actually getting the book compiled and published and distributed and making people aware of the fact that it exists. And so I'm wondering if you can discuss a bit about how you actually approached that challenge and,
[00:12:30] Unknown:
some of the early mistakes that you made as a first time author and publisher. Sure. And, actually, I wanted to go back and answer something I didn't before about Django specifically, which was when I was writing this, I didn't I was looking for the equivalent of a Rails tutorial. There's that famous fantastic Rails tutorial, and I just thought there was very little for Django true Django beginners. I think, in general, people who know Python or Django are assumed to be much more intermediate level rather than true beginners. So that was, again, 1 of the major motivations.
In terms of writing books, so I had a little bit of a head start that I'd I mentioned I started my career as a book editor, so working for a trade publisher, which is fiction, nonfiction books, but the process is very similar. So I didn't there's no magic there for that process. And then I, you know, looked online and found you can use tools. I use Leanpub to do my do the layouts for my book where you can auto generate things. And, and Amazon has really made huge strides in terms of making it very accessible for anyone to self publish their books and put it out there. Something that book publishers constantly think about is that people care about the brand, just like movie theaters and stuff or movie movies think you you care who made the book, and I I don't think or the movie, and I don't think people do. I think they just wanna see, does it have good reviews? Is it well written? The content kinda wins out. So the timing has kinda worked out well that Amazon has made it really easy. It could be easier, but they've made it quite easy to put a book out there. You can use tools like Leanpubs. You don't have to use InDesign. Spend 100 of dollars, all these things, to have a nice looking book. So, really, anyone can do it. The challenge is, I think the biggest challenge is, are you gonna finish the book? That's probably the biggest challenge for for for most people because it takes way more time than you think. And so we could talk about this. I mean, I have some thoughts on self publishing versus traditional publishers. I definitely don't think there's 1 size fits all there, but I think if you have the discipline to write a book, you can publish it pretty quickly and people just really judge it on the quality rather than, you know, who your publisher is or all these other things. And
[00:14:21] Unknown:
after writing and publishing that first book about Django for beginners, you wrote a fairly detailed retrospective about the overall process and some of the economic aspects of publishing the book, and the way that the value breaks down of whether being an author is actually a viable career choice or if you're just using that as a means of gaining attention for other ways of making a living. So I don't know if you want to talk through that and some of the conceptions that you had going into
[00:14:58] Unknown:
the initial process of being an author and some of the lessons that you've learned coming out of it. Sure. So a lot to talk about there. Well, so my initial motivations was I had the online jengaforbeginners.com site for probably over 2 years, and I slowly added stuff. And then a startup I was working with here in Boston, was acquired. And so I had a little bit of time to, dedicate to this. So my initial motivation was just to do the book, and I didn't think it would be self sustaining. It was more something I wanted to to do. I had the time, and I put it out and it started selling. And, you know, I was I did all the things people do playing around with price. Like, can I really charge for this? Do people value this? And quickly found that, in my experience anyways, there's sort of a a roughly set price for technical books. They're expensive. They're about $40.
But people don't really seem to change their whether they purchase it or not based on the price. As long as it's within a given range, it's they want it or they don't. So that's something I learned. I think a lot of Django authors come with a similar they're not necessarily trying to make a career out of it. They they, you know, they run a consulting business or they have a little break in time or you know, for those reasons, they'll do a great job on a book, but then when it comes time to update it, because Django updates almost every year now, they don't. And, you know, that's fine to do. I think for most people, go working with a traditional publisher, having someone hold your hand, handle all the things that I spend a lot of time on makes a lot of sense having an editor to improve the text, not having to do layout and all these things. If the goal is just to get a book out there with your name on it, that makes a ton of sense. And I think that's most most authors fit into that bucket. They write a book because they want to, not because they want it to be economically sustaining. But the flip side of that is then you don't update it. And so, you know, a year or 2 years later, it quickly becomes out of date. And so that's sort of a frustrating dynamic for, you know, authors and also for readers. You say, why aren't there up to date books? And, well, they're not up to date books because it doesn't pay enough for people to make it happen. The post that you mentioned, I talked a little bit about the economics of of royalties and all these things. And so to, you know, quickly for people who've never not experienced with books, the traditional publishers will pay something like 15% for a hardcover and 30% for an ebook. That's pretty standard in that range, and they pay little to no advance for tech books. For trade books, there would be much higher advances, but for technical books, there's not much of an advance. So, you know, you'll get couple $1, 000, you put a ton of time in, and, as I broke down the piece, you have to sell a lot of books to make make it worth your time if you could spend that time consulting or doing anything software development focused. I think the numbers I gave were if you sold 5, 000 copies, the traditional publisher, you'd make something like 40, 000, $45, 000 a year. Whereas if you, self publish that, you could make over a 100. That would be assuming that you self publish through Amazon where Kindle is 35%.
If your book is over 9.99, paperback is about 50%, it's 60% minus the, cost of printing. And then you can also sell the ebook directly with services like Gumroad where you you get most of the income. So there's so there's a lot to think about. I've I realized that I've internalized a lot of that over the years, and so laying it out, I've been surprised how helpful it is for people, but I guess it makes sense not everyone started their career as a book ever.
[00:18:04] Unknown:
Yeah. And also a lot of people who get into software aren't necessarily, spending as much of their time thinking about the business aspects of publishing and writing a book or some of the different business aspects that go along with that because they just want to write code and make something. They don't wanna be concerned with all of the peripheral activities that are necessary to actually make that successful because it takes time away from when they could be just writing more code, building more projects. So that's why there are usually a technical cofounder and a business cofounder at a start up or things like that. So it's always interesting seeing some of the ways that, technically oriented people end up making their living when they're not part of a larger organization.
[00:18:53] Unknown:
Yeah. You're right. And, I mean, I think that's something that I really love about programmers is they do it the the purity of it. You know, I have an MBA. I've been around business, so that's really not the case for a lot of people. You know, like a site like Stack Overflow, that's that was mind blowing to me that Stack Overflow exists. If you've never worked in programming, the idea that strangers would solve your confusing technical problems for free because they wanted to, like, that doesn't happen in any other field. So I I love that about programming. But, you know, yeah, business is important. If you don't think about it, it's gonna come for you.
A lot of times, these these projects, you know, open source or books, start are primarily passion projects. And at some point, it becomes real work. And if there's no income coming in, you say, Well, how much do I really wanna do this? And that's why, you know, you stop maintaining a project or you stop doing updates. So, you know, I think people are the thing is people are willing. There's a question of what level will people pay for stuff, and I think, you know, I've personally found that sort of the intermediate level, where beginners don't really know anything, don't value their time. They have no way to discern what's valuable, so it's hard to charge for that. You know, experts or people who think they're experts think they know everything. They wanna read the source code, and they don't wanna be bothered. But in the middle, you say someone who's learning to code or professional developer who maybe doesn't know Python or or Django that well. I mean, I've had people who are professional, you know, 10, 15 years of Python experience, but they don't know web development read my books. That's pretty amazing to me, but it kinda makes sense because web development is a whole different branch of of programming. So, yeah, you gotta I'll you gotta think about all that. I I do have that challenge though as an author of, you know, I I write my books, I update my books, I update the code, I have to keep learning how to code, I have to focus on marketing. So that's something that, you know, with a little bit of success, you have all these other obligations that come along, which I'm sort of dealing with now, which is a great problem to have. But, you know, I mean, I have 3 books out by the end of this year. And how long how much time is it gonna take just to keep them up to date and going? Probably several months, to be honest.
So it's more fun to just do new stuff all the time, but if it pays the bill, I love working on books. I'm happy to do that. And I also think that, you know, books are you can look at them as a static thing, but I just view it as I'm constantly improving the books. I mean, I have to update them every year, but that gives that gives me a chance to revisit things, to improve the code, improve how I explain things. So I find it kind of exciting to think about these books being something that just continually getting better and better and better over time. And your point too about,
[00:21:18] Unknown:
you know, it it's interesting and fun to always be going on to new things, but at the same time, that means that you're not improving the things that you've already built. So, if somebody has already come across your original books and enjoyed them, and they want to recommend them to someone else, if you're not keeping them up to date, then that sort of organic growth of recommendations is going to tail off because people will realize that the content is no longer relevant or it's no longer accurate. Whereas if you do continue to maintain them, you're continuing to grow that brand recognition of these books are valuable. They're up to date. They're consistently reliable. You don't necessarily go into new avenues as often, but the projects and products that you have created are continuing to, produce value and
[00:22:05] Unknown:
grow on, as you continue to dedicate time to them. Yeah. Absolutely. I think it's, you know, consistency and the snowball, snowball effect is really true. I mean, I imagine you've seen that with with this podcast. And, you know, I I have a personal site that I've been writing about programming for several years now and it's only in the last year that it's really taken off. It's hard to say exactly why. Part of that is how Google does SEO. Part of that is just the yeah. Things build over time. And, you know, I think it's a competitive advantage in some ways to be dedicated to keeping things up to date and putting the time in to maintain and improve. I mean, I like doing it. I really like teaching. I really like the challenge of explaining this to newcomers. So I think maybe some developers prefer just writing code. I totally get that. There's times when I like doing that better, but, I like the challenge. And I think, yeah, over time, you get better at doing it. And, you know, the great thing is if you explain something like Python or Django, I mean, there's millions of people who are trying to learn this, and it's helpful to them. And I think, you know, if you're creative about it, you can make a living doing it too. And within the realm of technical subjects, there's also
[00:23:08] Unknown:
a gradation of how frequently something needs to be updated, where on the 1 end, you have something like Django, which as you as you said, has a new version every year and periodic releases where the APIs might change and different things might be added or deprecated. And then on the other end, you have the idea of some of the more fundamental principles of programming, such as, data structures, algorithms, design patterns, where you can write a book and not have to update it for, you know, years or decades, and everything will still be applicable. Mhmm. So there are definitely trade offs to be made along those where on the end of having these fundamental design patterns, you're potentially appealing to a broader variety of people, but those lessons aren't as immediately applicable versus having a, well put together tutorial of this is how you write a Django application from start to finish where somebody can pick it up and then have immediate value from it versus, just laying the foundational layer that they then have to do their own building on top of. So I'm curious what your thoughts are on where
[00:24:15] Unknown:
to fall along that continuum and what led you to choose the sort of far end of that continuum with writing a a book about Django. Sure. Yeah. I mean, I definitely I think about that all the time. I mean, I fantasize about I mean, think about JK Rowling with Harry Potter. It's done. Right? She doesn't have to update it. I mean, the idea of being done with a book is like, oh my god. That sounds so nice. You know, same thing with with, you know, the spectrum of the biggest audience with, you know, writing a book on Python programming fundamentals. I mean, Python actually is changing quite a lot. Right? Not just Python 3, but f strings and 3.6, and there are these, it's always changing. You know, I think if I was gonna do another book, I would probably be more, you know, 3 is probably enough to maintain around Django.
I mean, I picked Django just because sort of that was what I knew and I thought there was it was crazy that millions of people were using this and I found it hard to learn. Again, I guess coming out as an adult, I, you know, I consider myself somewhat intelligent and hardworking, and I've just never been so frustrated in my life. And so, you know, I deeply think that the biggest challenge in learning how to code is the lack of educational content. It's not to say that my stuff is the best. I think it works for some people. There are a lot of different teachers, but everyone's trying to learn this stuff. Why is it so hard and abstract? Same thing with the fundamentals. I mean, I've actually written I've half written a book on algorithms and data structures because I think if you approach it differently, it can be very accessible. You know, I think if you just What is it? The Corman's book is the famous 1 on algorithms. I mean, that's it's it's a dis you know, it's a math book.
But you can you can make it all relevant. I think if you start with, here's some goal we wanna achieve and, you know, we can use data structures or programming principles to get there. I think that makes it much more accessible in the same way that if I think back to high school math learning calculus, there was never any real world application of it, but I've heard of teachers who will do things like have a robotics class where you need to, you know, move the arm. It's who you need to calculate the distance, you know, under the arm or something like that. And then you say, okay. Here's the problem. How do we solve it? Oh, boom. Calculus. In the same way, I think all the programming fundamentals can be taught in terms of here's a real world problem, and here's how we can solve it, and here's how we can solve it, you know, in increasingly better ways. That's what's really interesting about, data structures and algorithms. But I think it's often just thrown at you to memorize and kinda drill and kill. And so, you know, this is, again, I think what's challenging with, computer education right now is if you if you take computer science as an undergrad and you've never programmed before, that's really, really tough. You have a lot of classmates who've been coding for a while, and especially if they've been, you know, hacking away on web dev stuff or or games, by the time they come to see the data structures and algorithms class, it kinda makes sense. They've seen where they could have used that, where it would have helped. But if you're just seeing it for the first time, you're just, it's just kinda math. So I think having that perspective and sort of how you start teaching it is really important. So, yeah, if I'd if I did another book, I probably wouldn't do a Django 1 because I think I can add I have a long list of things I wanna add to my existing books on Django to make them better and have new features. But I also I'd love to tackle the challenge of Python itself and data, you know, data structures and algorithms. I think you could make it a lot more interesting interesting than the way it's currently taught. So that's a long answer. So when somebody is looking for resources on how to solve a particular problem, there are generally a lot of very surface level beginner
[00:27:27] Unknown:
are generally a lot of very surface level beginner tutorials or blog posts, and then there are also, at the other end, a lot of very detailed, very expert oriented descriptions of what's happening at very deep levels. But sometimes it's it's hard to find a detailed presentation at an intermediate level for somebody who knows what they're doing, but they don't necessarily want to have to delve down to the bits and bytes to understand, you know, at at the very basis levels what's happening. So I'm curious what your thoughts are on how to
[00:28:03] Unknown:
create and promote the creation of this useful intermediate content. Sure. I mean, I think we need more content, period, whatever level. I think you know, I actually think there isn't enough beginner level content. I I I hear that all the time, and I still just don't think that's the case in terms of, you know, up to date, good beginner content. I I don't think it's there. I mean, I think, in some ways, maybe it's better on on YouTube than it is with written content. But, yeah, intermediate content for me, I like the challenge of, yeah, going a little bit beyond. But, I mean, once you get advanced I like the idea of there being sort of agreed upon things. But once you get advanced, everyone does it differently. I mean, even the the fundamentals, as I mentioned with the Django blog, like, people would build that differently. So I think intermediate is more just saying, okay. You know how to do build a simple Django site. Now let's do CRUD. Like, now let's do a custom user model. Now maybe we'll do something with channels. Maybe we'll, you can so in a way, everything is kind of intermediate.
If you think it's advanced, I think you should think about how you can explain it at an intermediate level. That's my bias, but I'm always trying to simplify, simplify, simplify. I mean, a good example of that is with Django is with the the user models. That's something that I found incredibly confusing at first, and a lot of the traffic to my personal site is around I think I think actually the top post is around how to do user registration in in Django. And there, it's a question of a little bit of question of levels. You know, do you how do you how do you do that? When do you introduce the custom user model? So these are kind of the beginner intermediate questions that people wrestle with. And I guess I think if if it's explained well, everything is intermediate level, I'm I'm suspicious of things that are advanced. I think a lot of times it's poorly explained. And as you mentioned,
[00:29:41] Unknown:
after writing the beginner Django book, you then went on to write 2 more with 1 focused on building rest APIs and then the other focused on, some of the more advanced aspects of building and managing and deploying Django applications. So wondering if you can talk about the relative experience of writing those books from scratch versus the initial book that you wrote that was a composition of a lot of blog posts that you had accrued over the years? Sure. Yeah. So the first book was Django for Beginners was I I actually the site was in it was intended as as an online book, so, separate from the post. I did have introduction
[00:30:20] Unknown:
in various chapters, and that was a great experience in that it was copy edited for me by because so many people looked at it and gave me feedback and encouragement. So even though I, you know, I published that beginning of this year, but I've been working on it for probably over a year. The second book, REST APIs with Django, I just wrote on my own, and that was because I wanted to get the information out. And that experience, yeah, was radically different. I mean, I wrote the book fairly quickly in hindsight, but then I had the manuscript and I didn't have people to to look at it. Right? I I can't charge for this if I'm not a 100% confident that it that it works and it's good. So it took about about 6 weeks of I just made a a dream list of developers and emailed them and said, would you look at my manuscript? I mean, I interacted with Tom Christie, you know, who wrote REST APIs with Django and a whole bunch of other very prominent names. And most peep everyone responded, and, many of them did take the time to look and give feedback as well as, I had a list of early readers to my my first book who were willing to go through it. So so that yeah. That process was a lot different. It wasn't as satisfying for me, but it was maybe faster overall and sort of 2 ends of the spectrum. The 3rd book that you mentioned, Django for Professionals, I'm currently working on and will have out by the end of the year. That's really a real world Django book, because there's so many things I left out of the first book in particular just to keep it simple.
So this is 1 that will go into security, into performance. It's gonna build an online bookstore, so we'll do Stripe in billing environment variables. We're gonna use Docker and Postgres locally. So, you know, it feels it felt weird to write Django for beginners book and then be like, okay. You're on your own, but I you know, things in there aren't enough to get you to where you would really do, like, a new startup on your own. So the 3rd book is sort of trying to wrap that up and have a a progression throughout the series.
[00:32:13] Unknown:
And as you mentioned, you feel like there's not enough content in general, but also that books and technical books in particular are difficult to make work from an economic perspective if you don't have some other business that you're promoting through the book. So I'm curious what your thoughts are on some of the other ways that we as a community and as developers should be working on improving the accessibility of programming as a pastime and as a career, and some of the formats that you have found to be most effective beyond just technical books?
[00:32:56] Unknown:
Sure. So the first part is I think there's a I I wish there were the equivalent of, you know, egghead.io and frontendmasters for for Python and Django. Maybe there is, and I'm not aware of it. But something where you can, you know, have a day job as a developer and you can do smaller courses and just focus on the courses, and someone else will handle the, you know, the marketing and the payments and everything for you. I think the reality is to to be a good programmer, you have to be programming, and it's it's really hard to to full time create content and keep up your programming chops. So that would make it easier. That does tie in tie in, though, to format.
You know, there's books, and then there's videos. And videos are you know, when I look at people who've made a are able to do content full time, I think basically everyone's doing videos, which is sort of interesting. And I hear, you know, widely different things from people who create videos, I think, you know, you can people are willing to pay more for videos than they are for a book. Videos can be, in some instances, faster to to make than a book. You know, I'm often thinking, why can't I just talk through what I'm what I'm writing here? But if you have to update it all the time like Django, you know, redoing a a a video takes way more time than editing a book. So I think that's the challenge right there. But it seems like video is you know, it's it's an unresolved question for me. I think I'm gonna probably gonna try doing some videos next year, probably start on YouTube and then maybe use a platform for it, and probably for my own content. But, yeah, I'm not really sure. I ask people all the time, and I I expected maybe to hear that people preferred videos, and maybe it's just my age, I'm 37, that I like books too.
But I think it's pretty different person by person. If I would guess, I think total beginners like videos because they don't know how to do anything. And so to see someone do it from scratch is helpful. But once you get to intermediate level, you know, I kinda like being able to skim and go as fast as I want, which I can in a book when I can't in a video. So, yeah, that's something I'm gonna explore. I like the idea of having my own having content and using it in different ways because this is something content creators juggle is that it doesn't have to be new to me. I know a number of authors who've done video versions of their books, and the videos tend to do a lot a lot better.
So, that's sort of an obvious thing that's staring me in the face, but means, you know, figuring out how to do videos and putting the time into that. So it's just it's just time. Right? That that's really my biggest challenge, is figuring out how to how to balance it all and figure out what what works for me because it's easy to get burned out doing this.
[00:35:31] Unknown:
And have you moved now to relying on content creation and sales of that content for your primary source of income, or are you also doing other work in addition to writing books and, as you mentioned, starting to get into producing videos?
[00:35:48] Unknown:
Yeah. I mean, I think by the end of this year, I'll be at the point where the content creation will just about do that for me. You know, initially, I think like a lot of authors, I sort I thought I had a little bit of time after the acquisition to do this, and I thought it'd be a fun thing to do, and then I'll go, you know, get another job. But, yeah, it seems like it it might be something I can actually do full time, which I enjoy doing. You know, ironically, the challenge is if I spend all my time writing books, I like working with other really good developers to learn things in a way that you can't when you're just Googling and Stack Overflowing on yourself. So I'm not quite sure what that balance is to, you know, keep my own skills sharp, but also, be able to write full time. I mean, probably for me personally, if I had a dream job, it would be 3 things. It'd be, you know, creating content. It would be coding, and then it would be doing in person teaching. I was able to do some in person teaching. I taught at Williams College 2 years ago and really, really, really enjoyed that. I'd love to do more of that, but the irony is that that pays the worst by far out of all of these things.
You know, I only reach 20 peep 20, 30 people in a class versus, you know, there's 20, 30 people on my website right now. So, yeah, for me, personally, it's probably a combination of the 3. And to, like, wrap it around to your original question, it's something that I'm gonna be focusing on full time, going forward.
[00:37:13] Unknown:
And for other people who are going independent and not working with a larger company, what are some of the lessons that you found to be most useful that are not as widely publicized that would help others who are trying to get into the same situation?
[00:37:32] Unknown:
Yeah. That's a great question. You know, I think having done my I I solo founded my my first startup, and then I worked with others on the other ones. That was a great experience in terms of working alone and doing taking care of my own time because to to, you know, to go from a normal job to, like, full time writing a book, I wouldn't necessarily recommend that. I mean, a lot of people just can't work on their own. There's a lot of challenges to it. I think it's really just personality. So the fact that I had been doing my own thing or working in some early stage start ups, I already had the discipline to do it. You know, the big shift when you go to doing your own thing versus a company is in a company, you can you have to spend more hours in the seat if it's a, you know, physical company, but your productivity is a little bit harder to to manage.
When it's just you, you can you know, I'll have days where in 2 hours I'll get more done than I did, you know, I would in a couple days at a company. But the flip side of that is sometimes I'll be frustrated that I can't, you know, code and write for 8, 10 hours a day. At least personally, I just can't. I have to take breaks. So for me now with my schedule, I I wake up. I do 3 to 4 hours of writing and coding, take a little break for lunch, and then I can do a little bit of that stuff, but, really, I need to switch gears and focus more on marketing and, you know, things that are a little less mentally taxing but still important to do. So I think that's been a that's a big kinda eye opener is once you do have the time and autonomy to choose how you spend it, you kinda hit upon the limits of your of your own brain. I think a lot of programmers also feel this way in terms of, like, really thinking kinda work. It's hard to do more than 3 to 4 hours a day. So I think becoming okay with that is something I'm working on. You know, hopefully, if I get this to to be self sustaining, the idea is that it's just purely outcome oriented. No 1 cares how much time it takes. I just need to put need to end up with with good quality content. So if I can do it in 30 hours a week instead of 50, I should do that.
[00:39:31] Unknown:
Yeah. And as developers in particular, 1 of the other things that's definitely very important is, as you mentioned, even just mentally, you can't spend all of your time just coding. But from the business perspective, if that's all you do, then you're not gonna be in business very long because you do need to Yeah. You do need to continue to do business development and marketing and trying to consider sales pipelines or making sure that you if you're in the content production space, that you have ideas queued up and, plans to be able to execute on all of these things to make sure that you still have the time to actually write code or create content or do the things that you set out to do originally with the business.
And if you really, really don't wanna do it on your own, then find somebody else who can handle all of those other things for you so that you can just focus on the coding or the content creation content
[00:40:30] Unknown:
creator content creator, and he often talks about developer Wes and business Wes. And he's absolutely right. Right? I mean, I need to do a website. It's like, oh, I wanna, you know, do it with with Gatsby and React and stuff. It's like, nope. That's that's, you know, that's the developer side of my brain who wants to just learn all the time. The business side is like, just throw it up with Jekyll, get it done. And, yeah, there's a whole host of those things. I mean, I think the thing is for me and for a lot of people who work in startups is the variety is fun. I like the variety. That's part of why I like web development is because it's so broad, but it's it's not for everyone. And and even with, you know I didn't mention this in talking about, you know, working on books on more of a full time basis.
You know, once you have some sales, then there's all this other stuff you have to deal with. I mean, taxes, setting up, you know, accounting, setting up your, you know, FreshBooks, all these things. It just takes time. So, you know, if there were, like, a a service for self published authors that would handle a lot of this stuff, I would do it in a heartbeat. But the problem with books is most people don't make enough for it to to make sense.
[00:41:34] Unknown:
Yep. Well, there's a business idea for someone else.
[00:41:37] Unknown:
Yeah. Yeah. I mean, I think you know, and I and I think at a very meta level, there is a question around, is books the right format for tech content? In some ways, a online only subscription, even text based subscription site, makes more sense in that you would, you know, be monthly subscription or something because there's a cost to the creator to keep it up to date. You don't have to go through Amazon, so you have the email address, because, you know, marketing, you need to get the email address, which is something when you sell through Amazon. I don't know who those people are. You know, I can see what country they're in, but I don't have any sort of ongoing relationship. So, yeah, I think, you know, the more you you do content, the more you you realize the value and the importance of marketing and, you know, emails, relationships like that. And, yeah. That's stuff I think about. I mean, I think with my self published setup, I treat the books as ongoing things anyways, but, you know, I'm not sure if that's the right format long, long term. I think text based is.
And I guess that, you know, without giving too much away, I've been surprised by the reach of Amazon. When I started, I think I thought I would sell more books directly from my personal site and from blog posts I've written, but, the volume is higher on Amazon, though the cut I get of it is less. So it sort of balances out. But, yeah, Amazon has big reach. And when people go on there, they wanna buy something. Right? Whereas you could have a 100000 people looking at your blog post, but how many of them then wanna learn something else or or then wanna spend money on a book? Of course, you know, I'll go in circles here. Flip side of that is on Amazon, they're only in 7 countries for paperback and 13 for Kindle. So there's, what, something like 200 countries in the world. So those are people who can only buy the ebook version. And even then, there's some of them in countries, you know, Iran, that, don't have access to the international banking system, so they can't pay with a credit card. So, yeah, there's all these it's fascinating. There's all these things that come about, and I'll I'll probably write in another 6 months, write up what I've learned to save some other people the time that it's taken me to learn all of this.
[00:43:40] Unknown:
Yeah. And without spending too much time on this aspect of it, as you were mentioning there, the global considerations for content creation where a a a predominant amount of the material that's available is written in English, and that's not necessarily going to be the most accessible for the global audience. So, if you're looking for something to be able to make a name for yourself, and you either are a non native English speaker or you are multilingual, then consider creating content
[00:44:11] Unknown:
for people who speak those other languages because they're really going to appreciate that because it reduces the cognitive load of something that's already difficult enough on its own. Yeah. Absolutely. And I think that's something, as a native English speaker, it's not always appreciated is just because someone can code in English doesn't mean they they're fluent in English. And and that's actually something I think about a lot in terms of, you know, should I should I do translations of my books? I've been fortunate to have some off offers from, you know, publishers in big countries that, you know, have a lot of, developers and, as well as, you know so the question is, do I do I go through traditional publisher and and say Brazil? Right? There's a lot of publisher a lot of programmers there. Or do I work with volunteers and manage that? For now, I'm just not not focusing on it until next year. But, you know, in the bucket of beyond content creation, thinking about translation thinking about translations if you're a native English speaker, and and certainly if you are fluent in other languages, absolutely, there's huge markets to extend programming because it's because it's so global. So, that's a that's a big opportunity for for people, and and I think it's a little bit unfair that Python's in English if you really think about it. Right? But I guess it makes it a little bit easier for for native speakers. And are there any other aspects of content creation or book authoring or some of the business aspects that go along with it that we didn't cover yet, which you think we should discuss before we close out the show?
I think I think your content your questions were were pretty good. I mean, I think like all things, you need to do it for the right reasons. So a lot of times, that comes out of desire to put something out there, and then making money is secondary. But I think you can make money off it. Don't be afraid to charge. Don't be afraid to market. And if you like teaching I mean, I I've always liked teaching. I've I've always taught. I mean, I I tutored in college. I I taught briefly after college. So to me, it's something pleasurable, but not everyone feels this way. So if you have those overlapping diagrams of you like to code and you like to teach, And then if you throw a 3rd in, like, you know you know how to market, which is the 1 I'm working on, I think that's a pretty powerful combination. And there's, right, there's millions of people trying to learn this stuff, so the opportunity is there. Alright. Well, for anybody who wants to follow you in the work you're up to, I'll have you add your preferred contact information to the show notes. And with that, I'll move us into the picks. And this week, I'm going to choose a podcast I started listening to recently from the folks over at the, changelog
[00:46:35] Unknown:
studios. It's, practical AI, and 1 of the hosts is Daniel Whitenack, who works on the Pachyderm project, and I actually interviewed him, for the first episode of my other podcast about data engineering. So, it's a great show that covers
[00:46:50] Unknown:
AI from, as they say, the practical perspective. So it's worth listening to even if you are not actively engaged in that area of technology. And so with that, I'll pass it to you, Will. Do you have any picks this week? Yeah. I got 2 picks. The first is and I apologize. This is slightly self serving, but I think it'll be of interest to listeners. The awesome Django repo, which is just a repo of things Django related. That's a GitHub awesome Django, and it's, the 1 with my username, wsvincent. So that's just a list of yeah. It's curated, but, sort of a best picks of, 3rd party packages, tutorials, books that are of interest to people learning Django. I guess the second is a book, actually. It's called The Digital Doctor that I just finished reading. That is really, really eye opening talking about the health care systems, how digital records have have come about and kind of where they are. And so much of it is universal with any system where you have, you know, people that used to sit you know, doctors and nurses used to talk to 1 another. Now they're staring at screens typing.
The idea that you have, you know, now information and knowledge. So you have all this information, but you have, not necessarily more knowledge about things and and even things about how this idea and pattern carries over to things like, like pilots. Pilots used to talk the whole flight, but now they're both looking at their computers. So it's pretty interesting. Look at medicine, also just technology in general. I mean, everyone is staring at their computers all the time and how can we make that better? I mean, even the you know, the fact that jumps out at me is ER doctors spend 44% of their time on the computer.
And that's, to me, 1 of the professions where I think most of people, you know, working directly with other people, saving lives, and yet they're required to do all these things and work with these systems that have been introduced in the last decade. And it's just radically changing everything. And I think a big opportunity to improve but also to understand why things are complicated. You have you know, every time I go to a doctor's office and peer over what they're using, I think, what how do they you know, it looks just like the worst legacy software ever. And this book kinda
[00:48:48] Unknown:
explains how we got to where we are. Alright. Well, thank you for taking the time today to discuss your experiences on writing books about Django and trying to help others learn to program and learn web development. So I'm sure that others will enjoy reading those and learning from you. So I appreciate that, and I hope you enjoy the rest
Introduction and Guest Overview
Will Vincent's Journey to Python
Challenges of Learning to Code Mid-Career
First Impressions of Web Development Frameworks
Comparing Django and Rails
Documenting the Learning Process
Economic Realities of Writing Technical Books
Balancing Passion Projects and Financial Viability
Maintaining and Updating Technical Books
Creating Intermediate Level Content
Writing REST APIs and Advanced Django Books
Improving Accessibility of Programming
Lessons for Independent Content Creators
Global Considerations for Content Creation
Final Thoughts on Content Creation and Business