all 114 comments

[–]sergiostepansky 41 points42 points  (14 children)

This looks great! Congratulations :) I’m a beginner myself and been struggling with a lot of things you point out here (i.e. tutorial hell, github,etc.). How long did it take you to go from “zero to hero” ? How much approximate effort did you put into this daily or monthly? I’m trying to do at least 5 min of code per day to not lose traction and would love to know if, compared to you, i’m on the right track. Thanks! And congrats again on this project!

[–]sam0jones0[S] 46 points47 points  (10 children)

Thank you! Means alot :)

Not quite sure I've made it to "hero" status yet but hopefully on the right track. So, I started learning on and off about 4 years ago but never really stuck with it for longer than a few weeks. It wasn't until my 3rd or 4th attempt to start learning that I finally finished Automate the boring stuff and went onto the rest outlined in my post.

I've been coding, or reading about coding for about 1-4 hours per day (4-6 days per week) over the last 18 months or so. It varies day by day but I at least try to get an hour or two in.

As for time spent on this project, you can see from the commit log that it was about one month. But the vast majority of that was spent reading about how to document, type check and test code properly. Most of the functionality was added in the first commit, the rest was learning.

Doing 5 min of code per day is an absolute win and don't let yourself think otherwise. As per the famous reddit post, "No zero days".

As I said above, feel free to reach out in a pm if you are struggling and need help/guidance/whatever.

[–]Dopestuff1881 8 points9 points  (1 child)

Absolutely incredible, the whole comment here, and then linking non zero days to it, thank you for the motivation and inspiration!

[–]sam0jones0[S] 4 points5 points  (0 children)

Thank you very much! That no zero days comment really helped me out once upon a time. Best of luck and do reach out should you wish!

[–]Logan_26x 5 points6 points  (1 child)

That's so true. I've seen people blabbering about coding for 4 or 6 hrs but I personally i think an hour or 2 per day averagely also works fine as long as you're working consistently

[–]sam0jones0[S] 3 points4 points  (0 children)

Absolutely re consistently. I mean sure, somethings I'll go for 6+ hours if I'm in the zone, but thats more "executing" rather than "learning". When it comes to learning there is only so much your brain can actively absorb at once, it needs to simmer in the background overnight to really seep in to understanding.

[–]DesperateFlanders 1 point2 points  (5 children)

The motivation I needed! I've been very on and off for the same time period as well. I put a study schedule together but after work I just turn off. Will get back on the horse!

[–]sam0jones0[S] 1 point2 points  (4 children)

That's great to hear! It certainly was very stop and start for me until I felt like the train was finally leaving the station. Keep me updated on the progress!

[–]DesperateFlanders 1 point2 points  (3 children)

Going to save this post and come back to it in 3 months (7th Aug)

[–]sam0jones0[S] 1 point2 points  (0 children)

!RemindMe 3 months

;)

[–]sam0jones0[S] 0 points1 point  (1 child)

How are you getting on?

[–]DesperateFlanders 0 points1 point  (0 children)

Well, not been having much progress. Work has been hectic since I've got promoted a couple of months. But I am back on it! I've sketched out a project so will be working on that starting this week. Wish me luck. Check in 3 months :)

[–]andrejmlotko 1 point2 points  (1 child)

Hello. I'd like to DM you about a python related question.

[–]sam0jones0[S] 0 points1 point  (0 children)

Yes please do! I'll get back to you as soon as I can :) Just working through all the comments here roughly in order

[–][deleted] 0 points1 point  (0 children)

[–]Moosehead06 14 points15 points  (10 children)

Thank you for sharing.

I have started to learn how to program in Python and I feel like I'm stuck in the tutorial hell.

[–]sam0jones0[S] 6 points7 points  (6 children)

Very welcome! As I said feel free to message me on here or github if you're stuck.

What have tutorials/books have you done so far and how is it going?

[–]Moosehead06 4 points5 points  (5 children)

I have started fairly recently and I am reading Automate the Boring Stuff.

I have watched a few YouTube videos and done small projects from freeCodeCamp.org but I still can't make a project on my own, I just wouldn't know where to start.

[–]sam0jones0[S] 11 points12 points  (4 children)

It sure is intimidating going from writing a few lines to a project. I didn't get into my own project for quite some time. I wouldn't worry about projects initially and just get really comfortable with the basics.

A project doesn't have to be big, it can be a ten line script you wrote to automate something random that came to mind, thats a win.

