Book/course recommendations?

I am looking to deepen my knowledge of Anvil development. At this point, I’m less interested in learning more about the “escape hatches” of HTML, CSS, and Javascript, and more interested in learning the more basic computer science, software/web design principles (things like “state management”?), and Python that will help me write good Anvil code and build more complex programs sustainably (like testing and “architecture”).

My formal education includes a first year CS sequence. I learned Python mostly through the SoloLearn app. I’ve already done the (free) Talk Python Anvil course, which gave me a few new ideas. But I’m looking for something deeper and more systematic, ideally without learning a bunch of stuff I don’t need to know for Anvil coding (like Python web frameworks). I’ve also listened to a bunch of episodes of the Talk Python podcast and also Test & Code. I’ve looked pretty extensively at the Anvil documentation and tutorials. My latest thing has been carefully going through the Ticketing App example, which has been pretty illuminating.

Here are a couple things I’ve considered so far, but I’m not sure if I’m even really on the right track:

My goto recommendation for anyone wanting to improve their Python skillset is Fluent Python.

I’d also suggest learning a little about ‘Clean Architecture’ and the best explanation I’ve ever seen of that is a talk by the wonderful Brandon Rhodes.

3 Likes

Thank you. I found the video clear and helpful for understanding some of the recommendations I’ve seen on the forum. I also plan to get the book.

1 Like

Thank you for this. I just started the Talk Python course you recommended. It’s nice that it is specifically relevant to Anvil. Other courses I’ve taken for getting up to speed with Python have covered a lot, probably more than I need for now.

2 Likes

Is there a resource or group here where someone can learn Python on Anvil instead of other platforms?

1 Like

Basically, no. I think you want to initially learn Python itself elsewhere. There are some recommendations for that here: https://anvil.works/docs/overview/help#python

But then you can come back to continue your Python learning with Anvil projects. It’s a path I have been enjoying. :slightly_smiling_face:

I had a slightly different approach - learn Python by learning Anvil. Its been a blast but because we are so blessed with Anvil’s ability to click run and not worry about the set up, I do not have a strong grasp on setting up an environment to run python code outside of Anvil, but more than happy to have a bash at doing anything within Anvil.

1 Like

@rickhurlbatt - That’s the best approach for me as well. Jumping between environments is an unnecessary “context switching activity.” I’m looking for learning that is directly applicable to Anvil immediately as I learn it. Learning outside Anvil forces me to guess how I can apply each bit of knowledge as I go. That kind of negates the advantage of Anvil.

Did you keep notes on how your learning experience went?

Is anyone interested in collaborating?

1 Like

Notes … not as such but the code that has been written and the change it has gone through tells its own story. The thing that helped the most was going through the guided app builds and following tutorials and videos. I am a learn by doing person so I got a lot from these resources as well as the forum.

What sort of collaboration did you have in mind? I am keen for anything Anvil-oriented!

2 Likes

Perhaps others would find it helpful to build a list of non-official Anvil tutorials and code examples, ordered roughly from beginner to advanced, for people who have exhausted the official Anvil tutorials? I’m picturing something that would include the Talk Python Anvil course and the Ticketing App example linked to in my OP, together with other sample apps from the Show and Tell forum here, etc.

1 Like

Another random idea: fork an open-source intro book (like this one) and revise it for someone starting on Anvil from the very beginning. It could start by having them set up a free Anvil account rather than install Python. Then “Hello, world” can be output to the Anvil Output pane using a module as the startup: https://anvil.works/build#clone:5N6NFPYDH3I37E4F=EX7Q67NBUUX23JPVLI6DM6KL
But as appropriate concepts are introduced, the examples can be adapted more and more to Anvil. For example, the Anvil button could be used to explain the concept of an object.

(edit: Added demo with a startup module, as suggested by @p.colbert.)

In the last year or so, Anvil apps could start with a Module instead of a Form. This is very appropriate for learning the language, and parts of the standard library, without complications from the platform. If one sticks within those limitations, it could be a very good start.

1 Like

All sound like great ideas. In the absence of an actual course based on Anvil, modifying an existing learning sequence to apply specifically to Anvil would probably be ideal. For the learner to have to put it together would be difficult. But maybe a team approach would work. Of course, someone would already need to know what they are doing. I write requirements so I could document as I learn. That way my questions would help fill the gaps (as an expert might take for granted what’s missing - that a newbie would automatically get stuck on).

1 Like

Sounds good, yeah, I think a collaboration like that would work well.

Were you new to coding altogether, or are you just new to Python the language? Looking at potential books/courses to adapt, I realized there is a distinction there, though I’m not sure how important it is.

If you were looking for a good model to follow, you might want to have a look at the djangogirls tutorial which has very similar aims and is an excellent piece of work.

1 Like

Thanks! This looks awesome (and it actually helped me finally understand what a “web framework” is). But I guess most of this stuff is irrelevant to someone learning to code in Anvil. I think it’s basically just these three that someone would need to adapt to get a newbie from zero to Anvil’s first tutorial:

Yep - there’s a a lot less to get through with Anvil. Which is kind of the point!

2 Likes

I’ve written BASIC programs a long time ago. Nothing professional. Much of it spaghetti code. My work has been as a Business Analyst, Scrum Master and Product Owner. So I bypassed coding and went to requirements. But I always wanted to get into programming. Python seems to be the right language. Web Apps and Sites are my goal. But I never wanted all the various tools that learning that required. Now Anvil seems to offer the “one platform” solution I’ve been waiting for.

1 Like

Trinket.io provides some nice beginner Python tutorials/textbooks with in-browser examples using Skulpt, the same interpreter Anvil uses for client code:

I know this topic has been solved, but probably you like to get more content so here is my 5 cents

As far as I can see there are 2 different path you are searching (or searched) for.

  1. get deeper knowledge in Python
  2. get deeper knowledge in programming practice

When I hired any new people, the first thing was always to introducing design patterns, let he/she read some of the books on that area. It gives you the “why” you need to learn aspects of programming.
Those who just learn with coding (we all do that part too) are mostly missing the how to write it well part. Design patterns show a way to understand what more are there for a programmer to learn, other than the language itself.

The other - usually missed by devs - recommendation is to learn other languages! Yes, it is one of the best way to learn new way of doing something in your favourite language as well. Just like in speaking languages, as more you know the more you understand why are you saying it the way you do… There are always some part which is similar and some which is completely different, both helps to better understand each languages.

I can strongly recommend to sing up for PacktPublishing which has tons of great books and videos to learn. You can buy them per book (ebook, pdf or printed version) or you can also subscribe and get access to all… I like printed and ebooks on my comp, so I use to buy them when they have some sales (I bought almost all of my book for 10 eur / each or less)

For topic #1, python:

topic #2
Mastering Python Design Patterns - Second Edition

Serverless Design Patterns and Best Practices

Software Architecture with Python

Software Architect’s Handbook

4 Likes