Transcript: From Beginner to Software Engineering Manager - Raymond Traylor
Hi, welcome to Django Chat, a fortnightly podcast on the Django web framework. I'm Will Vincent,
joined by Carlton Gibson. Hi, Carlton. Hello again, Will. And this episode,
we are joined by Ray Traylor. Ray, welcome to the show. Thank you. Thanks for coming on.
So we connected by email. I think you'd read some of my books and mentioned you're a little
bit earlier in your programming career. So we really wanted to have you come on and talk about
your journey learning programming learning Django and where you are today because I think that will
resonate with a lot of listeners so maybe let's talk about programming you know before we get to
Django how did you get into tech and programming what's your origin story as it were yeah absolutely
when I first started emailing you I don't think your books even came out yet I think it was just
on the blog yeah you were you were early days I was looking it was it was like 2018 or um it was
way way back when yeah exactly and so back then it was just searching google going through the
struggle of i mean of course you start with the polls tutorial and early on in programming reading
the docs is pretty difficult so you have to find tutorials from people right so i came across your
site and it really helped me a ton so i started just emailing to ask questions i think going
through, I got stuck at a couple places. And that's when sometimes just reach out. And someone
who's willing to put their work out on a blog often will reply back. So that helped a ton. And
talking to you about just the site and everything that you were building towards, including going
to the books, I know you're talking about doing video. Ultimately, we have this podcast,
so it kind of comes full circle. But the journey definitely started from just asking questions and
working through my bugs. And believe it or not, you really got me over the hump for Django. I
don't think I would have been able to rock it without you. I appreciate that. I, you know,
when I wrote the site and the blog posts, it's because I was just a couple years before you in
that journey. And so, you know, when I finally had some understanding, I thought, well, how could I
I've saved myself time and what were the sticking points.
And that's one of the things I love emailing with people who read my books or blog posts is because it's different for everyone.
There's always new things, you know, that there are some things that trip people up and then there's new things.
And it's all getting to the same place of some understanding of Django.
You know, we can't all be Django fellows like Carlton, but I'm just the janitor.
Do you, so I'm trying to think, so why were you, so why Django?
You know, what, why did you, you know, why web programming and why Django in particular?
How'd you get to that point?
I should actually start way back.
Okay.
Yeah, please.
I was super late to programming.
I actually didn't know what it was at all.
Uh, I think I, well, age wise, maybe not.
I think I started at like 24, 25.
Yeah.
You're ahead of me.
Yeah.
but I didn't know what it was. Like I just had no concept of what programming was. Of course,
I knew what computers were, what the internet was, um, even websites, but a website to me was just,
you know, HTML and some pictures. I mean, it's just another half wrong. Yeah. It's just another
form of like a, a word document or PDF is, is how I saw it. But to actually make applications,
I never even thought of it. Right. But like a lot of people, I think the social network movie was like, oh, that's what coding is.
You know, that's what you use to to make Facebook. So I was working as a salesperson at the time for Comcast business and sales pays a lot.
but that industry it's up and down like you have great months and then even if you're having a
great month they change the comp plan or it's really not a stable career so then it's good
for a couple years and then you go to the next company the next company we do that in programming
but at least you don't have the ups and downs and it's more our choice than the company's choice
right um so i picked up um learn python the hard way it's one of those you just google how do you
learn how to program. Yeah. I think it was still free back when you were looking through. Yeah.
And it was free. Um, so starting that way, it was really just Googling what language should
you choose? So it's always the JavaScript versus Python. Now I think back then it was more PHP was
still pretty big. Um, Ruby was Ruby and rails, I think, depending on your timing, I think,
i mean because for me when i started in earnest it was 2012 um in earnest i say building like
complex websites beyond html css just just while there's a moment because i think php is still
pretty big like i think like you know more than half of all web applications are run with it it's
funny how like it doesn't seem to have the mind share like it did but it's still like you know
massive in yeah i definitely should say in the context of you're a beginner just googling
what programming to learn uh plus php gets so much hate uh unsustifiably in my opinion
yeah no agreed agreed so i chose python because they just said it was easier for beginners you
you could do data science, you could do so much for it. If you read maybe a hundred blog posts
of which first language should you use? I think especially then Python was the obvious choice.
And I'm obviously happy that I chose it. So where do you start? Looking at books,
looking at everything. But what I liked about learn Python the hard way is if you just read
the introduction and I go back a few times, he's really harsh. He's telling you how hard it's going
to be and don't be lazy. Don't copy and paste. This is going to be really tough and start at
the basics. So even going with the command line and learning a little bit of Linux and, you know,
just your CD and LS and things that if you've always used a Mac or Windows, you never came
across you never open up the terminal right yeah it's a whole new world so doing that put me in the
right mindset of this is going to be hard and it was really difficult to work through it but he's
very encouraging to try again and try again um along those lines two other articles i came across
um eric raymond's it's called how to be a hacker should be pretty famous um it's very opinionated
but uh he really gets into the culture of it what it means um and it gets it's kind of the opposite
of your social network tech bro sort of thing it's maybe the the 1970s style programming he
really brings the essence of that but he links to another article um from peter norvig called
teach yourself programming in 10 years yeah I know that one yeah that's good because that's
the one that begins about the learn it in four hours type thing learn it in 24 hours learn it
yeah exactly and so between those three things I got the right mindset of instead of I'm just
going to learn some javascript and make some websites and maybe attend a boot camp and then
I'm going to be a coding ninja and I'm going to make a ton of money and that's it
I felt like I really got the fundamentals down even if not from a computer science standpoint
but from a take programming seriously take your time learn it thoroughly
and with that that was that was the start of being able to do some basic things that doesn't
get me to web programming yet there's a little bit more of a journey to get there that's a good
nice introduction it's like you know if you kind of think sit back and think well you know if i
could persuade somebody what's the what the quote unquote right things to read those those selections
would be good because i mean part of it's like perseverance like you know you start you get a
file open you're writing some stuff it just doesn't work and i wonder how much it also is
your i mean obviously your um your your personality and temperament but you know your age and that
coming at it as an adult, there is more of an expectation that things are hard. Whereas if
you're 12 years old or something, I think maybe you're more inclined to just throw stuff on the
wall and, you know, build whatever quick site you want without thinking about the underlying things
that as you get older, right? You see that again and again and field after field. So that may have
been an advantage for you actually. Yeah. So doing sales and entrepreneurship, which I could get into
little bit it prepares you for the rejection and doing something hard and putting in a ton of long
hours but the difficulty of programming is unique that's a frustration that i haven't seen replicated
in any other way when you can't get something to work and when you're banging your head on the
keyboard and when you swear that you're right and the computer's wrong right right i mean obviously
the joy that comes from when you've been working on a bug that i mean you just did a typo right
yeah but there is an answer right it's like you know that it it is out there yeah and i think that
that was one of the lessons too of figuring out how long you should bang your head on it
and figure it out yourself and Google forever versus asking and when to ask and how to ask.
I definitely slowed down my journey by trying to do everything myself rather than reaching out.
But I think by the time I started to email you and I actually should have emailed more people
or asked more people, but I think you were one of the very, very few people who I actually
reached out to. And I feel like I would have figured it out, those early problems. But
it really might have been three months. Sometimes you put it down.
Yeah, I did it wrong. I mean, I pretty much locked myself in a room for two years to build
a startup I had in mind. And it's kind of amazing I built it. But now, how long would it take me to
build it? Weeks. So it's great that you reached out. I think I wasn't as prone to reaching out
because I didn't realize that, as you say, if someone takes the time to write a blog post,
they probably will respond, actually. Yeah. And then, right. And the thing you don't know when
you're younger is, yeah, what's like a truly hard problem? And what's something that's common that
you're just not seeing? And so you shouldn't spend three months on. Exactly. Yeah. So from there,
I'm working this job, this sales job, and learning Python the hard way on the side.
And I've worked for myself and then sales jobs and then worked for myself and then sales jobs.
And I was ready to quit the sales job.
So I quit the sales job, started.
Well, it took me a while to kind of figure it out, but I got back into e-commerce.
I came up with an idea that's not really original now, but I was arbitraging between e-commerce platforms.
So the simplest way to explain it is to buy from Amazon and sell on eBay.
And the twist to it is the customer would buy first, and then I'd buy it from Amazon.
It's like high-frequency trading, just arbitrage, the difference.
And I actually was inspired by high-frequency trading, that book Flash Boys by Michael Lewis.
arbitrage and speed and obviously prices change all the time and things get sold
out so you could start out by hand you can kind of manage a hundred products or
so and then I started hiring outsourcers on Odesk which is up work now so that
was sustainable a little bit while I'm sleep in America they're up in
in Bangladesh or the Philippines. And the prices were, I mean, I'm ashamed to say it was
50 cents to $3 an hour, but it was just copying and pasting, you know, the titles of the products,
the pictures and updating the pricing. And as you can see, to jump from me doing it myself to
outsourcers, that's a great case for software. So my first software that I actually went into
application was uh to automate doing arbitrage between markets to update the prices to order
the products so that's not a simple thing i mean that's that's a web scraper that's cron jobs
that's a website like that's a whole bunch of stuff exactly but i was i was much more rudimentary
than that, right? So all I have is the basic, basic level of Python. I know how to use a command line.
I know for loops. I don't even know if I was even using functions yet. I certainly didn't know
classes. But I came across a program called Sikuli. And Sikuli is for some language, I don't
know what language it's in, but it means something to the effect of like all saying I or something
like that but what that does is you know how you have browser automation like a puppeteer but it
does this for your whole computer so anything that you can see on your computer you could
automate for it but they use python as a language and you don't need anything special you could just
take a screenshot of a button put that there and then they used some of their own keywords like
click or type or so I could get the computer to do what I was doing. Um, and what the outsourcers
were doing. And that really got me into a good mindset for programming because doing that
intermediate step of having outsourcers, I had to give them instructions. And when you have a
language barrier and time difference. And of course they're getting paid not that much. You
have to make it as simple as possible. So I had to really write out step-by-step and then making
videos of you do this and do this and then do this. But after I discovered Sikuli, then I could
do it myself. So I was using windows back then the software actually worked better on Mac and I could
get it to work but my programming skills were so bad and the software was kind of finicky
and then my internet connection was so slow that we're like literally i'm not scraping
amazon.com i'm literally having this program go on a real browser and the different timing so if
i'm saying click this button in one second but it takes the page three seconds to load then the
program breaks this is very reminiscent of the selenium tests that we had for the django admin
it's like you know you if if the pop-up hasn't shown yet this test breaks and do you know yeah
so but i was able to use python it was a real application and it actually made me money and i
would be so frustrated because it would stop every 20 minutes and then it would stop every couple
hours but the business was doing well i mean i'm making the arbitrage wasn't huge but i'm making
like $2 per product and I'm selling, you know, from 20 on up to a hundred on up to a lot more
products per day so I can afford the business. It's sustainable. Um, so I started fixing problems.
The only way I knew how, which wasn't learn more programming, it was scale up by brute force and
money. So I ended up a gigabit internet had just came out and I was going to move to Kansas
city to google's fire yeah yeah in order to get it but i found in an obscure newspaper
in denver i don't even remember the name i lived in denver and they had they said that gigabit was
coming from some internet provider i never heard of but it was only at this one office park in
golden colorado so i went and signed a three-year lease at this office just so i could get gigabit
So instead of waiting three seconds for Amazon.com to load,
it would load in a half a second.
So seeing the difference between your at home broadband versus fiber optic cable, it's just a world of difference.
It just works. Right. So I got the office and then I was annoyed that I was commuting like 45 minutes to an hour just to get to the office, just to fix my broken program.
So I got an apartment next to it and they had horribly slow Internet.
That was a block away from the office that the fastest Internet in the world or at least I had access to.
So I'm going back and forth to the office, and the other scaling was I bought more MacBook Airs.
So it started with one, and then three, and then seven, ten.
I ended up with 32 MacBook Airs right across the floor.
Well, I know a little something about web scraping.
Why were you using so many different – is it because you weren't – so you wouldn't get blocked for, like, IP address hitting them, or what was the –
No, not even that far.
because it wasn't actually scraping the computer was literally just on the chrome web browser just
refreshing the page and just going through a list of url so it wasn't even scraping it was
just the computer and the browser running and python was doing it but it was as rudimentary
as you could come well but that that's i've seen very well-funded startups that do exactly that
um because even at scale and with professional programmers um unless you're you basically like
most sites will say you we won't accept more than however many hits per hour from a given ip address
so there's more there's more elegant ways around it but an easy way is they literally
they had like yeah like mac minis they had 50 mac minis and they were just you know both both to do
it. And then also to get around the blocking on these sites. Exactly. So to kind of wrap up that
story, the annoyance was I'd have to go into the office, even though it's a block away in order to
fix my broken program. And so waking up in the middle of the night, 3am to go to the office to
fix that. I'm like, I need gigabit internet at home. So downtown Denver, it finally came. So I
got the first building in Denver that had gigabit internet. So I had an apartment downtown and then
I had the office and the business was doing just incredible. Um, and thanks to that. And I, I very
much plateaued in my programming skills. I tried to learn more. It was kind of just reading, but I
didn't really have a direction. It certainly wasn't, certainly wasn't web development. This
was automation right and i got into scraping more so of course beautiful soup and uh scrapey
that sort of thing um but like all arbitrage businesses or high frequency trading you get
squeezed out eventually competitors come in and the price goes from two dollars to 150 to
all right am i really gonna do this for five cents per product no so i was out of business
um but that's that's a glorious little period to ride that wave though that's lovely that's
my favorite business that's my favorite size i'm starting python story ever that's amazing
it lasted five years five yeah amazing yeah um it was it was a very successful business
uh so much so that when it ended abruptly i didn't take care of my last tax bill so
uh i've recently paid that off years later so that's a lesson if anybody's doing entrepreneurship
you know i had an accountant but make sure you're you're on top of it because if you're making
profit they'll get you eventually so yeah self-employment i mean i i've well carlton
knows how it is but i've certainly um yeah found that i feel like after i i spent it was like a
year to like figure out the business side of of running anything there's so many things right
there's so many things you're like oh my god and and then eventually you automate it but like nobody
kind of tells you or if they tell you it doesn't mean anything until you have to do it uh from
there you would think that i would get more into programming because it worked so well i actually
went the opposite direction. I actually hate real estate, but the price keeps going up. And it just
seems like if you're going to get rich, you need to do a startup, get into real estate or seriously
into stock. So I decided real estate. And then we had Airbnb kind of blowing up. So I decided to
move to Las Vegas and do an Airbnb business and bring in a couple of partners, one of which never
showed up, another which ended up having personal problems. So that fell on its face. I ended up
staying in one of the Airbnbs on the strip for a year. And so that was fun. But during that time,
when I'm not making that much money and spending the old money I had and couldn't come up with a
business, I was working on programming more. So not necessarily the web development, but started
reading the python books uh i really like learn python the big huge oh yeah mark lutz i think
yeah mark lux the the book is really big and it seems like it's a little bit outdated now
i mean i think it only goes up to maybe gosh that was during the python two to three
um split yeah but the fundamentals are definitely there and he explains things so
thoroughly i mean one thing just learning functions he probably spends 50 pages on it
and it's as deep as you could get so i i did learning there but it wasn't applied so nothing
really happened um after vegas i didn't have a business that i could start i didn't want to get
back into sales i ended up moving to tampa where i am now my mom retired here so it's like you know
tail between your legs, failure. Am I going to start another business? Am I going to get another
job? And I, that's when I decided, okay, I'm, I'm going to take this programming thing seriously.
You can't, of the businesses that I was trying, I found that I couldn't be an entrepreneur and
a programmer at the same time. You really had to choose one. So I decided that I wanted to
just get a programming job, not a sales job, a programming job. So a whole new career, you know,
it's, there's entrepreneurship, there were sales, and then I wanted to do programming. So that's
when, you know, it was not what programming language, but what type of programming to do
and where the jobs are is either mobile or web, or, you know, you could do kind of the Microsoft
soft stack. And I decided on web, which seemed like the right decision. And that's when I started
trying to figure out how to do it. And it was a struggle. I mean, the difference between
scripting and basic Python automation versus web development is a world of difference.
Like what, what, what are the differences? I mean, just broader in the web scope or
less resources? Well, you're actually making an application, right? So even if we just talk about
writing a one page script versus tying it together, right. Uh, and the web has,
there's so much more to it, including there's a design element, which I never really had an eye
for. I'm only on the command line and my code editor. And now, you know, we have to make
something there. Uh, it was, the struggle was, um, finding like knowing that I needed a framework
for it. So the one that was most successful, which it sounds like I was taking a dig at PHP,
but PHP was the most successful for me. It was the only thing that I could get to work.
it made sense it i didn't need a framework it was just php plus my sequel but the php is like
its whole mission is solve the web problem quickly and it always did do that well and it still does
that well and you know for all you know oh but this that and the other language feature this
language no solve the web problem quickly and it's got no you know just quickly you're in and
the number one feature and i still feel that way is it's easy to deploy you have a php site and
there's all these five dollar month hosts you could use it's so easy to host it on your carlton
someone needs to solve that for yeah yeah we will get onto that and before christmas all right don't
worry so i loved it it worked and then you know the whole wordpress ecosystem um but what i found
out pretty quickly is those jobs don't pay as much so php because it's so popular and international
and it doesn't pay so i wasn't going to be a programmer in a job to not make much i mean i'm
used to sales jobs and being a top sales person i'm here to make money and so eventually you go
into indeed to see what the jobs are paying and um definitely python pays well my next problem was
being in Tampa. So I leveled up, I read all of William's books, um, that plus two scoops of
Django plus actually getting through the polls tutorial, really reading, um, all the documentation
that I could get my hands on getting better at Python as well, making my own projects that
weren't it wasn't for profit it was for myself like I'm in a stock market investing so I made
an application to make that easier and to buy stocks even though you don't have money there's
plenty of programs that do that but I kind of had a twist to it and added some automation
I like sports betting so it's a horrible thing to do because you just lose money like everybody
loses money but if you could use fake money thanks to python uh then i made a program for that and
uh the things that django in particular solved which it took me a while to get to django uh it
was php it was javascript node it was flask i ended up liking flask because it was simple and
and you could get it going right away right and to learn the mtv well model view controller
yeah mbc versus mtv yeah exactly um that takes a little while to wrap your head around but what
stuck me to Django was, um, the library that William, you're the only person I've seen
to actually use it. And I use it all the time is all off. And now I think it's pretty,
yeah. Beginners don't know about it, but I think most of the working professionals just use it
as they should um at the two jobs that i've worked um no one had used it and it just
you know solves the problem so for php the issue at that time was learning deployment and that
solved that problem but django solved the problem of authentication which was really really difficult
for me to do on especially express and node it was it was hard to just do a login you would
think that they should be a solved problem but it's really difficult and Django and that plug-in
really makes it super easy yeah I think well Carlton I want you to expound I mean I think
part of the issue is authentication is really deep and there's lots of different ways to do it
and you know there's things Django doesn't have two-factor and some other things and so I think
like the express and other ones there there's like a cornucopia of options rather than Django
just being like here's a out of the box one for you the whole point about the batteries included
is django ships the hard batteries so you know a few years ago when they some of the contrib apps
were removed like contrib comments was taken out and you can still use django contrib comments from
the django wall but it was taken out of the core because it's like well that's kind of an easy
thing and we we need to keep it down but auth auth is really hard really hard to get right and
you know if you get it wrong that's big trouble so you know django ships that battery for you um
and it's hard to explain to someone who hasn't tried to roll their own off why that matters so
much i remember on this podcast when you two were lightly debating whether to use custom users or
the Django built-in and that's way way back bringing back memories I was into that debate
like I don't know Mac versus Windows users back in the 90s or something I was so into it and of
course I was on William's side just because I knew him more and it's like well I read all his books
but then Carlton actually writes it so which one should I listen to I just sweep the floor I just
sweep the floor um yeah i mean i've got a controversial view here is that i still use
um the the default auth user model and i still have a like a foreign key from a profile model
or a one-to-one from a profile model which i use to store extra fields and the reason i do that is
simply because when i spin up a new project i don't want to waste that like i've got some
inspiration from a new project and i don't want to waste that inspiration going oh now i need a
custom and maybe we could make the default template ship a custom user and then i maybe
at that point i might relent but i just think do you know what for me keep use the default user
model and you know use the the one to one field and just go um and that's worked very well for me
but i the docs say you use your custom model will rightly says use a custom model well i was gonna
say i've come a little more towards your side carlton because i think i mentioned that i put
the custom user model in the book, just like in the beginner's book, because I don't want people
to have to back into it, which you can do, but it gets kind of tricky. But I do take Carlton's
point, which I think he probably mentioned that podcast, which is just because you can throw
everything on user, you should keep user clean, use it for authentication. And if you want a
profile model, you can do the one-to-one foreign key. So myself, I still use the custom user model,
but i keep it really lean i actually in addition use a one-to-one foreign key for
all the rest of it so i sort of split the difference i'm still on the custom user team
yeah i mean the reality is facebook size none of this really matters so you know if you have
the problem like that's a great problem to have and it's no one agrees with me it's you know
on he's just but yeah but it's also like yeah back it's also like when you learned it right
like you know i learned yeah exactly i remember yeah learned read the docs was like okay custom
user model like let's go and you know but before that was entered it was the carlton way and
the truth is well no but there was the when swappable user models came in i'm like that's
a mistake i'm not using that oh no that's a little bit like uh uh just to jump in i really
want to ask as a beginner what you think about function-based views versus class-based views
I mean, I suspect you're biased towards what I promote, but I'm curious how you feel about that in Django coming new to it.
It took me a long time to wrap my head around class views because I think when you have that Python mentality of, you know, one way to do things and the function views just worked.
Also, what I was building, especially like with the sports betting sort of personal sites, I ended up having so much custom there that I really leaned towards it.
However, looking back on it, I really didn't understand object oriented programming that well to begin with.
So I wasn't even prepared to use classes correctly in the first place.
what got me around to it was between the two scoops of Django book, which advocates for
generic views than class views, but they have kind of over on the side, some people use
function views, right? And that's just all they use, but they made it seem like it was kind of
the minority. Uh, and then William, what you wrote, where you were leaning more towards the
class-based views, if I remember correctly. So I think so too. I think I agreed, agreed with them.
Yeah. And that's where I landed now. Uh, if you can use generic views, just use it. It makes
everything so easy and so fast. And that's really the beauty of Django. And it just depends on how
custom you're doing things but the order of you know start with generic if that doesn't work
drop down to class if you really really need custom then use the function views right and
usually there's a one-line way to update the generic custom view but you have to kind of dig
around to to figure it out so
do you agree with that carlton i mean we've had this discussion before but that's kind of the
trajectory i think i i will use a class-based view 90 of the time why because um my view
the view is like a callable it takes a request it returns a response right so that's a function but
um in that there's the steps you know first of all i need to authenticate the user then i need
to decode the you know the the request data and I need to you know hook up to the database then I
need to put all that into a template then I need to return the response and I'd like to break that
up into a nice clean way so even if I'm writing a fully custom one I'll write you know def get
you know self request args keyword args and I'll probably put the explicit keyword args I want
there I probably don't use args very often and then I'll block out the steps that I want I think
the issue that with the generic views is that they're so hard to navigate you know constantly
i've got classy class-based views open it's like it's always open and i'm always using that as my
reference and then i can see all the methods lined up and i can see the attribute i need to override
and then i'm using it and i think it's a shame that the hierarchy is so complex because i think
it it really confuses folks um tom christie's got a thing called django vanilla views which is like
simpler implementation that i really recommend people go and look and read through the code it's
only like four or five files and it's really readable and it really like okay that's a class
based view that's what you know a class based view is when you haven't got these mix-ins and
it's multiple inheritance and all these things that make it so complicated i mean um luke plant
luki spooky goes by wrote this um really good piece about um using function-based views and
i've sort of you know i need to write my sort of well what why do i use class-based views on the
base of that um but one thing he puts there which is really powerful is the thing with the function
based view is that the viewness of it is on the surface right it's a function it takes a request
it returns a response right that's um and i think unless you're writing your class-based views where
you write out the get method or the post method you're kind of like where's the view sort of
gets disappeared like it's like whoa yeah but what's it doing like it's very magical um it is
magical and i think what i like about um vanilla views tom christie's implementation of class-based
views there is that if you just look at the source code you can see exactly what what it's doing and
how it how the class-based view is built um so anyway that's a long way of saying i use class
mostly but you know i'm totally happy if other people don't whatever gets the job done right
and whatever makes sense yeah exactly yeah uh so after i read all your books william and
went through all the everything and had my you know you go through all the steps of getting
prepared to get your first programming job um your portfolio your github your everything and
So I'm ready. And then I find out that I'm in Tampa, Florida, and there's no Django jobs here and there's hardly any Python jobs like this is a I mean, the South is Java mostly or there's plenty of JavaScript.
But I was way more on the back end and I just didn't find jobs here.
So I was like, OK, well, I'll just move.
You know, there's a ton of your way in Boston, California.
It seems like where there's more startups, there's more Python, but there's not many
startups here.
And it was a totally different world before the pandemic because remote was just really
rare and it wasn't as good of a job.
And especially at the beginner, as a beginner, like my first programming job, I felt like being in the room with other developers would be really, really important.
So I'm just looking, looking, looking, and there's just nothing here.
I went on Python.org, which there is a reason why, you know, we have these sites go to the official sites, the Django project, Python.org.
but Python.org has a job board and I still subscribe to it on my RSS, but they had a
Django position in Tampa for an advertising company. I'm like, what? I don't know where
there's just, I don't think there's been anything before or since, but when I was on the job market,
When I was ready, I emailed the HR director and just in a couple of paragraphs said why I would be perfect for this job.
They brought me in for the interview.
I hit it out of the park.
I was lucky in that the VP that interviewed me also had an e-commerce background.
So, you know, talking through the, you know, what I made for it.
And then the top developer who interviewed me really appreciated my nerdiness on the type of topics we talk about on this podcast.
Right. We could have recorded that interview between me and him.
It would have been us two talking about, you know, what we should use for Django, how and why.
And that got me the job. So I got my first programming job.
I was the bottom developer and that really allowed me to focus just on programming, not having to worry about sales or entrepreneurship or customer service or whatever else.
I could just be the nerd that I was probably destined to be.
And it took me, uh, wow. I was, so the funny thing is I really took that teacher self-programming
in 10 years to heart back when I read it. The irony was it took me 10 years to get that first
job. So it was right around that time. It might've been like nine years, but it was so close that,
that that's what got me there. It's, I think the first job is the hardest. It's,
it's a problem in the in the industry like the first one to get is the hardest and then once
you have three to five years you're the most employable because you're still cheap and malleable
so the first task they put me on was as i mentioned it's an advertising company so
uh what we're building was a sass to automate and enhance digital ads so facebook and
Google ads and layer on top, say, temperature or flight prices. One of the clients was our
biggest client was Home Depot, and they were selling snowblowers. So anywhere in the United
States where it snows or going to snow, we would put out Google ads to go to Home Depot and buy a
snowblower. Uh, so that takes a lot of data collection and then to automate, to put the ads
out. And then obviously the more it snows, the more you'd spend on ads and the targeting. So
the first task they put me on was they couldn't get the Facebook API to work. And Facebook's API
is just notoriously difficult, but I was very well suited for it because I spent so much time
in eBay. Yeah, I was going to say, eBay, who's worse, eBay? Yeah, eBay's API is worse. And then
even though Amazon's API is good, there's so many restrictions because so many people want to take
all their stuff. So having all the workarounds, I was ready for it. So they put me on a task that
they thought would take two or three months if I or anybody could do a period. And I come back
and it's done in two days. I'm like, Whoa. So I start with, you know, now I'm the Facebook API
guy, which on one hand is like, Oh, how'd I get stuck with this awful API? But on the other hand,
it's keeping me employed and it is my skillset. So fine. Uh, so then I ended up being the Google
API guy and then, uh, handling the weather and flight collections and all that stuff. So I'm
doing the data, but not as much with the web development. However, that really got me to
love and appreciate Django for the backend work. So before I was writing a lot of raw SQL,
but there, you know, we were really encouraged or forced to use Django's ORM. And so I always
used it just for websites or projects, but to use it as a replacement for what you would normally
do in just Python and Postgres to do everything through Django and learning like management
commands and for everything that you do. So from that point on, any programming I do, I'd say at
this point, 90% of the time, it's always in Django because that's the best way to structure a project
that's, everything's built in. And if you want to expand it out to a full application, you can,
but even if you're doing something smaller specific, even if you're only working
with Facebook's API, it's good to do it in a Django project.
Can I ask, so given what you know now, if you were going to do something from earlier in your
career so something is as simple as pinging the the ebay api every hour and storing it in django
database how would you structure that would you you would put the python scripts within the django
project and have management commands and cron jobs or how would you approach that now how i do it now
is i took your django x cookie cutter oh yeah yeah and mine is called r django there you go yeah it's
open source it's meant to be meant to be used i open source mine for for a while but i ended up
changing it so often it just wasn't stable i'm like anybody sometimes the prs are a little like
yeah just just use yours not mine but i would start with that pull it down um and
i would the python scripts you would just have in a folder so if i i if i just called it like
collector like i'm collecting prices and products from ebay i just put my script there i would use
you know the orm to store and then for scheduling i actually am not a fan to this day of celery i
mean you have to use it on bigger projects but i'm a huge fan of i think it's just called schedule
so for schedule um all you do is it uses like human language so you make a function say
you know you could call it um get prices from ebay and you call that function but you just put the
time so you could say once an hour or you know every tuesday at this time which obviously cron
does the same thing, but because it's just a Python library, there's not more you have to do.
So for Celery, you need to use multiple, you need to use multiple files. You need to look at,
there's more setup, there's more building there, but for schedule, um, all you have to do is just
run it. And I use that anytime that I can, but yeah, starting from the beginning, I absolutely
would use it in Django super for that do you have like a a daemon an agent that is running or
sticking over all the time so uh yeah for that I use tmux so I deploy on I really like and this is
for personal projects obviously um for for work it's all aws but personally uh I like the vps I
like linode or i use digital ocean just a regular ubuntu box um i deploy i have a nice deployment
script for django and i use tmux which is similar to most people use screen but with with tmux it
just stays there and i'll run i just call it task.py is what's in schedule and it just sits
there and when it's time to run it runs okay super super that's a good it's a good um trick
that i think to use something like tmax or screen to keep your session open so you can like you know
the problem is you you you log in you run your script but then you log out the script shuts down
whereas these things keep it going and so you know that's all you need right that's all you have to
get going fantastic so i'm working this job developer can only focus on development you know
really getting good at, you know, just the Django and Python and the professional way
using the professional tools, you know, finally using Docker. I mean, I really was reluctant to
use it. I didn't like it. Um, but we had someone on the team who was using windows and, you know,
if you have some setting up a dev environment, Docker just makes it easier. Um, and that was
one thing in the Django for professionals. It's like, Oh, I have to use Docker, but everything
works just fine on on the mac and on yeah and i mean because it works i keep thinking i'm gonna
take docker out of uh that book because it is a a bazooka but yeah i i really do think yeah in a
team environment and now you can just put your whole container in the cloud for deployment which
is a whole separate thing which i think is also quite a bit easier yeah so i'm in this wonderful
full place of just being a developer and making some pretty good money. And I could become more
of an expert. Uh, but the team basically just disintegrated. The project wasn't doing well,
you know, personal issues. It was just a mess. So I was six months in six months is the minimal
time you want for the job. So I go back on the market and again, without having the jobs here
locally, I'm willing to move, but I ended up through a connection with my dad, able to work
at JP Morgan and they are doing Python on the finance side. The problem is I didn't want to
work for a big company doing kind of the boring thing. I wanted the smaller company to be closer
to the product. So, but it looked like this project wasn't going to work out. So I put my
two weeks in and like, okay, I have another offer. They're going to pay more. If you match it,
then I'll stay. But if not, I've got to go. Um, it took them a while to kind of get back to me.
And there was kind of some infighting between it, but I ended up in the owner's office and he's
like you're not going anywhere you know and what would you do to fix this project um so i told him
the short version is we would standardize what we're using i feel like the developers there were
doing what i call resume driven development where you just use every library that you can like they
were even introducing like kubernetes like we have a basic django app what are we what are we doing
right? But to simplify the stack and, you know, fix behavioral things and just have the process
used here the correct way, tests weren't being written. So I told him what I would do. And he
said, OK, well, you're running it now. You're the manager. So I went from the bottom of the totem
pole to the top of the totem pole. And of course, the current developers didn't like that at all.
So a drama ensued. It was not good at all. Culturally. I mean, some people were really, really angry.
Some people were just confused. Like, how can how can you go from here to there?
And then, of course, from an experience standpoint, like you're not the best developer.
How could you be a manager? And in the corporate world, entrepreneurship is kind of tricky.
So just because you manage people for your own business doesn't mean you manage people like on your resume.
So I had experience with it, but not directly in the traditional route.
So everything I've done has been kind of the nontraditional route.
So the people who were there longer than me were most upset.
But the people who started after me were respecting me more is probably the way to do it, to put it.
And we had a whole lot of turnover, I had to kind of put my foot down on especially the stack that
we're using using Django correctly simplify things I wanted code written in a way that it's easy for
you to google or just check into the documents if you're mixing in too many libraries then
it's hard for you to know if we don't have any tests in in our code then how can we refactor
so it was a lot of standard things I can I ask about the background of the more senior developers
Because I think this dynamic happens quite often, but the things you're mentioning are things I would want to do for any project I worked on.
What were they kind of used to, do you think?
So there's, like a lot of companies, there was the main developer who did everything for the company.
And that person, you could tell when they started programming and when they started using Django and like, I mean, not even using F strings as an example of this is how we do things and it's going to be that way.
The difficulty was that he did programming for the whole company, whereas we were just branched off to supposed to be this new and innovative product.
So the people there had some experience, but not that senior or principal level developer that would take into account the tradeoffs and why we should do this and the type of technical leadership we didn't have.
So I had it from a business. I want this project to succeed standpoint, but not necessarily from a, you know, I've been programming for 10, 20 years and I've been through all the battles.
So these are the tradeoffs we should do. What happened was we were using Vue. By that point, it looked like React was the winner. It was going to be easier to hire React developers than Vue.
so i switched this over to react it was an easy decision because you don't want to rewrite things
but it was so spaghetti code and not using the components the correct way that it was just easy
to throw it away so did a more traditional stack which was django django res framework
network using Postgres on AWS inside Docker with React. Now, personally, what I would have liked
to push for is Django, Django templates, no Docker, no AWS. If we could get away with it,
Hiroku, right?
So we can focus on on the application.
And it still is kind of a pet peeve of mine that
companies don't use Django templates.
I get the trade offs, but refreshing the page isn't that big of a deal to me.
And it works really well. Everything's all together.
I really wish that more companies would just use it
because the level of complexity that you add, if
if it's justified and needed for the application then absolutely react is an amazing tool but i
find that a lot of websites are crud basically and django templates and django forms and using
the orm and everything there i think i'm aligned with the with the ruby on rails guys in that to
where sprinkle in some javascript where you need but professionally um i haven't been able to kind
of get that through so we're in the world to where the trade-off is this stack and maybe it's because
i'm not a great javascript or react developer i'm way better on the back end and python so maybe if
i spent more time but i think my brain works for python like what it what it means the community
um how we do things here i would like to build the whole application here but you know you have
a job have you tried any maybe just in your own projects htmx which um which sort of gives you
ajax behavior without having to do javascript not enough um i mean same same with me carlton
keeps telling me how wonderful it is and we had the creator on and i believe it i'm just
waiting to switch the few things that are interactive on my sites over to it
that's what i want badly so i guess my next little personal play around uh this weekend's
coming up i should i should definitely do that um i mean one just one sort of thing from a work
in a work environment you can find like one small area where it's like you know we just need a i
don't know a search widget or something you know where you and you can simply um prototype it you
you can say, I've just prototyped this
and I've just used HTMX and the Django template.
And obviously the front-end devs will come along
when we find the time for it
and they'll replace it with a nice React component.
But because it works perfectly well in HTMX
or with the Django template, that time never arrives.
Yeah, exactly.
And I just prototyped it, I guess.
And it's a way of, you know, a low-risk thing
that demonstrates the value of that tech.
Yep.
So what happened next is, I mean, I learned more about business and management and software
during that time. It was really rough and tough to do that turnaround. But like a sports analogy,
if you're taking over a bad team, you could turn them around, but that's usually not the coach to
take them to a championship. So I saw that, okay, we've got this turned around. It's on the right
track, it's time for me to move on from this project. So that was decision time again. It
seems like my life is full of those decision times. Am I going to go back into being a straight
developer rather than manager? Because the problem with that job also is I was doing so much
programming and managing, which anybody who's done both, you end up being bad at both. In my opinion,
And you can't be a great manager and a great developer.
Maybe somebody is that talented, but I don't think that person's me.
I don't think at the same time.
I think the people I know, they go do a couple of years of back and forth.
So I wanted to, do I want to be a programmer or a manager?
I've done both.
I was disappointed that I was on this path to becoming a much better programmer, but
in having to take over the team, it limited how good of a programmer I would be.
So I could still program on it and I could still do my side projects.
But if I just worked purely as a developer like I wanted, then where would I be, you know, after a couple of years?
So I decided on doing management.
I'm I'm good at it, I think.
And really watching finally being able to hire the senior level developers and junior and build them up.
And also I felt really lucky and fortunate in that, you know, I found this career out of nowhere, just starting with the learn Python the hard way.
Thanks to the Internet, I just put the time in and to be able to pay it forward.
So I think about William Vincent all the time because, you know, he really helped me to learn Django and it allowed me to get my first job.
so i like management because i'm able to pay it forward so i ended up getting a job your way in
boston now we're doing a remote this company's called crayon they do competitive intelligence
which is a new industry the fastest way to describe it is so say a salesperson if you're
you're doing sales, you need to know who your competitor is and you need to know who you're
selling to, who their competitor is. So we make something called battle cards. They're basically
cheat sheets. So you can know about the companies that you're going up against. Also like an
executive at a company. I was just going to say, uh, so the company I met with a number of years
ago that had the stack of, uh, Mac minis, it was Cran. Really? I'm pretty sure. I'm pretty sure.
Yeah, we can talk offline about that. But yeah, I'm pretty sure the Boston startup scene is very
tight knit. I mean, toast, I'm sure you're aware of they just IPO. And so a bunch of people at
crayon worked with people there. I think my boss actually hired their CTO. And he's probably ready
for a new challenge. Yeah, I think that I'm sorry, I won't have you mentioned cram. But when I so
this was a number of years back, um, they were doing like for marketing, they were like show
when a competitor's homepage had changed and that quickly morphed into the more, um, you know,
defense, what's your competitor doing as opposed to like inspiration for design and which makes
sense. Exactly. Uh, that other use case is for executives. So if your competitor has job postings
for machine learning you know that that's what they're going to get into and like that screenshot
sort of thing if an executive is off their home page then you know that someone got fired or left
or there's going to be a different direction so a bunch of data there to help people you know help
companies and individuals know what their competitors are up to so that's the company
network for now. What is interesting is they do exactly what I was trying to do at the previous
company. The stack is the exact same. All the things that I had been trying to implement that,
you know, some was successful and some wasn't, they do. To be around, like you asked the question
earlier about, you know, the type of developers that are more senior, to be around so many smart,
talented people. And I mean, it's a great culture, a great environment. I'm not just
trying to sell it just because they employ me, but I really like it and enjoy it. And
the thing is, is we're trying to get more developers, right? Like everybody's trying
to get more developers and they're really, really hard to hire. I'm probably fairly uniquely
good at recruiting because you know having the empathy there but what we have to do is that the
pool is only so big we have to expand the pool there i think there's a lot more people like me
with the non-traditional background who they know how to code they know how to get to a certain level
but they need some extra knowledge some extra tutorials some extra examples of how to get in
industry because there's certainly way more software that needs to be made than we could
find people to do it and it seems like that's going to be the case for a long long time yes
well what um we will put a listing to the company in the show notes what like is it jango jobs is
it data scraping jobs it's a mix of the ones like what are the what in particular does a growing
company need? Yeah, it's Django and React are the bigger ones. Yeah. AWS on that side as well.
And what I really like about Django in particular is the track record of getting Java developers or
PHP developers, or even those who focused on Node on the back end. I mean, C++. It's such an easy
And I know easy is kind of a loaded word, but relatively, it's an easy transition to go from Java to Python.
So if you have that web development base, if you have that programming base, then it's easy to transition here.
And we have a lot of people and resources to help to make that transition.
Wow. I think the point you make applies generally. It's not just your company, right? It's the whole economy.
Because in every industry, there's so much that can be aided by software.
But the people to write it just aren't necessarily there.
I think what prompted this podcast was I found myself buying Django for beginners, Django API, and Django for professionals for a new hire that actually started yesterday.
So waiting for her to join, you know, she doesn't have a Django background, but one of those transitions.
And so I recommend those books and I rebuy it myself.
And sometimes it's expense, sometimes it's out of my pocket, but I want to, you know, pay for the product.
And I realize that I hadn't emailed Will in like a long time of what the progress was.
And I'm like, well, hey, I'm buying this book again for for someone on my team.
And this is what happened.
And, you know, he graciously invited me to the show.
And I'm like, yes, absolutely.
People need to hear that if you just put in the time and effort, you know, and I think
that path even nothing's changed, right?
Like learn Python the hard way still there.
The how to be a hacker is still there.
Teach yourself programming in 10 years is there.
I think that Django for beginners, like I looked at it again, and especially Django for professionals, like two scoops of Django has a new version.
The docs on Python.org and, you know, the Django official docs are there.
And with just the effort and banging your head on the keyboard and then reaching out and emailing somebody who's there, I think the path gets easier and easier and easier.
just with the effort and and kind of knowing that it's possible yeah i mean and i guess the
difficult bit is when i'm not me but when one is trying to learn that all of that when you um
you you know you've got another job you've got you know family life you've got all that and then
you're trying to pick up programming to make that switch and then you haven't got the experience so
getting that first job is tricky i mean your story i think is a is a nice motivator for that
someone in that circumstance yeah completely that's it gave me a uh you know sort of time
you're like whoa time has passed when i realized that you and i had been emailing for years and
and where you're at and yeah we've talked in this podcast i find myself more and more realizing the
limitations of curriculum it is important to have the resources but it's everything else that i
think is the ultimate limiter of um more people making the switch but in any event we're we i feel
like we could keep going on and on um do you have uh we'll have links in the show notes is um i guess
if anyone wants to reach out you're you're hiring or your team is hiring at crayon so we can have a
link for that yep uh crayon.co slash careers nice great wow easy enough yeah it must have been
because they were django back then that that's how i connected with them and and went to their
their office so and still are i mean it's an awesome jango shop i mean if you love jango as
much as we do i mean it's a pleasure to work in it every day i mean and just to see just to see
things done right is beautiful uh so i don't really have anything to promote myself i'm not
big online not big on social media i mean i have a twitter that i never use or check
it's at ray trailer i have a website that i barely update but raymondtrailer.com yeah you either need
to have a magnificent website or a horrific website to prove that you're a pro nothing in
between absolutely well thank you so much for coming on it's so nice to to meet you you know i
basically never get to actually meet people i email with and um it's really inspiring to hear
your story and it's inspiring to me and my own line of work to hear that it's you know help
someone like you make these changes it really means it really means a lot to me yeah thank you
both of you i mean i feel like i really enjoyed your story you should you should get a commission
of how many people's salary every month you should get checks that's how it should work because
you know all your gracious work that you did for free really paid off for other people so i hope
I and others can pay it forward so to all the listeners keep going that's all you have to do
it might take 10 years but you can do it for sure yeah and I would say both of us get get a lot back
from the things that we donate so that's a big motivator for it um so we are at jangochat.com
chat jango on twitter um thanks everyone for listening we'll see you next time
bye-bye join us next time bye-bye