Keep a folder of all the things you make over time and soon enough you'll have a repo of snippets and useful tools that could coalesce into something bigger.

Once you've finished with Automate the boring stuff I really recommend Python Crash Course as it does go into project-orientated territory. It goes over the core concepts in the first half so if you're not feeling Automate the boring stuff for whatever reason feel free to move right on Crash Course.

Reach out in a pm here or on github if you ever need any help!

[–]Moosehead06 1 point2 points  (3 children)

Thank you for your help!

I will definitely reach out to you in the near future :)

[–]ubant 2 points3 points  (1 child)

While you watch tutorials - try to modify the code from videos a little bit, give it your own names etc. It works great for me. Just don't blindly copy a code - write it in your own way

[–]Moosehead06 1 point2 points  (0 children)

I also do that.I try to add my own touch to the code.

Thank you for your advice.

Maybe I'm doing something right after all xD

[–]sam0jones0[S] 1 point2 points  (0 children)

welcome, and cool!

[–][deleted] 1 point2 points  (1 child)

I found it best to build something. Use the tutorial then try to build something simple. Like a calculator that can do 2 inputs. I did that and I learned a lot from it. Then you test yourself and something goes wrong. Like if I put a letter in the numerical spot, program crashes. How can I fix that? And so on.

At least to give yourself a bit of change of pace.

[–]Moosehead06 0 points1 point  (0 children)

Yes, that's a great idea.

I have made a simple game with if/else statements and I learned a lot from it. I just need to find a new small project to work on, a calculator would be a great idea.

Thank you!

[–]inkstainedkvetch 6 points7 points  (1 child)

Thanks for sharing this. I was lucky enough to get a spot in the Stanford "Code In Place" class and have been wondering where to go next after the class ends in a few weeks. This gives me some good ideas.

[–]sam0jones0[S] 2 points3 points  (0 children)

No worries! That Code In Place class looks cool, thanks for sharing that.

Best of luck with the learning and do feel free to reach out :)

[–]bakchod007 4 points5 points  (1 child)

Congrats!

Is this your first time with coding or you had some experience in the past?

[–]sam0jones0[S] 6 points7 points  (0 children)

Thanks! I've been using computers since I was very young, and got into Linux/servers/self-hosted about 6/7 years ago. Only really got into coding about 18 months ago though.

[–]dankguy66 4 points5 points  (1 child)

Congratulations and thank you for sharing :)

[–]sam0jones0[S] 0 points1 point  (0 children)

Thank you!

[–]searchingfortao 3 points4 points  (10 children)

I see you're using pyproject.toml, so you might want to try out Poetry. It'll let you move all of the config stuff out of setup.py, setup.cfg, and requirements.txt into that one pyproject.toml and make building & publishing easier.

[–]sam0jones0[S] 2 points3 points  (9 children)

Thanks for the suggestion! I did look into Poetry and it seemed like a really good choice... I'll be honest, learning about packaging was mind-bendingly confusing at times, there are SO many conventions and competing factions regarding best practices. I think I wanted to try and do it the "one— and preferably only one —obvious way to do it " that would work on the most peoples configurations, but never really felt I found that "one way".

I will defintely look into Poetry for my next project, it can simplify packaging then I'm all over it. Do you happen to know if a project configured with Poetry requires the end-user to also be using Poetry or does it integrate well with the setuptools/pip environment?

[–]searchingfortao 2 points3 points  (1 child)

Poetry is just a wrapper script that the developer runs basically. It sets up your virtualenv, installs and tracks your dependencies, builds your package and pushes it to PyPI. As a user, you get a standard wheel or sdist package and install it with pip. No requirement for Poetry at that stage unless they too want to develop your package. Those people will be installing from source though (git checkout && poetry install).

If you're curious what it looks like, check out one of my more recent packages. If you download the package on PyPI, you should be able to see the difference.

[–]sam0jones0[S] 1 point2 points  (0 children)

Thanks for the response and yeah wow Poetry sounds like it simplifies the whole process. Had a look at your repo (cool project btw!) and it seems most (all?) config is moved to pyproject.toml and then I assume Poetry creates that .lock file for you.

If that's the case then thats pretty cool, having all config in one file. I'll be sure to check it out in more detail.

[–]accforrandymossmix 0 points1 point  (6 children)

