← Back to Show Notes

Transcript: Kenneth Love

Hello, and welcome to another episode of Django Chat, a weekly podcast on the Django Web Framework.

I'm Will Vincent, joined as always by Carlton Gibson. Hi, Carlton.

Hi, Will.

This week, we have a very special guest, Kenneth Love. Hi, Kenneth.

Hi, I'm glad to be here.

Yeah, we're thrilled to have you on. You're on the short list of people I wanted to

have on the podcast when we were thinking about it way back when.

uh perhaps you you could tell the folks out there uh who are you and why are you such a big name in

the django world um i will i can definitely or i can do it for you if you want uh i'll give it a

try and then you can fill in anything you think i missed um so yeah i'm i'm kenneth love uh i've

been involved in the python and django worlds for about um about a decade now i guess quite a while

um uh i'm an open source contributor uh i speak at conferences a lot uh or did um i was chair of

jango con us for 2018 which was really fun um and uh i uh what else oh i used to i used to teach

python online a lot of people watched that uh and i've done some technical editing um namely uh

Python Crash Course by Eric Mathes, which is an amazing book if you haven't read it.

I got to read it a bunch of times.

A lot of people have. A lot of people have read that one.

Let's start off with something. So I think I first came across you partly from Treehouse,

but before that you had done, I believe, Django Braces, right? And that has since been,

I wonder if we could talk about that because that has since been rolled into Django. So kind of what

was that process of coming up with your own Django things and then rolling that in I think that might

be interesting for folks to understand how new features are rolled into Django itself sure yeah

um so quite a while ago uh when class-based views first came into Django so that was I don't know

what like 1.4 something like that I don't know it was a long time ago um they they honestly kind of

sucked when they first came in they were very difficult to use um it was a great idea they

were a wonderful game changing idea but they were just kind of hard to use um mainly because you had

to go and recreate a lot of stuff yourself every time you used them even though they were class

based views there wasn't a lot of uh really nice features for like using them like there were with

the function-based views that have been around for, you know, five, six years by that time.

So a lot of people really kind of hated class-based views. I gave a talk at DjangoCon about them

because I thought they were awesome and nifty and tried to get people excited about them. People

seemed to like them. And around that same time, my friend Chris Jones and I were working as

contractors. We were using a lot of class-based views and we were finding a lot of the pain points.

And so we just started writing mixins for the class-based views to make them easier for us to use in our job, like in our day-to-day work.

And that's what became Django Braces.

The name's a joke on a couple of different levels.

It got really weird in meta, so, like, I don't even try to explain it anymore.

But it's just called Braces.

And so it's a whole bunch of mixins that make class-based views easier to use.

So you can make it to where your view requires that the user is authenticated, that they're part of a certain group, that they're a super user, that they pass some arbitrary test.

And then we got a bit further in making it to where you could use class attributes to specify the fields used for a select-related or a prefect-related.

So just stuff like that to make class-based views just nicer to use, to where you don't have to write all that stuff yourself constantly.

Back in the day, this was one of my main packages.

Whenever I started a Django project, it was install Django, install Django braces, install – there was another one I used called model utils.

And these were like – it was phenomenal.

So I have to say thank you retrospectively.

You're very welcome.

I used it many times.

Well, so – and actually, I don't know this.

I could look it up.

But how were they brought into Django itself?

Did you work on that, Kenneth, or did others bring the code in?

Because I know login-required mixin, I mean, most of these are now part of Django itself.

Yeah, the ones that deal with authentication.

So, like, the authentication-required or login-required superuser and group, I think, are all added in.

And those are all built on top of a common class that's, like, what is it?

I think it's access mixin.

Yeah, that rings a bell.

Basically, it's the one that just controls access.

we name things as obviously as we can um so around see what was it i was this was django

birthday so that would have been 2015 yeah django birthday was like right when it happened uh so

around django birthday um braces had gotten enough steam or classmates views themselves

had gotten enough steam that people were really invested in using them uh and some i cannot

i remember the name i i can i will put the commit into the show notes if i can find it okay um

somebody was working on effectively django braces for django as an actual patch to django

um and there was a lot of back and forth like dev chatter um and uh oh man you're gonna see

how bad my memory is for people's names mark something he was a core committer probably

still is mark tamlin anyway tamlin yeah i think so he did the postgres postgres country postgres

stuff later on i think it was him okay i think it was him i don't remember certain i'm sorry

whoever it was i'm terribly sorry i forgot your name anyway they reached out to me uh and chris

because we had written jingle braces and they went hey is this a good approach um and the code they

had was was fine it was good but there was a couple of race conditions in it to where um or

not racing this but a couple of conditions in it to where you couldn't necessarily override things

cleanly in like multiple steps or multiple places mainly around like the uh access or

it's not access the um django has a thing that's user passes test yeah which is built into the old

