# Project-based resources for learning best practices?

**URL:** <https://discuss.python.org/t/project-based-resources-for-learning-best-practices/67460>\
**Category:** Python in Education\
**Created:** [October 10, 2024, 3:48pm UTC](https://discuss.python.org/t/project-based-resources-for-learning-best-practices/67460 "2024-10-10T15:48:12Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![g0g0gadget](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/g0g0gadget/32/22718_2.png) [@g0g0gadget](https://discuss.python.org/u/g0g0gadget)\
**Post date:** [October 10, 2024, 3:48pm UTC](https://discuss.python.org/t/project-based-resources-for-learning-best-practices/67460/1 "2024-10-10T15:48:12Z")

</div>

I’m writing a blog post on building a portfolio of Python projects, and I’d love to hear more perspectives on how to progress from courses to proper projects that follow Python best practices. I see lots of books/videos that have projects, but almost none of them model practices like:

- Modularity
- Version & dependency management
- Documentation
- Logging
- Testing

How do newbies make this leap? I’m sure there many ways, but there isn’t an obvious one that I know of. I asked this question on Mastodon as well and got recommendations for Steven Lott’s [Python Real-World Projects](https://www.amazon.com/Python-Real-World-Projects-deployable-applications/dp/1803246766/ref=asc_df_1803246766) and UMassCDS’ [Python Project Template](https://github.com/UMassCDS/PythonProjectTemplate), but I thought I’d ask here as well. 😊

NB: I’m looking specifically for recommendations for resources that provide direct instruction on implementing these practices. I know lots of folks learn them by contributing to OSS projects, but for this purpose I’m optimizing for scaffolding.

---

<div class="post-metadata">

**Author:** ![willingc](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/willingc/32/20_2.png) [@willingc](https://discuss.python.org/u/willingc)\
**Post date:** [October 12, 2024, 1:53am UTC](https://discuss.python.org/t/project-based-resources-for-learning-best-practices/67460/2 "2024-10-12T01:53:08Z")

</div>

The cookiecutter project has been popular for many years. There are a number of templates that help users bootstrap projects with best practices. [https://www.cookiecutter.io/](https://www.cookiecutter.io/)

---

<div class="post-metadata">

**Author:** ![willingc](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/willingc/32/20_2.png) [@willingc](https://discuss.python.org/u/willingc)\
**Post date:** [October 12, 2024, 1:54am UTC](https://discuss.python.org/t/project-based-resources-for-learning-best-practices/67460/3 "2024-10-12T01:54:44Z")

</div>

pyOpenSci’s community resources and peer review guide also scaffold best practices for Python development: [Python Tutorials & Learning Resources for Scientists - pyOpenSci](https://www.pyopensci.org/learn.html)

---

<div class="post-metadata">

**Author:** ![willingc](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/willingc/32/20_2.png) [@willingc](https://discuss.python.org/u/willingc)\
**Post date:** [October 12, 2024, 1:56am UTC](https://discuss.python.org/t/project-based-resources-for-learning-best-practices/67460/4 "2024-10-12T01:56:52Z")

</div>

Scientific Python also has a nice guide to best practices and I believe a cookie-cutter: [Home - Scientific Python Development Guide](https://learn.scientific-python.org/development/)

---

<div class="post-metadata">

**Author:** ![cofiem](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/cofiem/32/12747_2.png) [@cofiem](https://discuss.python.org/u/cofiem)\
**Post date:** [October 12, 2024, 4:48am UTC](https://discuss.python.org/t/project-based-resources-for-learning-best-practices/67460/5 "2024-10-12T04:48:46Z")

</div>

I’m unsure if this is what you’re looking for, but I’ve found some project docs have useful explanations, directory layouts, and reasons why to choose (or not choose) particular approaches.

For example:

- [Good Integration Practices - pytest documentation](https://docs.pytest.org/en/stable/explanation/goodpractices.html#choosing-a-test-layout)
- [Package Discovery and Namespace Packages - setuptools 75.1.0.post20240916 documentation](https://setuptools.pypa.io/en/stable/userguide/package_discovery.html#automatic-discovery)
- [Patterns - Warehouse documentation](https://warehouse.pypa.io/development/patterns.html)
- [Logging | Django documentation | Django](https://docs.djangoproject.com/en/5.1/topics/logging/)

---

<div class="post-metadata">

**Author:** ![g0g0gadget](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/g0g0gadget/32/22718_2.png) [@g0g0gadget](https://discuss.python.org/u/g0g0gadget)\
**Post date:** [October 13, 2024, 4:11pm UTC](https://discuss.python.org/t/project-based-resources-for-learning-best-practices/67460/6 "2024-10-13T16:11:14Z")

</div>

Thank you! I think one of the projects I linked built upon the cookiecutter project, and I’ve heard great things about both! 😊

---

<div class="post-metadata">

**Author:** ![g0g0gadget](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/g0g0gadget/32/22718_2.png) [@g0g0gadget](https://discuss.python.org/u/g0g0gadget)\
**Post date:** [October 13, 2024, 4:12pm UTC](https://discuss.python.org/t/project-based-resources-for-learning-best-practices/67460/7 "2024-10-13T16:12:10Z")

</div>

Thanks, I’ll check it out! 😊