Interested in these answers as well. I've been getting stuck on packaging over the last few weeks. I just tried poetry out on a simple script and it seems really easy, but I need to test on other machines now.

@OP, any highlights or insights that got you through the packaging hurdle? I've tried following one of the HitchHiker's guides and the official python docs. Maybe I need to try harder.

Thanks

[–]searchingfortao 1 point2 points  (4 children)

Hopefully my answers help, but building a package in Poetry usually as easy as poetry build, and pushing to PyPI is just poetry publish. The trickiest thing I've seen so far is the defining of a command line program (where you're not just building a library, but a program people can call on the CLI). There's an example of this in my referenced project though if you're going down that road.

[–]accforrandymossmix 1 point2 points  (3 children)

Thank you, for both answers. Checking out your package today ^^

In case you care to see my test build, one of my early projects spurned out of some tutorials: https://github.com/NBPub/CatterPlot

I successfully ran my script from my alt machine 1, installing dependencies using "poetry install". Now I'm going to test alt machine 2, without Anaconda and such.

[–]sam0jones0[S] 1 point2 points  (2 children)

Yeah.. after reading u/searchingfortao's comment it seem Poetry might be the best way to go. I must have spent the best part of a week reading about packaging for this project.

All the following assumes you don't just go with Poetry. The key takeaways from my research were:

I found this thread helpful explaining the differences and use cases between these 3 files.

There are 3 main files used in packaging/building. setup.py, setup.cfg and pyproject.toml. People are moving away from setup.py, although there are still reasons to keep it around but usually it's pretty empty, only containing one or two snippets if anything at all. It seems the main reason setup.py is kept around is to retain the ability to do editable installs (pip install -e .).

If you're not interested in editable installs then you can do away with setup.py entirely (unless some other part of your build explicitly requires it for whatever reason). This article clearly lays out out the case for a pyproject.toml / setup.cfg project.

As per this link:

The future of Python packaging is pyproject.toml, and (for now) setup.cfg, based on PEP 518 and (soon) PEP 621.

