i agree that going off-roads from the main task is useful but i disagree with the way the author is suggesting to do it.
> Assume there's a reasonable amount of work you need to do to fulfill the base expectations for your job (i.e. your Normal Work) and then there's a little time left over. (I know some may argue this "left-over time" thing, but just go with me)
this assumption fails at a lot of companies, especially smaller startups. with tight sprints and PMs breathing down your necks to get every ounce of work out, there is no "left-over" time. a lot of people who choose to do "extra" are in reality taking time from what would be family/friends/leisure time. i'd take being a mediocre dev than sacrificing my personal time.
i have found things at FANG company to be different tho- they don't use sprints and as such I can set my expectations so that I can have my "extra time" during company time.
+1. First thought i had when i saw this was like why is notion using a postgresdb in first place- i can see it being used for customer data (which probably doesn’t require sharding) but for the content itself, a nosql or colum oriented db is better fit. the question i have is what is notion storing in these sharded postgresdb?
A monopoly is when a company has exclusive control over a good or service in a particular market. Not all monopolies are illegal. For example, businesses might legally corner their market if they produce a superior product or are well managed. Antitrust law doesn’t penalize successful companies just for being successful. Competitors may be at a legitimate disadvantage if their product or service is inferior to the monopolist’s.
But monopolies are illegal if they are established or maintained through improper conduct, such as exclusionary or predatory acts. This is known as anticompetitive monopolization
Didn't go to CMU, but I did take cs61 at Harvard extension last year (https://cs61.seas.harvard.edu/site/2018/). It too had some self grading assignments (time bomb). Thoroughly enjoyed that class.
It has helped me immensely to change my perspective. I don't see programming problems/blockers that I encounter as _my_ "mental blocker". I see them as problems that stand themselves. There is nothing wrong with _me_. I see the problems as these little (and sometimes big) challenges. Like a level in a game. Not clearing a level doesn't mean that the character you are playing is weak. It just means that the character is not using the right tool, or mechanics. The root cause is lack of information; there is nothing wrong with the character itself. If you can detach yourself from the problem and view yourself as a player in a game, you won't get frustrated. I have even come to like it. When I finally figure out why that sneaky race condition was breaking on prod after days and nights of debugging sessions, I feel like I have defeated a big boss in a game. I actually fondly recall these kinds of victories from my past years like a life event. Hope you can do the same :)