login required and it's a class-based view or mix in now um basically the idea is you can pass a

lambda to this thing and if your user object passes that lambda then the user's considered

good uh the way they built it and you'll have to forgive me this is five four or five years ago i

don't remember what they wrote but the way they wrote it made it to where uh it would prevent

having like multiple checks on users passing tests because you can only pass one test at a time

the way they'd written it you couldn't have multiple tests so we were like why don't you

just use what we wrote in django braces like it's bsd or mit it's open source like you can just

merge it in just take what you want and that's basically what they did so that's how those three

or four mix-ins got into django it was i don't know it was basically us just going here we did

the work take it and then they took it but that's a great story because like very often a user will

come to django developers and i say i've got an idea for a feature and um this happens on django

it also happens on rest framework a lot um but it's like people say you've got an idea for a

feature it's like well great can you put that in a third-party package and then you know that

third-party package gets take up well then we can look at bringing it into call and the great thing

about this is it gives you a playground in which to test it and if there's bugs and issues and they

can get worked out and ironed up and then we can really see you know is this useful and that and

then it can be brought in so this happened with south i guess most sort of famously the migrations

framework that that became jangles migrations i mean you know with a rewrite yeah yeah there's not

the underlying code there's a huge difference between south and jangles right but lessons

were drastically improved but the idea is exactly the same like it doesn't do much that's special

compared to south uh so i know these days you're working for o'reilly right on their platform um

and i saw i think you tweeted about this a while back that you had one of the projects you've done

is new onboarding. I was curious, that's an important thing that isn't well served in tech

in general. So I was curious kind of what you learned and where that was at, because

I know of almost no cases where people say, oh, yeah, my onboarding was a great experience.

Yeah. So I joined O'Reilly just about two years ago. And I feel like my onboarding was pretty

typical for a lot of tech companies you know you you show up at you show up at the office

for we're a remote company uh to a very large degree so you show up at the office for uh like

a week and you know you're going to meet with your manager and we have a thing called an onboarding

buddy or had uh and the idea is like you know say i'm getting hired and will you're already

established maybe you're on the team that i'm going to be joining you'd be my onboarding buddy

i'd spend a week basically you know connected at the hip to you right and uh we'd go to stand up

and you'd show me around all the code and you know we'd work on a ticket or two together and

so then i'm like i'm good to go right and i can join my own team or your team if that's the team

i'm joining whatever my thing is and i'm ready uh and that's okay it works like we've all been

through something similar to that and it works okay but it's not great um usually you know you

end up spending two or three days with like hr and it getting things set up in my case my buddy

and dude's great like no no uh no shade towards him at all but i arrived right when like a major

fire broke out on the platform and he spent four out of the five days fighting that um because it

was in a section that he was working on and so while i figured out what was where at o'reilly

and got everything sorted it wasn't the illuminating educational week that i think everyone had hoped

for um so a month or two later six months later i don't know a while later uh speaking my manager

and i was like you know our onboarding is kind of messy uh i mean like so the onboarding buddy thing

that's a really great idea but that buddy ends up spending half or more of their time working

with the new hire instead of doing sprint work which they were calculated to do a certain amount

of sprint work um and often you as a new hire are on a team that you're not actually going to be

part of so you spend a lot of time kind of sort of trying to fit in but you know you're only going

to be talking to that team for a week or two um so you're not able to make like a good like

friendships or really get to know a particular person or whatever you'll still work with them

even if you're not on the team but it's not you know that closeness so my idea was like well why

don't we have a team where all the new hires go to and they all exist they all live on this team

we're not taking time away from existing sprint work and while they're on that team they're doing

tickets from the backlogs of all the other teams the stuff that the team wants to do but never is

like never finds time to do right the the little cleanup stuff the improving test coverage stuff

uh make the deploy process better just whatever yeah but those little tasks they're really

important because you've got to you want to be actually touch the code base but without really

touching it right yeah i can go fix docs all day long i can improve code test coverage all day long

without worrying that i'm going to break something but it still shows me the code base and it teaches

me how does project a touch project b and both of them feed into project c somehow right now i get a

bigger idea of that picture yeah you still have to get your development environment running and

all of those things which right and not only do you have to get your development environment

running and at this time we were still somewhat messy on that you have to get multiple development

environments running because you have to have each project set up right we're doing microservices

You've got right permissions to run

You get it permissions. You've got to get you know, everything talking to each other in docker like all of that and often

That's a big mess

you're gonna be faster at it the more times you do it and you're gonna get to do it a whole lot while you're on

the onboarding team because

because that's all you're doing is working on other random projects and you have to go talk

to those teams and deal with prs and all that stuff because you've got to make prs to all of

their projects um and it's worked out as like a really great way for a new engineer to come into

o'reilly they're not pressured on time they're not pressured on points um there's no like velocity

