I’m most likely very opinionated, but I thought I’d post it anyway.
Git
I always tend to recommend the official Git Book. I remember, I personally struggled with Git initially, before one evening I decided to spend just a couple of hours reading the official book, and then followed it up with some practice at work (at that place we used to use SVN, and I really hated that I couldn’t do branches easily, so when I learned you can use git on top of the SVN and just push it to SVN, I was delighted and it made a huge difference for me). Since then I felt pretty confident in using git cli (I tried GUI and TUI, and it just didn’t do it for me, except may be for resolving huge merge conflicts).
For the basics, the chapters 1, 2, 3 and 5 are a must. Everything else I think is optional.
For the advanced, it really depends on your use case - most of the people I’ve talked to just do add, commit, push. My personal list of features that are a must know are:
- If you’re using CLI, install git autocomplete
- Merge, rebase and the difference between the two
- Understanding
reset
and checkout
(chapter 7.7)
- Stashing (chapter 7.3)
- Reflog makes you feel more confident that it’s hard to loose stuff (and knowing more of how it works under the hood, iirc, if something has been at least staged once, and even if it hasn’t been committed, there is a chance you can restore it)
- Bisecting is sometimes comes in clutch when you’re trying to find a commit that breaks something
- For quality of life:
** git add --interactive # or just -i
** git rebase --interactive # or just -i
** git add/reset/stash --patch # or just -p
** .git/info/exclude
is like .gitignore
but only local (e.g. useful if you like me like to create python’s venvs in the same directory as the project, but don’t want git status
to constantly show it)
** git clean -dxi
** There are many more, which will depend on your use cases.
May be I missed something, but the point is that, imho, it’s relatively easy to pick the basics of git - just don’t let the knowledge fade away and find a way to practice the things you find in the book ASAP. And once you’re confident with it, you will from time to time stumble upon something that you think git can might be able to help you solve, and then you look it up in the book or google it
Python
YouTube
There are quite a few YouTube tutorials that are great, which I don’t remember of the top of my head. But there are two specific creators that I still remember being impressed by.
Corey Schafer (link)
I think some of his videos on simple things in python are very good. I wish I saw them when I was learning Python.
James Powell (look up his talks on YouTube)
James Powell’s talks helped me greatly to understand Python more in depth. The main theme of his talks is breaking down the interfaces Python has, which are useful for:
- Understanding how things works under the hood
- Knowing how to hack around to leverage Python’s flexibility and create interesting stuff
- Stop being afraid of the languages building blocks e.g. loops, generators/iterators, inheritance, decorators, classes
Practicing
When you’re just starting, doing small coding problems can help a lot to practice understanding of syntax, basic flow control and using built-in functions and libraries. Imho, CodeWars is great (not only for Python, but for any language that is supported there), because most of the problems are more interesting that the usual LeetCode problems, and after you’ve solved a problem, you can see solutions of others, which is incredibly useful for evaluating your own solution and learning different approaches. Most of the top rated solutions will at the very least heavily use built in libraries, which, especially as a beginner, helps you widen your awareness of what tools are available (I don’t think there is anyone who went through the whole python documentation to learn all the libraries that come by default with the language). There will also be many oneliners - you shouldn’t aim to write code like that, especially in the real code base, as they are often unreadable. However, breaking them down and trying to understand all the quirks and tricks that were used to create it is very interesting and will likely teach you a lot about the language.
JavaScript
I don’t remember how I learned JS or what was the break through. My advice is grok the fundamentals. Then anything built on top of it will be relatively easy to understand.
Env tools
I think this is very personal. I tend to use very basic things most of the time. My advice (although I think it doesn’t work for everyone) here would be again to learn the basics (or at least the principles behind how things work), if you can. For example, I’ve seen that python’s venv are a mystery for many beginners (or even experienced devs who only program from an IDE), and when it breaks they have no idea how to debug it.
Take backups, make sure they work, so you can be confident that you can recover whenever, and then go break things