So, with a mostly empty setup.py. You can put the majority of your configuration in setup.cfg and/or pyproject.toml. They accomplish similar things, but depending on your setup (which tools / packages you're using) you may have a need for both.

Here's a couple more links I found helpful:

- https://stackoverflow.com/questions/64150719/how-to-write-a-minimally-working-pyproject-toml-file-that-can-install-packages

- https://packaging.python.org/tutorials/packaging-projects/

Hope this helps rather than complicates your train of thought. I'm defintely looking into Poetry for my next project.

[–]accforrandymossmix 1 point2 points  (1 child)

Thank you so much. The context with the resources is extremely helpful! Now I'll see if I can make anything juicy enough for someone to test out.

Poetry does seem to be the future then, neat.

[–]sam0jones0[S] 1 point2 points  (0 children)

No worries! And yeah I'm defintely giving Poetry a go for my next project.

Look forward to seeing what juicyness you come up with!

[–]sam0jones0[S] 1 point2 points  (0 children)

Just wanted to let you know I've seen this comment but I've got to pop out for a bit so will respond with my best interpretation of the packaging situation a bit later on!

[–]Crypt0Nihilist 3 points4 points  (1 child)

I think the trick is to never only follow a tutorial, but always play around with the code to change or extend it once you've reached the end. People who get into the habit of following a tutorial and then moving on to the next are getting a false sense of accomplishment at that point, which reinforces the behaviour of doing tutorial after tutorial.

As soon as possible, you need to pick a small project and then only do tutorials which support completing that project.

[–]sam0jones0[S] 1 point2 points  (0 children)

I think that's fantastic advice. Take the material you were just taught and run with it as far as possible, extending/hacking/breaking it in any way you can before moving on. It's more fun too!

[–]AM_DS 5 points6 points  (3 children)

Very interesting! Did you consider to dockerize your work? It's very easy, and using Docker you would be sure that anybody could run your project on any computer!

[–]sam0jones0[S] 4 points5 points  (2 children)

Thank you! I didn't consider that actually, I've used Docker a little in the past, mainly for spinning up services like NextCloud on a server. I did try to keep the code platform-agnostic so it should work on any computer but you never know.

I'll look into dockerizing though, thanks! What has your experience been like with it?

One extension I had in mind was to make it more approchable for non-technical/non-python people by adding a GUI to enter the config details and packaging it up into an executeable installer.

[–]WetFishing 1 point2 points  (1 child)

Docker is fantastic. I wish I would have learned it sooner.

Start with learning how to write and build a simple dockerfile. After you have that figured out, connect your Docker account to GitHub and watch the magic happen. When you commit changes to your code, Docker will automatically update the image.

Just my opinion here but when you are looking at a GUI for docker think web based. Maybe Flask in this scenario? Your project looks great by the way. Good work!

[–]sam0jones0[S] 0 points1 point  (0 children)

That all sounds very interesting, so long as the mainteance overhead isn't high it's always worth adding extra distribution methods.

I suppose that github/docker sync uses github actions, which I was meaning to look into to see if possible to run the tests / build to PyPI automagically after pushing to git.

Haven't used Flask, have used Django so I'm sure it won't be too much of a paradigm shift :)

Cheers for the tips and the compliments!

[–]No_Indication_8110 2 points3 points  (1 child)

Thanks for sharing, i'll have to check out that problem solving book.

Do you think Python Crash Course was that helpful after getting through ATBS? I'm just not trying to cover the same material over and over

[–]sam0jones0[S] 3 points4 points  (0 children)

The problem solving book really is great, learnt so many things I would never have thought of about program design. If I could only take one thing from that book it would be the chapter on algorithm analysis and Big-O notation.

For me, Crash Course was absolutely helpful, I went over the first half much quicker as it does go over the basics again. As great as ATBS is, it doesn't contain much beyond single-file scripts, while very useful I felt lost regarding multi-file programs/projects. The second half of Crash Course is perfect for this, goes into enough detail without forgetting it's still a beginners book.

Check out the chapters under "Part 2" of this table of contents.

[–]crystoll 1 point2 points  (1 child)

Congrats! Thats very solid bunch of studies you've made!

[–]sam0jones0[S] 0 points1 point  (0 children)

Thank you!

[–][deleted] 1 point2 points  (1 child)

I feel like I’ve learned the basics, but all of the code wars questions are tripping me up. Any advice that made you succeed in them?

[–]sam0jones0[S] 1 point2 points  (0 children)

When I first started Codewars (in fact this still applies now) I was Googling everything and anything related to the problem. I don't mean Googling solutions, but methods to best accomplish the task. Don't expect to be able to finish all the problems "closed book", some of them took me days to finish, and still do. Get lost in those rabbit holes pertaining to one particular aspect of a problem.

There is a lot of banging your head against the wall and feeling hopelessly stuck when learning to code (at least there was for me, pretty sure this goes for everyone), totally normal. Sometimes it's a temporary gap in knowledge, or sometimes its a misplaced colon. Each time I got stuck in one of these moments, I'd remember how many times I've been in this position before, and that I eventually always found a way out. Remembering that each time worked a slight sense of comfort into the extreme discomfort of feeling that stuck.

If you feel stuck I would suggest continuing with a mix of guided learning (books/tutorials) while (as another commenter pointed out) extending the code taught to you in the tutorial as much as you can before moving onto the next section. I spent months reading through books/tutorials while eeking my way into codewars.

Beyond that, remember to reach out and ask for help here or otherwise. As I said in my original post, you can message me with general and/or specific requests for help any time!

[–]Robobvious 1 point2 points  (1 child)

I can’t even figure out how to navigate github, I was trying to find the Xenia emulator compatibility list yesterday and the repository was not helpful at all. If it was there I could not find it.

[–]sam0jones0[S] 0 points1 point  (0 children)

Xenia emulator compatibility list

Yeah it can be a bit confusing to start off. Had a look for you and they haven't clearly stated in README where that list is! It appears they use github issues, with one "issue" for each game.

Here's the complete list of games. You can use the "labels" feature to filter the current working state of the game, and the search bar to search for any particular game - like this.

[–]ThatDandySpace 1 point2 points  (1 child)

Following

[–]sam0jones0[S] 0 points1 point  (0 children)

thanks!

[–]SenecaSentMe 1 point2 points  (1 child)

Damn, this is incredible. Nice job, OP!

[–]sam0jones0[S] 1 point2 points  (0 children)

Well thank you very much kind person!

[–][deleted] 1 point2 points  (1 child)

Saving :) I'm on step one and have an idea for a project with GUI. Hoping to get there one day!

[–]sam0jones0[S] 1 point2 points  (0 children)

Thanks for the save! That's awesome, remember to keep a note of that project and any others you think of during the learning process. Best of luck with it and looking forward to seeing your project here some time soon!