tracking there's nothing like that it's just here's a bunch of tickets find one that you find

interesting and i or someone else will help you get in touch with the right people we'll review

the prs we'll try to help you get it merged and deployed whatever we have to do um we'll work on

all of that with you as someone who's dedicated just for onboarding you're not taking me away

from other work i've got nothing to do but help you um and it's worked out really well we've had

uh 20 ish people go through it uh we really only use it when we have like a lot of hires if it's

like we hired one person in the last three months we don't really bother with it but if we've got

five new hires coming in then we spin the team back up and and do onboarding for a

month or so that sounds really good that sounds you know yeah that stuff's really important i

mean i'm remembering when i was at quizlet we our goal was to have the first day someone was there

they committed code so that's like a good witness test so like i would i had a routine because we

hiring at the time. And I would swing by before work, the Apple store, get my corporate card,

corporate account, get the laptop, run all these commands, get them set up, poke someone on the

shoulder to get permissions. And even, yeah, even that was sort of the goal. And it just really

helps with, we always thought it was, you only have someone feel comfortable they're going to

be there for the first three months. So you're still kind of selling them. I mean, this is San

Francisco this a number of years back but so the idea was you know you can't just take them for

granted just because they're there and plop them down like you know just sure as small as it sounds

like coming in and being like what did I do today like oh I I committed a little bit of code and

this is all pre-docker too so um a lot harder to do that um but yeah that sounds great yeah it's

an important thing and that's also the cultural stuff right it's just like your first reference

point you're so wide-eyed and yeah um impressionable about the organization you're going to work on

yeah and i mean it we i didn't do this part at all um but hr interviewed everyone that went through

the program the onboarding afterwards and asked them like you know how how was it was it was it

positive was it negative did it make you feel more comfortable whatever and like everyone so far has

been really positive about it they've they've enjoyed their time that they spent on the

onboarding team uh they've often said they haven't had an onboarding like that anywhere else which

it's probably true i believe because i haven't heard of many people doing that

um but they also all said that they they ended up being much more comfortable when they got on

their final team they they felt like they were already good with like how our whole system works

together and they kind of knew like okay if i have a question about this aspect i go to this slack

channel and ask or i ping this one person and they they weren't you know they you lose that

shyness you have at the beginning of a new job you lose that awkwardness that's there right um

so because you're you've already talked to all these people you've already met a bunch of these

people yeah you've been there a month yeah and you've been there a month without having to do

anything that's like super stressful and if you you know it's not a one-size-fits-all we don't

say like everybody stays there for a month or two weeks or whatever it's when you feel like you're

ready to go cool you can go join your team and and we're good um so yeah everybody kind of has

their own time on that too we we let people be comfortable that sounds good can i ask you so

is the o'reilly platform is that largely built on django a bit built on django not built on django

at all um so what are you allowed to say it used to be called safari yeah uh so by by the o'reilly

platform just for anybody who's not familiar with it because it's a little pricey um it's basically

way for you to come and you can read uh books from o'reilly and a bunch of other publishers like

pearson and manning and stuff like that um and then you can also watch conference videos from

o'reilly conferences and we do like some live online training stuff like that uh so that is

built i don't have an exact number for you like exactly but it's 75 or better python and django

cool um obviously there's a lot of like sequel we have some stuff that's in ruby

some stuff that's in go but yeah like anything big almost everything you touch

yeah almost everything you touch is is python python and javascript yeah can i ask what

version of python you're on um almost everything is on 3.7 yay oh wow good for you all we do still

have a couple of things that are on 2.7 right well just because uh we just did an interview

with actually the folks at um edX uh just speaking of the education platforms and and more generally

here at Django Boston there are some talks on you know migrating from two to three because

2020 is approaching and there's you got about three months there's gonna be I think January

and February there's gonna be a lot of renewed interest in this yeah there's gonna be a lot of

panic um we have a really handy tool that we built internally we call it the chassis that is um

kind of like cookie cutter on steroids um basically you can you can run a start command

and uh tell it what kind of project you have it's a django project a javascript project you know

whatever um and it will set up all of your docker stuff for you it will set up all your kubernetes

stuff for you it will install dependent like it'll do basically everything wow um and so because of

that we can push out like, hey, everybody, the chassis now has the newest version of Django and

Python 3.7 point whatever, right? And all that the engineers have to do, any like, you know,

one of them per project, they go in, they basically run a Docker compose build pull to pull down the

newest version of the chassis image. They run like a region, which regenerates their Docker

compose files and kubernetes files if it needs to be and they deploy and that's it and now they're

on the newest version so like it's 10 minutes from us putting out a new version of the chassis to

literally every team being right but assuming their application code is compatible right there's that

one little there well yeah they have to run tests and all that stuff but most of our apps are stock

django and django rest framework kind of stuff they're not super complex or fragile so most of

