Honestly I still find a lot of engineers don't know git properly. Like they know enough to commit and push but that's about it. It really helps to understand everything git has to offer.
The three most important basic git operations to know (in my opinion) git checkout -b git log git rebase -i
Ask HN: What overlooked class of tools should a self-taught programmer look into
111–120 of 416 posts
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#112https://www.amazon.com/Pragmatic-Programmer-journey-mastery-...
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#113Honestly I still find a lot of engineers don't know git properly. Like they know enough to commit and push but that's about it. It really helps to understand everything git has to offer.
The three most important basic git operations to know (in my opinion) git checkout -b git log git rebase -i
A useful one that I'll add is what I call the sword command: `git log -S` This one allows one to list commits that contain a particular change. This has been useful in tracking down old changes
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#114Talk to someone with many years of experience, though, otherwise you'll most likely get sent on a quest for beauty of implementation that has nothing to do with the goals you're trying to achieve. Sadly, that is a lesson that takes a long time to internalize.
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#115Excel. Seriously. For more things than you imagine Let's say you want to make a property assignment for some class; this.a=x.a this.b=x.b ... While you probably would want to do this some other way to start with, and while you of course can solve it using some emacs wizardry, I can whip that up in Excel using some formulas in a matter of a minute. Moreover, I can keep adding to it when I realize something was missing…
I've heard that Airtable occupies a similar space, but I haven't used it enough to recommend it.
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#116Learning in-depth your various options for persisting data, is very useful since most applications have to deal with persistence in some form, and increasingly in a distributed manner. Go beyond simply skimming the surface of SQL vs. NoSQL and the marketing claims different databases make about their scalability and consistency. Learn what ACID and CAP stand for and the tradeoffs involved in different persistence str…
Two great resources I've been going through are - https://dataintensive.net - Really deep dives into different types of data storage solutions, their history, and how they actually work. - http://www.cattell.net/datastores/Datastores.pdf - Good paper that helps differentiate similar but different datastores. Really helpful when you're trying to pick a modern data solution.
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#117More important than any specific technique or tool is that you get an experienced mentor to look at your work once in a while and point out the obvious things relevant to the specific project that you don't know you don't know. Seriously, you'll probably save a few months of work in the first ten minutes of talking to a senior developer about your hobby project. Talk to someone with many years of experience, though,…
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#118Honestly I still find a lot of engineers don't know git properly. Like they know enough to commit and push but that's about it. It really helps to understand everything git has to offer.
The three most important basic git operations to know (in my opinion) git checkout -b git log git rebase -i
Using rebase results in a cleaner history and simplified workflow in many cases. However it also means that when you have a disaster, it can be truly unrecoverable. I hope you have an old backup because you told your source control system to scramble its history, and you don't have any good way to back it out later.
For those who don't know what I mean, the funny commit ids that git produces are a hash signifying the current state of the repository AND the complete history of how you got there. Every time you rebase you take the other repository, and its history, and then replay your new commits as happening now, one after the other. Now suppose that you rebased off of a repository. Then the repository is rebased by someone else. Now there is no way to merge your code back except to --force it. And that means that if your codebase is messed up, you're now screwed up with history screwed up and no good way to sort it out.
That result is impossible if you're using a merge based result. The cost is, though, that the history is accurately complicated. And the existence of a complex history is a huge problem for useful tools like git bisect.
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#119Nobody mentions what self taught programmers miss the most. Theory. And not just algorithm theory.
• Mathematics and probabilities, and their applications to CS (e.g. formal methods)
• Design patterns (OOP, functional programming)
• Data structures
• Algorithms, time complexity
• System architectures
• Software strategies: CI, CD
• Database principles: SQL
It may sound naive, but I'm kind of overwhelmed by all this and it's not helping my impostor syndrome, I may make a repo of the list with links to ressources I've identified for learning as it seems like a common struggle, maybe it'll help someone.
Re: Ask HN: What overlooked class of tools should a self-taught programmer look into
#120Books: Operating Systems/Database/Networking/Computer Security/Computer Architecture textbooks, Software Engineering textbooks (Clean Code, Design Patterns, Designing Data Intensive Applications, Domain Driven Design as a short list off the top of my head)