Using and Mastering Cookiecutter Transcripts
Chapter: Creating Cookiecutter templates
Lecture: Why create your own template

Login or purchase this course to watch this video and the rest of the course contents.
0:01 Now we've come to the really critical part of this course. Creating templates. While it's great to use and understand Cookiecutter as a consumer,
0:11 the real power is taking the concept of Cookiecutter templates and applying them to your projects, your teams, your companies and so on.
0:19 So, let's go through some of the reasons why we might want to create a template.
0:22 Well, first of all, they often can decrease frictions on projects that you use, so imagine you have some project and it requires some setup,
0:31 certain number of files in certain place, folder structure and so on, and if this does not have some kind of scaffolding tool already,
0:38 then a Cookiecutter template would be awesome for you to add, so even if you don't own that project, maybe creating a Cookiecutter
0:45 that will generate it just the way you lie it is a good idea, and who knows, you could submit that as a pull request back to the original team
0:52 and maybe they will take that and that could become the official way to create your favorite project, so that is a really cool thing,
0:59 and we all use different projects so why not, right, this applies to everyone. You can empower your team and make it easier to onboard new developers,
1:06 so what do I mean by that? Well, suppose again, there is a certain way as a team you have agreed upon any project of your language should look,
1:16 it should always have this folder structure, it should always have these files,
1:19 it should always have this README, and some sort of startup script and so on, so you can make it easier for all new projects to come out that way
1:26 and if you have a Cookiecutter that always does that when somebody new comes on the team just go this for no matter what project you are working on,
1:33 this is how it's going to look, this is why it works that way. In the similar way you can start farther down the road
1:39 for what I am calling integrated projects, now for this imagine you're working at a big company, and big could be 5, 10, 20, developers,
1:46 it doesn't have to be huge, but a team of developers where you are all building on projects and you are all integrating
1:52 with the same subsystems over and over and over; here is how we send outbound email, from any app that we use,
1:58 here is how we set up continuous integration, here is how we integrate with runtime error monitoring,
2:03 things like Rollbar or New Rellic, things like that, so if you've got a bunch of these things,
2:09 and every time you create a new project you need to install Rollbar and setup the keys and the config files, you need to create the right thing
2:15 in the requirements and you need to set up this mail system and you need to install say like some package that handles the mail for you,
2:21 and so on and so on, like the more of these things that you commonly use within your company,
2:26 the more excellent it would be to start with the template that already integrates
2:30 all those things, you push a button and zzzip, it all comes our pre integrated,
2:35 so like by the time you start opening your project, the first file in an editor,
2:39 it's already got the email integrated, the way it works within your data center,
2:43 it's already got error monitoring, integrated with your keys, it just is ready to go. So this is a super valuable way if you work inside a company,
2:51 you want to make that company more consistent, make sure things that would be like well do we really need to add error monitoring
2:58 and like do we need to put that effort in and if that's just like a button press,
3:01 that's just part of project creation then of course you put error monitoring, why not.
3:05 If you work on the other side of the story here, on an open source, not within a company that is like very structured,
3:12 but you've got some open source project that has some setup basically in my mind, if your open source project has more than two lines,
3:20 on how to get started it could use a Cookiecutter template; here is how I think it should go.
3:26 pip install or somehow install, right, if it's Python pip, if it's Javascript npm, install your project library, run your Cookiecutter,
3:34 okay, maybe the other order, depending on how you want to do it, right, maybe the Cookicutter could be on GitHub and it could generate
3:40 the some kind of requirement listing and then you install it there, either way there should basically be two steps,
3:46 if you have a whole bunch of steps in an open source project, there is a lot of people that will come along, they will try to get started
3:51 and go oh this is too complicated, I am out of here, right, so you can bundle up the best practices for getting started with your open source project,
3:56 as a Cookicuter template. That's excellent. And, this can regardless of whether you're inside of a company,
4:02 or you're in an open source project, this can lower the support overhead, all that startup stuff, all that initial integration that can just go away
4:09 because the template does it, you start beyond that place when you create that project and start from there, rather than saying okay,
4:15 here we go, create this directory, put these files here and so on, and so on, right, so it can lower the support overhead across the board.

Talk Python's Mastodon Michael Kennedy's Mastodon