the time it gets by just fine we've actually had more we've had more things fail with pi test

upgrades than we have django upgrades yeah i mean there you go there you go well no but pi test have

been quite aggressive in breaking stuff so all for the progress but yeah you know no all of us you

know yeah no shade toward them at all but like you will get a point release of pi test that has

like eight new features and suddenly a fixture doesn't work anymore and good luck finding that

one in you know less than a couple of but like we've had um builds on say django crispy form

django crispy forms is mature as you want and stable and it could you know there'll be a new

release before before 3.0 and you know it's just ticking away and there's like one release per

major version of django and and like all of a sudden the pl come in and it's broken why pi

test upgraded okay all right let's fix that so yeah yeah yeah i love pi test but sometimes those

updates but that's stupid i was going to say on the django thing if you not if you haven't gone

right down into custom modern fields and using internal apis that aren't really documented that

that upgrade process now is just you know you there's no reason not to keep up as i say every

wake on this yeah yes carlton and i internally channel um david hennemeyer hansen came on

recently and we talked about this at length you know in the rails world in the django world and

he uh what was it what was his saying carlton upgrade your yeah fngs so in our head we're

always thinking about that um uh so yeah you should you should upgrade uh so i i also wanted

to ask, so O'Reilly is a teaching platform and you had spent, I think, a couple of years at

Treehouse and maybe some other areas. So I'm wondering, what was it like, what's it like for

you going from, you know, teaching full-time to engineering? Is that something, because obviously

I think about this, is that something that you see as a back and forth or what are your thoughts on

that? Because that's the challenge with teaching this stuff is it changes all the time. It's not

math. So, you know, every time you spend teaching in a way you're kind of getting stale and rusty

on not working on bleeding edge stuff yeah i it was definitely not necessarily weird but it was

it was very i felt very new going back to being an engineer i spent about three and a half years

at treehouse and i spent about a half a year doing uh corporate training before that okay

so i had about four years of not really writing code other than as i mean well you've written

several books you know you know how it is when you you write code but it's it's illustrative

code right it's it's some small project right it feels like toy apps for forever and everything is

clean because you control everything and there's nothing uh it feels like it's not real to worry

about yeah it doesn't feel real yeah yeah no matter how complete the thing you build is it

always feels not real because you conceived of the entire thing from beginning to end and you

built the entire thing from beginning to end in a process that's replicable and it's like gonna

right a teaching teaching first yeah idea with the code yeah yeah so going back to dev where

it's messy and real yeah i felt very new to to engineering uh i could obviously read and write

the code no problem but like dealing with the scope of things was often a little strange um

but it's also nice in a way that you can also just focus on one area and go deep because you

have to because it's blocking something I mean that's you know I feel like I miss having to go

deep on stuff because I have to maintain all these other things and you know so it's all trade-offs

but these are some of these trade-offs I hadn't anticipated but you've you're further along on

this journey than I am so yeah I mean it's also been strange because like being back at O'Reilly

being back as an engineer I'm obviously doing more engineering but being you know older and

uh ideally wiser um but having done this for so long i'm starting to find like the things that i

like to do the things i don't like to do you know if i have my choice between teaching and

programming i'm going to choose teaching every single time um but as an engineer that's not a

question i really get so that's led to like the onboarding group to um you know considering going

into management um trying to do other things to scratch that teaching it uh but yeah it's made it

to where like going back into the engineering is great i've enjoyed writing code again but i've

come to realize it's not the thing i want to do all the time right which is a weird thing for a

lot of younger programmers because you kind of get taught that like well you should be eating and

sleeping and breathing code like all day long surely you have 18 side projects going on and

you know what do you mean you're dating someone how do you have time for dating you should be

writing code like you can date a programmer right yeah well um we'll link in the show notes um

carlton actually we've carlton i first connected because he gave a talk i think just last year at

jingles on europe year before um it was in heidelberg 2017 okay anyways on being you know

programmer of a certain age um and well and i i think of that in the context i'm curious what

what you both think in that there's this idea that in any area of expertise somewhere around

five years plus or minus you've you know you haven't gotten your 10 000 hours but you've

the newness has worn off you you you kind of understand how hard things are to do and

you sort of need to redefine um why you're doing it find new reasons to do it i i see that a lot

with programmers too.

I mean, and I'm probably in that boat a little bit too.

You know, if I was gonna write just code eight hours a day,

I don't know, you know, it's not quite, you know,

when I was starting out, that was fantastic,

do more and more, but now,

I don't know if it's I'm interested in deeper questions

or I see the limits of my own ability,

but, you know, I think,

think it's extremely common and just people don't really talk about it but you know if 5 10 15 years

in i think the things you're interested in have to and do change um and it's not for everyone just

to have pure code in part because if you work in organizations you see that code is often

not where the problem is it's management it's onboarding it's all these soft things but you

