每周完成一个ARTS： 1.Algorithm：每周至少做一个 leetcode 的算法题 2.Review：阅读并点评至少一篇英文技术文章 3.Tip：学习至少一个技术技巧 4.Share：分享一篇有观点和思考的技术文章 +++ banner = "” categories = [“DataStruct”] date = “2019-03-08T11:58:06+02:00” description = "” images =  menu = "” tags = [“DataStruct”] title = “作恶的矿工们” draft = true +++
- Minimal disruption
- U 表示key的集合
- S 表示资源的集合
- W 当前已经匹配key的buckets集合
- A 表示所有buckets的集合
Lessons to learn in your first 5 years as a programmer:
Don’t be afraid to do the same work multiple times. Your first try will often have a lot of bad design. You need repetitions before you get good. Don’t let laziness get in the way of learning and improving.
Reliability is important. The new hot tech has those new features you’ve been dying to try! But it’s also a giant mess, constantly updating, has bad documentation, is hard to set up and difficult to debug. Older tech has google-able solutions. You’ll save time with older tech.
Code for readability. It’s tempting to show off how clever you are by using some obscure language feature that does everything you want in one line. It’s clever, but makes maintenance hard. The new grad that’s reading your code will curse you. Don’t be that guy.
Write unit tests. Seriously, your QA teammates will thank you. You’ll have less bugs. You’ll understand your own code a lot better. You’ll also make your code a lot more modular and testable. Yea, it takes more time, but you’ll probably spend the time you save debugging later.
Don’t over-abstract. I blame this on OO. No, you don’t need some super abstract class that can handle all cases. Just make the program do what you need it to. Abstract later when it makes sense, not before any other instance is written.
Don’t be afraid to learn. Too many devs are one trick ponies (cough Java cough). Learn new stuff or you’ll grow stale. The ability to learn quickly is one of the most in-demand skills as a developer, so you’d best get started earlier than later.
Learn to present. Teach other coders what you’ve learned. Give management an overview. If you ever want to get ahead in your career, presenting is a skill you need. Putting a presentation together is not that different than coding, in any case.
Learn your tools. For the love of God, please learn command line, git and a text editor like vim or emacs. You’re most likely going to have to self-learn on these, but they’re well worth your time. The time you can save pays back the investment manyfold.
All this is to say that your education as a programmer doesn’t end with your CS degree or bootcamp. In fact, it’s really just beginning. You can learn the rules pretty quickly, but to master the art takes a lifetime.