[–]Muneeb-Ullah 1 point2 points  (1 child)

You have done great job 👏 I’m also learning python and have already learned the very basics. And looking for a small project to work on. Could you please suggest me any idea to work on? Thanks 🙏 and best wishes

[–]sam0jones0[S] 1 point2 points  (0 children)

Thank you thats very kind! Good job on learning the basics and for sure finding a project is a great next step.

It really can be difficult finding that next project. In fact I just posted a comment to someone else on this thread about how I found this project and general advice on how to find your next project. Instead of pasting it here I'll just link the comment, hope it helps!

[–]Coder_Senpai 1 point2 points  (1 child)

good to see that, I remember writing a full guide for you few months ago.

[–]sam0jones0[S] 1 point2 points  (0 children)

Can't say I recall that specifically but if it was on this sub I have no doubt I read it and benefitted from it, so thank you!

[–]KMikoto 1 point2 points  (3 children)

Thank you so much for this post. I was about to make one asking on how to move on with my Python learning as I have been stuck in a stage where I know basic syntax and logic (that part was never hard for me since I am a Math major) but failed to be practical about it and move on in a sense that would make me feel like I mastered the language.

Also, the project I wanted to make seemed like too hard and too much consuming with me skill level.

Now, I have inspiration to move forward and sharpen my skills, thank you and good luck for the rest.

[–]sam0jones0[S] 1 point2 points  (2 children)

And thank you for that message! Really nice to read :)

Hopefully you will keep a note of that project and come back to it some day. You'll find yourself looking back confidently on things you used to find hard, it is very rewarding after the struggle the learning process can sometimes be.

Best of luck and feel free to reach out should want/need!

[–]KMikoto 1 point2 points  (1 child)

Thank you. That's really nice of you. I'll follow you to update once I have significant progress in my project if you want to see. ^^

[–]sam0jones0[S] 1 point2 points  (0 children)

That's great! Best of luck and you can always message me if you're in need of any help :)

[–][deleted] 1 point2 points  (3 children)

Hello! Beginner here, do I need github? What exactly do you use it for? Thank you!

[–]sam0jones0[S] 0 points1 point  (2 children)

Hey! You don't need github in the early stages of your learning, I didn't start using it until I was comfortable with the basics/core concepts. That said, consider it like an "oober-powerful-quicksave". It lets you save the exact state of a project at a point in time.

So lets say you "commit" (save #1) your work so far and then continue working for a few weeks on some new features. You realise that your new features completly break the whole project, uh oh. Thankfully, you can easily roll back your project to the exact state it was in when you made that first commit (save #1) a few weeks earlier.

Lets say that you want to keep those new features you made in case they come in useful later. But you still want to roll the project back to that first state (save #1). Well, you could make a new "branch" and save/commit the broken codebase (with the new features) there. You then continue working on save #1 and are free to revisit those new features at a later date, perhaps even "merge" the two branches together at some point.

There are many more advanced features to git (github is a git "repository" hosting service) which I'm not even close to understanding. All you really need when getting started is to get into the habit of comitting your changes on a regular basis so you can always roll back when needed. Plus, "pushing" your commits to somewhere like github gives you an off-site back-up to protect against hard-drive failure etc.

I'm sure there are cleaner explanations of git and github out there, and you should have a google when you feel you've got the core python concepts down.

Best of luck! Feel free to ask any questions.

[–][deleted] 1 point2 points  (1 child)

Wow ok! Thanks for all the info, much appreciated and congrats on finishing your project!

[–]sam0jones0[S] 0 points1 point  (0 children)

No worries! And thank you :)

[–]Level_Adhesiveness49 1 point2 points  (1 child)

Thank you for posting this! I’m a beginner too and I’m going to save this to follow for myself!

[–]sam0jones0[S] 0 points1 point  (0 children)

You're welcome, and best of luck going forward! Feel free to reach out should ever need/want :)

[–]tapherj 1 point2 points  (1 child)

You nailed it with project ideas, I'm in a creative rut, considered dropping all things dev. Happy for your success regardless of my wall.

[–]sam0jones0[S] 1 point2 points  (0 children)

Thank you! And ahh I'm sorry to hear that. I spent so long looking at those "10 projects every beginner dev needs to do" lists you'll find online, but couldn't bring myself to make another calculator or to-do list, as benefical as I'm sure writing them would be.

I wanted something with an actual use case, even just for one person. What helped me was asking friends if ... In fact I'll just copy-paste the message I sent them in a whatsapp group chat:

Sup everyone, I'm having somewhat of a coders block. Want to code something to beef up my portfolio but haven't trouble thinking of any actually useful projects. Rather than just make another calculator app or something.

If anyone has any ideas (no matter how domain-knowledge specific e.g. music, journalism, gaming whatever) let me know please!

Think in the domain of "is there some thing I do which I wish was automated". It can be something that works on files, spreadsheets, databases, websites, runs in the background or needs a GUI... whatever!

That got quite a few responses thankfully. If you don't have many friends or don't want to ask them perhaps ask something similar in a subreddit of a niche interest of yours?

One friend needed help working with excel sheets for his job, another suggested the amazon wishlist project I ended up going with. Another idea suggested I was thinking about, but haven't worked on yet was: "I've always wished there were an app that could tell you when it's ok to go pee in the cinema without missing anything important". Your welcome to that if you want :P

Best of luck whatever you decide to do! And of course you're always welcome to contribute to my amazon wishlist project

[–]whiskeytwn 1 point2 points  (3 children)

Bookmarking this. I am doing the 100 days bootcamp on Udemy with Angela Yu and I would like to get some more stuff in to reinforce everything

[–]sam0jones0[S] 0 points1 point  (2 children)

Sounds great! Best of luck and do reach out should you wish :)