have to be even from an engineering point of view it's not it's not just code it's about the design

of the software that you're building and it's about it making sure that it meets the actual

needs that really are rather than something you came up with in your head and like a junior yeah

brilliant stick them at the keyboard get them banging it out but more experienced engineers

are there in meetings designing the software and coming up with coming up with how it's going to

work and that's part that's just as part as just as much of the software crafting process as actually

you know opening up the editor and writing some code well i think it's the burden of knowledge

in a way because when you're starting out or you're newer you just fix what's in front of you

and you don't even know about these larger concerns where you know that's why i love you know i'm sure

you've had this you know with beginners they'll email me or talk to me and say oh i want to build

this thing and they'll just list all these things and in my head i'm just calculating how painful

it's going to be all these third-party apis they're so excited but like that's great like i'm just i've

got scar tissue around it. Right. So I have to balance my knowledge with like, well, maybe it's

doable. Maybe it's exciting instead of thinking about, oh God, like how hard it's going to be.

And that's a little bit, I think at least I'm kind of at that point where I'm like, yeah,

I could do basically anything, but I kind of know how hard a lot of that is. And so it makes it

maybe a little bit less exciting than it would be if I didn't know more of how the sausage is made.

Yeah, it's been an interesting thing. I have a couple of fairly junior programmers that I mentor, just completely like outside of work, just divorced from anything. And with one of them, especially the idea of like, you need to sit down and plan your software before you start building it is like this horrible thorn in their side.

and this thing that they just cannot deal with doing and like they'll do it obviously because

you know like it's a good idea you're supposed to do it and i you know i'm helping them and

walking them through and stuff but like that idea didn't really enter their mind right like

they gave themselves like a bullet list and then that was kind of it and it's like well that's cool

that's great for like your script like your your first rough pass-through version but when you want

to build something that's like uh you know a sass product or uh some other kind of like thing

actually being used by humans for money you generally have to go a little further than a

bullet list and so like sitting down with them and thinking through like okay how are you how

is this part going to work how can i get from a to b and still get the thing i want done um was i

feel like it was fairly eye-opening for them and i mean and for me as well with the like you're

saying like the junior programmers don't they don't know how the sausage is made they don't

they're just excited to build something they just want to make something yeah they're like driving

a car at night with head beams and you know yeah it's exciting stay on the road but um so i yeah

and i i wonder how much of that is is it an attitude shift or is it just a knowledge thing

where it just doesn't even it doesn't even occur to them to ask these questions what it's what

could possibly go wrong what could possibly go wrong i'm just writing software this is logic

yeah good at logic puzzles yeah what could possibly go wrong oh my as you fall off the

cliff right well yeah and then like everybody who's been doing it a while has been on these

projects which have just yeah exploded but they didn't know that before they were like yeah we're

gonna build this thing and it's gonna be amazing right yeah oh my word yeah you get better at

seeing the everybody the longer you've been doing it like in the beginning everything's foggy there's

no cliffs there's never been a cliff what's a cliff and then you do it for five ten years and

you're like oh my god we are going to die on any step we take right how do we not right why do why

yes then you just sit in silence like a sort of you know enlightened lotus position yeah

why aren't you programming yeah because i'm thinking what are you thinking about all the

horrible things well i mean so you uh you have a newsletter which um we'll link to i have one

episode of the news or one issue of a newsletter you know what it's a oh everyone's gonna right

i watch carlton's talk right he blogs once a year kind of thing it's the same thing for me yeah yeah

yeah yeah yeah exactly exactly way to sell it way to sell well way to sell that newsletter

under promise over delivered right it's a good it's a good issue when it comes you know yeah

well i was i was gonna say though i feel like in many ways i'm the inverse of most developers and

yourself included where i started off not in tech and then i was in business and then i was in

management and i'm sliding backwards into you know developer on teams and now solo developer

um so i find this it's interesting to me that you think management might sound interesting

let me just say that but i think that's because i have all the scar tissue from it where i

i see the need then i just go you know sometimes i'm fighting with code and i'm like well at least

it's not uh at least it's all my yeah yeah well you know i mean we all all of us have kids you

know i have kids it's like i don't need more work kids to deal with sure uh you know you need

parents but um and i guess so it's like anything right like when you have experience doing it you

realize how important it is but also how much work it is to do um and it's um and i would say you

know and probably this is the teacher in me which you can relate to i mean managing someone and a

group to get somewhere is more rewarding than doing it myself but it is harder yeah right like

i you can't control people as well as you can control code like that's as i get older i'm like

well code kind of works like there is an answer out there but these real questions are just like

who knows like yeah so i guess i'm just i'm just speaking out loud but i um i'm encouraged that

you're going the opposite track as i've gone because i'm like what are you doing yeah i mean

it's i've been reading as i'm getting more interested in management and actually yesterday

i got it was official i've been promoted to a dev lead team lead nice congrats i've had like

four different names for what this title is so i don't even know how to describe it um basically

i'm in promotions and promotion i'm in charge of the care and feeding of a group of developers

but i'm not their manager which is important um well well played anyway as i move into this uh

and i read more about it investigate more into it um yeah there really is this kind of dichotomy

kind of thing where it's like you have the the engineers that that want to go into management

like myself and then you have the engineers that are like i would never be caught dead in management

and i know a lot of those like there's tons of those people um right i don't know i don't i

don't know why it's like oh i want to do management i think it's just that it's it's much closer to my

ideal of being this teachery kind of thing but still working in like corporate america

because i can't get a position as just like you're gonna teach stuff to people we've hired

um i know it exists assuming that's assuming that's the case yeah well i think i mean just

as we were you know we were saying about losing your skills when you're teaching that's the that's

the problem with management is you go uh manage for you know sure and then you have to manage

and code and then you know in two years you have to go to another job and you're like what are you

going to hire me for? Engineering manager? Great. Okay. Pass all these coding tests. And you're

like, well, I haven't actually coded much in the last two years. Like, yeah, yeah, yeah. But you

still need to pass the test. So there is this like fear that like, once you switch over, you can't go

back. And I don't think that's true because I think you forget how much you actually know, but

that's definitely the, the problem is people become a manager, but then also have to do coding. And

then they're doing two jobs and then they get burned out. And I've had friends who were, I mean,

I worked with them at Quizlet when they were in college, and now they're like 27 and managers at Stripe and stuff.

And they've already gone through this process of being promoted up to managers and then burning out and then going into a new company as an independent solo contributor for a year.

And now they're in management again.

But I almost think that maybe that's the natural way to do it is to have that flow.

Because when they're managing, they're just working crazy hours.

And when they're a developer, you know, they can work a lot less and get paid more and it feels better.

So, yeah, I don't know.

It's not a static thing, I guess.

Even for people who I consider to be really good managers.

And that's partly what makes them good managers is that they haven't spent 10 years, you know, running sprints.

They're still doing the sausage themselves.

Yeah, I don't know.

I mean, I think there's a lot to be said for the managers that have that, um, recent relevant

experience.

Um, and I, I think there's, I've been reading, um, a book called the manager's path camera.

If it's manager path, manager's path, uh, by, I think it's a Camille Fournier, something

like that.

Uh, it's really, really good book.

Uh, awesome book.

i've been reading it stupidly slowly um because every once in a while i have time to read um but

a really good book so far and she talks about how i think it was her it may have been charity majors

on twitter it's one of those two we can look at let's talk about how like you shouldn't really

be a manager for more than two years and after two years you should go back to being an independent

contributor so that you keep your coding chops right you you keep up to date with stuff

right i don't think that's a bad approach i think that makes a lot of sense of having

this like management's the thing you do for a few years and then you go back and then maybe

you go back to management that's cool because you're ideally still a good manager but you're

able to dip back in and get that relevant real experience in your company i think it also would

help if we didn't do tech

management like we do tech employment

which is badly

because we have an industry that burns

people out really really

fast and really really hard

and

those need to be fixed

we shouldn't

be burning people out like that

it's honestly one of the things I love the best about

O'Reilly we have people that retire

every year at like 30 years of being

at O'Reilly we have engineering

managers and engineers that have been there

for a decade or better that's insane in modern tech companies right like what's the longest tenure

at you know like twitter five six years other than you know ceo what's the vesting schedule

oh well yeah it's probably whatever the vesting schedule is right so because you hit that vet you

hit that cliff and then you're gonna you're gonna go well in startup land i think i heard is something

like it's under two years the average um i think for startups it's like 18 months yeah yeah but

But part of this is even, I have a friend who works at a hospital on the business side.

And part of it is companies don't promote internally.

So he's worked at this same big place here in Boston for 10 years.

He works two years.

He leaves and does something else for a year and comes back.

And that way he gets bumped up 15% every time.

Otherwise, he'd be stuck at 2% a year.

And same thing with startups. Because I've managed people and been like, hey, we need to pay this person more. It's like, nope, don't have money for them, so we lose them. And then someone else comes in and we can jack that person up. It's like only when you're hired can you actually get paid what you're worth. And so aside from the culture, just the pay is a problem where most companies don't pay people what they're worth and undervalue how much it costs to lose someone and train someone.

And for me personally, being a manager, managing sounds good, but hiring, I did that for two years at Quizlet. I don't want to do that again. That's so much work and so soul-sucking. Not soul-sucking, it's just so much work to do. And then when I think of manager, I think of hiring, and that's hard.

I have not had to do hiring yet. Obviously, we've done interviewing things like that, but I haven't done hiring or firing. So I can imagine that that's pretty stressful and a lot to deal with.