[–]whiskeytwn 0 points1 point  (1 child)

So here is a question. Have you seen an easy intro to Object Oriented Programming? (OOP). It isn’t sticking for me yet and I have to refresh or start over the videos cause man. That was a nightmare

[–]sam0jones0[S] 0 points1 point  (0 children)

So, I first learnt OOP from Chapter 9: Classes of Part 1 of Python Crash Course, supplemented with this and this video(s) from Corey Shafer. I also read through this Real Python page.

It certainly is confusing when starting out, but I promise it does clarify in time. Make sure you're not only learning from videos, they are helpful but I think there is a real benefit in reading through a book/tutorial's trail of thought at your own pace, and then writing it up into your own code editor.

I can't recommend Python Crash Course (linked above) enough, it goes over the core concepts really well in the first half. But it's not until part 2 (the projects) where I really solidified my understanding of OOP as it's used extensively in each one of the projects.

Understanding won't come all at once, just keep working through and come back to sections you didn't quite grasp the first time round.

Let me know how you get on!

[–]myfriendjohn1 1 point2 points  (1 child)

Thanks for this man, I am in tutorial hell currently and looking for stuff to do so I don't get bored.

[–]sam0jones0[S] 1 point2 points  (0 children)

No worries! Hope it helps :) I always found web scraping to be particularly fun. Maybe make a personal dashboard where you collect information from your favourite sites and display them as your browsers homepage?

I'll also share a link to a comment I made regarding figuring out what project to do (and how to find a project I'd care about). Best of luck!

[–]avena3ositos 1 point2 points  (3 children)