uh i can't say though at the moment i'll come back once i've done some hiring and firing and

we'll talk about it then and find out what's up i also wanted to mention um for listeners so both

you and carlton work out of a home office though i think carlton you're in your home and you're in

a brand new place which last time i spoke with you last fall was clean and now you have

accumulated stuff it's like a dedicated shed there's things everywhere you have a dedicated

place though right yeah um we when we bought our house we it had like a garage attached to it um

and we never really used it we we park our one vehicle outside and the garage was kind of just a

junk collection area um and then i've got two kids and we only have three bedrooms and i was

using one bedroom as an office that's not enough rooms for people uh so um we converted about three

quarters of our garage into new living space so we've got like a laundry area my wife has an area

for crafting and then i have a dedicated fairly soundproofed office um my plan is to use it for

filming video courses uh myself but uh that has not happened at all yet uh so it's just my office

and yeah it's kind of a mess right now um there's like uh i got a poster on the wall which i don't

think you can see in the current video no we can see there you go there's a poster uh there is a

cut out of me on the wall for placement of a camera later uh there's climbing gear there's

board games there's keyboards there's just stuff it's a mess it's a giant mess yeah that's well i

guess i find it interesting how people get their best work done and it varies for everyone and i

think also again when you've been doing it as long as all three of us have you find out what works

for you and um you know like i mean for myself i think i've i haven't taken advantage of the

flexibility that i have so i'm partly like working from home sounds good if i could like take breaks

all the time but um having little kids they don't respect my boundaries no but they go to school

right your children go to school um yeah but so and so when they're at school you work so my kids

leave eight o'clock in the morning so five past eight i'm at the computer i'm there till you know

gone 12 that's solid that's my time that's my like core you know and it's silent there's nobody here

and but you know every hour my computer tells me to stand up so i go and you know hang up the

washing put make some bread you know have a coffee whatever i've got all that time and all that

flexibility but i've got that solid block of you know really concentrated work much more so than

i ever had the few times i've worked in an office where everyone's like oh you know let's want a

coffee want to chat like no i don't want to chat i want to work why because i want to stop why do

i want to work because i want to stop working when the you know time comes and i want to go and live

my life i don't want to be stuck here till 10 o'clock at night because i messed around the

water you don't play starcraft after work no no i don't want to we're just gonna start i want to

spend time with my family angry engineers podcast it's not it's not angry it's just wisdom no but

this is this is you know but this is the thing right you talked about the industry and the way

we employ people and the way it kills people but like we have this culture where they have you know

your remote work's not allowed you have to come into this office and this office is like a um i

want to say a boiler room of stress and you know and your commitment and they're like you know why

don't you socialize with your work people after work no why don't you go home and socialize with

your friends and family and then when you come to work you can be at work like why don't we have

that healthy separation well yeah i'm curious as a manager what you think i mean my observation

is that from a distance code is as close as you'll get to being able to tell what work is because you

can just read the commits but it's still the case that attitude and butt in seat is the easiest

proxy for hard worker even with code because if you're managing a bunch of people you can't

you you're probably not doing code reviews of all their code so it's like a it's just it's just hard

to manage people i think it's hard to know what someone's actually doing even with code from my

experience i mean i don't know what your thoughts are i don't really feel like code is the work of

programming code is the artifact of programming the work of programming is thinking that doesn't

require my butt to be in any particular place just requires me to think because i mean like that's

that's programming is problem solving right like that's all it is it's it's literally i have these

inputs and i need to make that output how do i do that and i connect dots in the middle somewhere

right so programming is thinking programming isn't writing code programming isn't drawing

uml diagrams or anything like that programming is thinking right it maybe it's notes on paper

maybe you write down your notes in a text editor maybe you lather to a friend as a rubber duck

whatever you you think and eventually you create some sort of artifact which is probably code but

may or may not be maybe it's a google doc maybe it's a readme maybe it's an api blueprint i don't

know whatever um so like i don't feel like butts need to be in seats for that i i feel like if

there's any job that can be 100 remote it is definitely programming because it requires

nothing it requires an internet connection on a laptop that's basically it right um well maybe

maybe we'll talk about this in a year or two i mean just from my experience even managing a small

team of a half dozen people even then it is hard to separate the work from you know these more

intrinsic indicators i would say i i think a lot of it comes down to to culture of the companies

because like O'Reilly's been pretty good about this.

Treehouse was really good about this of

if you're gonna be a remote company, it's remote first.

Everything is done remote.

There are no in-office meetings

that don't include a video call of some kind.

No notes get taken anywhere but like Google Docs, right?

Conversations happen on Slack

and you pay for Slack so that history persists.

Those kinds of things, you do everything remote,

you do everything async

uh and that way you've built up this trust in your employees and in and them in like their

managers or just management in general that everything is in the open they can see what's