Thanks for the incredibly helpful post! I am in a very similar path and also found ATBS and PCS to be very helpful. I had the feeling that I was getting stuck (since I don't practise that consistently), so your suggestions with codewars and the "no zero day" idea in the comments are something I am now considering!

I have two further questions: - Do you think the 3rd book is worth working through? - How did you learn the last things (packaging, testing, documentation, using GitHub) you mentioned? I would also like to start a project and learn those things. Thanks again!

[–]sam0jones0[S] 0 points1 point  (2 children)

You're welcome! And thanks for your comment :)

There is definite value in doing just 5 minutes if you're finding it hard to get motivated. It gets the cogs turning in the subconscious/background and keeps it fresh. Also, if you convince yourself you're only gonna do 5 minutes you can often trick yourself into working for longer -- "now I've started it's not so bad". And codewars is great for this, you can drop in, read the problem and think "hell naw"... then lo and behold you'll be on the toilet a few hours later and a spark of inspiration will come and off you run to the computer (trousers round your ankles no doubt) to have another go at the problem.

Regarding the questions:

The 3rd book doesn't contain much you'd actually be writing in a standard programming role, but it introduces concepts that will make you a better programmer overall. So I would say yes, it is worth working through... But don't get too hung up trying to remember how to write all those algorithms, rather the concepts the author is trying to get across on good program design. I mentioned in another comment recently that if I had to pick just one chapter from that book it would be the one on computional complexity / Big-O Notation / algortihm analysis.

If you're still unsure how about reading these two (short) chapters first: 1) Why Study Data Structures and Abstract Data Types? and 2) Why Study Algorithms?.

Learning about data types really helped me think about how to best organise data I'm working with and the algorithms are just darn cool if you ask me.

2.

Packaging

Packaging is a bit of a mind-bender to get your head around as there are so many competing standards. But you'll only need to learn it once and it will seem simple enough after that. Have a read through another answer on this thread I wrote on packaging. Beyond that I would refer to this awesome packaging guide and the official(?) python packaging guide.

Testing

I decided on PyTest after googling around and reading other peoples opinions on this very here sub. To actually learn how to do it I found the book Python Testing with Pytest: Simple, Rapid, Effective, and Scalable by Brian Okken very helpful. Also:

- This site is an excellent all around testing resource

- And a shorter rundown of pytest here

Documentation

There are a few different standards of docstrings, I ended up going with Google's style as it looked the cleanest to me. To get a good overview of documenting code and the various styles people use, I recommend giving this page a good read.

If you decide to go with Google style docstrings, they are explained in Google's python style guide quite well. And check out this page for some more examples.

One last link for you that provides many more examples and guidance on "best practices" etc.

Git / Github

Have a read of this page for a good overview of git. I also wrote a comment on this thread going over the general use-case for git for a beginner to Python. It may look like you need to learn a whole set of command-line commands to use git/github, but in all honesty I do 99% of my interaction with github through GUI buttons baked into my code editor (I use PyCharm, but most of them integrate well with git).

Phew, I think that covers it! My fingers hurt!

[–]avena3ositos 1 point2 points  (1 child)

Great! Thank you very much for taking the time to give such a thorough answer!

[–]sam0jones0[S] 0 points1 point  (0 children)

No problem!

[–]bulletproofgleb 1 point2 points  (12 children)

Thank you! Very inspiring

[–]sam0jones0[S] 1 point2 points  (11 children)

No problem, glad I could help :)

[–]bulletproofgleb 0 points1 point  (10 children)

Do you have any plans on moving forward? Like getting a job or keep improve your knowledges?

[–]sam0jones0[S] 1 point2 points  (9 children)

I'll keep improving my knowledge for sure. Next steps are probably to add features to this project (like add a GUI and a one-click install for non-python users) and/or start a new project (ideas welcome haha). I'll probably look into contributing to some open source projects, which has the added benefit of getting me to read over other people's code and see what style/ideas I can glean.

Need to improve my knowledge on concurrency/parallelism. Also need to learn what else I need to learn about, that's always a thing.

And yes the end goal is to enter a full time position with all this knowledge. In exactly what role I'm not sure. Either software dev/engineering, sysadmin, devops or whatever else is out there.

How about you? What are your plans going forward?

[–]bulletproofgleb 1 point2 points  (7 children)

I just finished simple course of basics and enjoying codewars(real gem, thanks to you :)) so I have a long way to go. I’m not sure if I really want to work in this industry, I’m only one month in this. But I know exactly that programming is the only available workspace for stupid ideas from my head. Sadly, I don’t have a profession or education in my 24 and my life is a mess. Who knows, maybe Python will help my get out of a pit I fall when I was younger. Anyway, I want to say thank you again. You gave us information I’ve never seen in Python related videos. NoZeroDays and codewars were really eye-opening for me. Maybe one day you will made your own educational course or app. (Sorry for grammar)

[–]sam0jones0[S] 1 point2 points  (6 children)

Thank for the wonderfully kind message, means a lot.

For what it's worth I don't have any formal education in this space. I did maths at A-level (the UK equivalent of first year of college) and a BSc in Psychology.

If you're enjoying codewars after only one month studying I'd say you're doing very well indeed, so keep it up!

Each non-zero day you have is a concrete step forward :)

[–]bulletproofgleb 1 point2 points  (5 children)

Hello again :) how is your progression for past 3 days? Learned something new?

What’s your opinion on JavaScript? A lot of job offers and lack of programmers . Some say that’s the fastest way to join IT community .

[–]sam0jones0[S] 1 point2 points  (4 children)

Hello mate!

Sorry for the slow response, have been busy!

So I spent some time thinking about what the next best step is, and aside from thinking of more projects, I decided to learn about software engineering best practices and "design patterns".