going on they may not have you know the latest budget numbers but they understand that this

decision got made and here's what was made and here were the arguments and the questions before

and this is what we're going to do because there's a link to this library or there's a google doc

about it or the code's been written and they just have to look at a pr um so i think that i think

that adds a whole lot to the business working well with remote yeah i think it's hard to not be remote

first i i've known several places that tacked on remote and they all just it was horrible at every

one of them no it never works yeah yeah it never works so as a teacher how do you rec what would

you recommend to someone who's new to web development or django what kind of approach

would you recommend given that you've taught and you you mentor people now um where to start

yeah so i'll tee one up so how much python do you need before you dive into django um

you should have uh you should be comfortable with like importing you should you should be

able to to understand how imports work where the thing is coming from uh i think you should be

comfortable with classes at least that they exist and like the difference between different kinds

of attributes and methods um not as much now i used to say you need to be able to read regex even

if you can't write them but with the path stuff that we have now for urls it's much less of a

problem um and other than that so long as you know what like the different basic data types are

and functions are like you kind of don't really need anything else for django django's django is

large but django is fairly simple once you get under the hood um and it's just python there's

nothing now that admin has been made fairly sane python there's nothing magical inside django

anymore um admin for a long time was the one last magical spot but i think most of that's gone now

right carlton it's still you know it's it's amazingly powerful and so because it's powerful

it takes a lot quite a lot of effort to work through but you know if you just if you're just

using the admin i mean you know there's a difference between the the surface area where

you have to go and look up the options versus digging inside it yeah um but yeah i don't i

don't think you have to know a huge amount of python for django i think you can start off pretty

simple um i think the one learning thing i have that's weird to a lot of people is i don't think

python or whatever should be the first language you learn i think the first programming language

you learn should be sql because yeah we are used to sql right you you go to a restaurant and you

order something off a menu and you tell the waiter what to bring you which is exactly how sql works

as opposed to programming languages where you tell the waiter how to make your meal right sql you just

say i want this thing give it to me and the waiter but also as well with jack that's a great suggestion

actually because with the django orm like the basic filters you can get those without sql but

then there's more expression more um newer features that have come on like uh window functions and

expressions api and the the kind if you know how they map down to the underlying sql which if you

learn sql from a from a newish book you will learn all that stuff then it makes much more sense and

then you can really get the power out of the orm you know the orm is super sophisticated and lots

of people aren't getting the full out of it because they don't know the underlying sql i guess yeah

Well, and you can learn the basics of SQL in a day, certainly a week.

Yeah, a day or two.

Yeah.

There's a PG exercises thing, which is great.

Yeah.

Well, I guess as we go out, what resources do you recommend for learning SQL?

Because there's a million books and things, but I don't know if there's that many great ones from my experience.

It has been quite a while since I've read SQL, since I've learned SQL.

There is...

Sorry, go on.

I was just going to say there's a site I run is a JavaScript implementation, SQLJS.org.

So you can play around without having to worry about loading up a database in SQL, which a lot of times that's the biggest hurdle for folks.

There's other JavaScript emulators, but I'll link to that in the show notes.

But if you just want to, you can import a file and, you know, you can do it just in the browser.

there's a super site called pg exercises postgresql exercises.com pg exercises.com

which um talks you through you know getting started with postgres and sequel with postgres

and so i recommend that it's good oh good i didn't know about that one no yeah i don't know

that i have any sequel specific ones unfortunately after i go you should learn sequel first but i

there are a lot of like um if you go look a lot of the the like data science oriented um

like boot camps or training sites like um like data camp or data quest things like that a lot

of them often have really good sequel guides as well uh often aimed more at getting data analysis

out of sequel than just like querying for records but you'll still learn how to query for records

because you have to be able to query to get data out.

Oh, and there was an amazing thing as well,

which came up today.

So I've got to check this out,

but there was a detective story

based on a SQLite database.

So you have to solve the crime by querying the database.

And then Simon Willison's wrapped it up in Dataset

so you can browse Dataset.

I'll find, browse it in, use Dataset,

enter the thing and you solve the crime.

I saw that came through today.

We'll put that in the show notes.

That came out yesterday.

Yeah, that looks amazing.

Sequel, murder mystery, and data set.

Oh, yeah, I saw that.

Oh, what a fantastic idea.

Yeah, let's put that in the show notes

because that looks just awesome.

That is an excellent idea.

Occasionally, Simon has a good idea.

Occasionally, like about four times a day.

Anyway.

Well, Kenneth, thank you so much

for taking the time to come on.

I think it'll be...

I've learned some stuff.

I think it'll help others

to just hear about what it's like

to be an experienced dev to be a teacher and and working at a place like o'reilly that um seems to

get a lot of this stuff right yeah i am very glad to be here and to share what i can well thanks for

coming thanks for having me all right we'll see everyone next time bye bye bye