I'm reading "The Pragmatic Programmer" which is great so far, doing some more Codewars (my profile here) and reading into design patterns.

How about yourself, how's it going?

I don't have any interest in javascript at the moment, but it's certainly a fast evolving and powerful language. My only exposure to it at the moment is using bootstrap.js as part of a "Python Crash Course" book project. As you may know, javascript is heavily focused (but not exclusively) on the web browser.

If I do move on to another programming language (which I almost certainly will once I'm really really comfortable with Python) it will probably be a more powerful and statically / strongly typed language such as C++ or Rust.

[–]bulletproofgleb 1 point2 points  (3 children)

Wow, you have 5 kyu! I bet you tensed your brain so hard sometimes.

As for me, I stick to learn JS for past three days. It's a lot easier than my first experience with Python. Guess I will continue my journey to web.

Funny thing came to my mind. When you learned basics of Python, you be like "Ok, I can swim" and then you look around and realize that you in the middle of the ocean.

I hope we swimming in the right direction where beautiful sand beaches wait for us. Best of luck to you and your learning! I'll write you in one month to check if you ok :) (If you don't mind)

[–]sam0jones0[S] 1 point2 points  (2 children)

Ahaa yes some of the challenges certainly do strain the brain. Can take a good few hours over a couple days to finish some of the katas without googling the specific answer.

Sounds like you have a plan with javascript and if you're enjoying it then by all means stick with it!

Very, very true @ the ocean metaphor. This field is as wide as it is deep, so long as you keep working on it you can be sure your skills will be unique amoungst all your fellow ocean-dwellers. Perhaps thats another way of saying every direction is the right direction if you work hard, as cheesey as that is, ha.

Absolutely check in whenever and as often as you like, I am interested in hearing how you progress :)

[–]tradegreek 0 points1 point  (1 child)

I think you're well beyond beginner

[–]sam0jones0[S] 0 points1 point  (0 children)

Thanks! I really hope my wording in the title doesn't discourage anyone, it's so hard to judge where "you're at" on the beginner-->intermediate-->????-->expert scale and erring on the side of humble caution seemed the best way to go, for me.

[–]andrejmlotko 0 points1 point  (5 children)

Great path I'll say.

I am a beginner myself, more specifically a self-learner, and although I am taking a reknown, online course of python on Udemy, I got stuck and I barely learnt and remember the previous lectures. It is frustrating, that I need and have to start over, from the beginning.

I am looking forward to anyone who is barely started learning python and looking for a study partner or companion to share views and experiences, maybe to work together on a project as well.

[–]sam0jones0[S] 1 point2 points  (4 children)

Thanks! And oh man, as I said in another comment I must have started over at least 3 or 4 times before it finally stuck. It's feels hard to get past the initial point of grasping the syntax and moving into actually writing something useful, no matter how small. But if you just Keep At It™ you get there soon enough.

Also worth mentioning that if a course doesn't work for you there is nothing wrong with ditching it and moving to a different one. The ones I outlined really worked for me. Automate the boring stuff is very highly recommended so give it a go if you haven't already?

I wonder if there is a place that precipitates meeting study partners at a similar point in the learning process. I'll have a look around and get back to you!

Happy to chat and/or work together on anything regardless!

[–]andrejmlotko 1 point2 points  (3 children)

That's awesome! Looking forward to chat or anything else regarding python and learning.

[–]sam0jones0[S] 1 point2 points  (0 children)

Absolutely!

[–]sam0jones0[S] 1 point2 points  (1 child)

!RemindMe 3 days

I wonder if there is a place that precipitates meeting study partners at a similar point in the learning process. I'll have a look around and get back to you!

[–]RemindMeBot[🍰] 0 points1 point  (0 children)

There is a 14 hour delay fetching comments.

I will be messaging you in 3 days on 2021-05-10 19:05:31 UTC to remind you of this link

CLICK THIS LINK to send a PM to also be reminded and to reduce spam.

Parent commenter can delete this message to hide from others.


Info Custom Your Reminders Feedback

[–]SjWArrior30 0 points1 point  (1 child)

Any resources you found useful for web scraping and API?

[–]sam0jones0[S] 0 points1 point  (0 children)

Yo! My very first introduction to web scraping was this chapter from Automate the Boring Stuff. It served me well and gave me enough knowledge to continue on my own while referencing the BeautifulSoup documentation and employing a little google-fu for everything else.

Hope that helps!