1,482 karma · joined October 28, 2012
denzel dot morris one at that google service
Interface expresses “what the function does” while the implementation expresses “how it’s done with what tradeoffs”.
Bonus, in the future, if performance ever does become a problem, you swap in the new optimized implementation behind the existing interface.
For a company with so much money and so much sophisticated technology, it never ceases to amaze me how broken their systems are. As a software engineer it doesn't surprise me though. You start to realize that it's people and organizational problems all the way down more so than the technology.
First, there's a distinction between sewer vs. stormwater. Sewer lines go to a treatment facility that's built specifically to take all the bad stuff out of the water before flushing that treated water into your local streams. Washing your car into a sewer drain, all good.
Stormwater drains shuttle water directly into your streams.
Stormwater drainage is purpose-built to handle the overflow rain during storms, and only that. In fact, the first goal of stormwater management is to not drain it at all! You want the stormwater to flow through your local ecosystem naturally, generally as groundwater. Nonetheless, storms conspire to drench our non-porous surfaces (asphalt, concrete, etc.) at a rate or duration above the designed for drainage of the system, resulting in overflow. Overflow leads to things like flooding or public safety hazards for cars driving on undrained roads, so a secondary goal of stormwater management becomes shuttling excess water out of the local ecosystem.
What's all this have to do with washing the mud off your car? Well, the first goal of stormwater management is to keep it in your local ecosystem. So, if you can ensure the runoff from washing your car goes into your grass or a specifically designed catch basin, then you're all good. But, if you wash it off into the stormwater drain, well then you're using that drain for a purpose it wasn't built to serve. Your water is neither excess nor should it bypass your local ecosystem. As far-fetched as it may sound, that mud may have local nutrients, pollen, chemicals, etc. that could serve your local ecosystem, and by bypassing that you are disrupting your ecosystem's natural cycles.
A note to the astute reader that says well, we already disrupt our ecosystems with other human activities. Yes, you are correct. That doesn't mean that we can't nor shouldn't take actions to minimize or eliminate further disruptions when they are within our sphere of control. We must strive to find a balance in ecological systems.
And no, I'm not advocating for Facebook to be nationalized or broken up. I'm specifically pointing out the thought that Facebook could innovate here; they have an opportunity to establish the first truly global self-governing internet-based company in history.
> a website dedicated to light communication and entertainment
This statement is deliberately obtuse. Facebook is a communal space used by 3B people every day to mediate conversations, transactions, news consumption, business, events, etc. I'd hardly say people building their livelihood off of Facebook is "light communication" or "entertainment". Again, look no farther than HN to find examples of Facebook's governance policies harming their users with no explanation or due process: https://news.ycombinator.com/item?id=29614629.
Facebook (like most corporations) operates an autocracy. However, unlike most corporations Facebook generates 100B+ in revenue per year (more than most countries), is worth $1T+ (again, more than most countries), and home to 3B+ users daily lives (trifecta, more than all countries). It's time to acknowledge the company that walks like a duck and quacks like a duck, is a duck.
If Facebook was so inclined to change their governance model, a plethora of prior art exists, in public sector government implementations, for them to build from. An endeavor of this magnitude is neither easy nor simple nor palatable to more engineering-inclined minds, but it's perhaps generational opportunity for a person/company to truly lead and innovate on such a ubiquitous digital platform.
Combining both: better memory encoding techniques and spaced retrieval is the holy grail. People who employ both feel like superhuman. For example, you can encode knowledge of a book with a mind map following specific principles and then schedule either a spaced cued recall with image occlusion or a spaced free recall or a mixture of cued/free by occluding large portions of the mind map.
In my experience though, I rarely need spaced repetition for knowledge I’ve encoded with a mind map. I have almost perfect recall of the map and an understanding of what it represents many weeks later with no repetition.
Consider that you could attempt to solve your perceived problem in multiple ways within the existing structure. 1) Garner public support and lead a campaign to change our laws to be more inline with the thoughts you have around increasing taxes; 2) Exploit the market opportunity you’ve identified (of paying CEO’s less to pay others more) by starting companies that follow this ethos, attract talent, and deliver value to consumers; 3) Attain a leadership position as CEO or in the Board of Directors for a company where you can take responsibility and change these perceived compensation problems; so on and so forth.
The responsibility lies with you to bring the change you seek.
Right now, you’re simply complaining about a perceived problem without offering any logical argument for an alternative.
I do not mean to sound flippant, I’d like to hear what your alternative ideas are.
Do some ideas have higher leverage than other ideas: certainly. Is it easy to tell a priori which ideas those are: not entirely.
Consider log-structured merge trees (LSMs) were invented in 1996; Amazon S3 was released in 2006. Some might consider these fundamental ideas that have existed for 28 and 18 years, respectively. Have you mastered these ideas enough to understand how the cost structure of S3 enables you to implement a really economical distributed LSM at extremely low cost because S3 doesn’t charge you for bandwidth usage?
1. The study is comparative in that it answers the question do engineers from other fields consider software engineering “real”. The interviewees answer more than whether they apply their an engineering design process, they comment on what they see in the industry from others, and resoundingly agree that software engineers are abundant and no different than “real” engineers.
2. We agree, aspects of the study could be improved. Nonetheless, I think Hillel’s analysis serves its purpose in leading the discussion forward on whether software engineering is “real” in a more productive direction than Jon Blow’s comments do, necessarily, as the topic of this HN thread.
3. Part 1 of Hillel’s article, linked above, addresses and agrees with your point directly. Suggesting that we don’t have a vocabulary vibrant enough to describe all aspects of the work people do with and on software yet.
The likelihood is low that Jon has spoken to any meaningful number of civil engineers in making his comparison to the software engineering field. Rather, he reasons from some idealized version of what he believes civil engineering to be.
https://xkcd.com/1053/ is relevant. The world would do well by adopting a more positive perspective towards people who don’t know what we expect them to. Because I’m sure, they probably know something I don’t… that they expect me to know. And that’s how we all progress.
You use a problem solving process built on structured analysis by first defining the problem in terms of an Undesired Result (R1), Desired Result (R2) — the S and S’ in Andrew’s process. Then, you determine the Starting Point in terms of the logical structures that generate your R1; these structures can be a sequence of cause-effect, a structural decomposition (e.g. of organization, geography, etc.), a classification, or some combination of the three. From this structure you can hypothesize experiments to confirm/disconfirm where the causes are. With these causes in hand, you can generate possible solutions or corrective actions. Finally, you’d evaluate your alternatives and arrive at your solution to move from R1->R2.
MPP’s problem solving process has the additional advantage of structuring your actions/results in a way that makes writing a document or presentation simple and straightforward, to convince others for example.
Check out the book if you’re interested in improving your problem solving and analysis skills.
Also, a good system design interview isn’t about designing a “perfect” system (hint: there isn’t one), it’s about defending a reasonably considered design.
Google’s system design interview very closely approximates my day-to-day experience designing solutions with my teammates.
I guess my subscription didn’t count as a customer.
[Disclosure: Google Search SWE; opinions and thoughts are my own and do not represent those of my employer]
Why do you assume malicious intent?
The balance between search ranking (Google) and search optimization (third-party sites) is an adversarial, dynamic game played between two sides with inverse incentives, taking place on an economic field (i.e. limited resources). There is no perfect solution; there’s only an evolutionary act-react cycle.
Do you think content spammers spend more or less resources (people, time, money) than Google’s revenue? So then the problem becomes how do you win a battle with orders of magnitude less people, time, and money? Leverage, i.e., engineering. You try your best and watch the scoreboard.
Some people think Google is doing a great job; some think we couldn’t be any worse. The truth probably lies across a spectrum in the middle. So it goes with a globally consumed product.
Also, note, Ads and Search operate completely independent. There’s no signals going from Ads to Search, or vice versa, to inform rankings; Search can’t even touch a lot of the Ads data, and Ads can’t touch Search data. Which makes your theory misinformed.
Invest in learning how to use Quickbooks.
Quickbooks is the industry standard for bookkeeping and accounting - the exact topics your OP references. Mapping (your vocabulary) to Quickbooks terms, you can budget by category (manage your finances), import and categorize your transactions daily (keep track of your finances), and run reports to see actuals vs. budgets (where your money has gone vs. where you planned for it to go). Also, every so often (monthly), you reconcile your categories against your financial accounts (banks, investments, loans, etc.) to make sure everything is in-sync. Quickbooks also has other advanced features to keep track of more complicated bits like depreciating assets, interest-bearing accounts, etc.
Your return-on-investment for learning Quickbooks will be many times higher than any other tool. You can grow with the tool as your financial complexity grows, something tools like YNAB can't do; easily handover your financials to an accountant for filing come tax season; transfer the skills you've learned through personal bookkeeping over into running the books for a side business.
To get started, I'd suggest taking a class that teaches how to use Quickbooks for personal finances, or hiring a bookkeeper to setup your books and teach you how to run them to meet your goals.
An economy would become zero-sum if we ran up against the limits of the universe. Until then, rest assured that opportunity can grow for both sides in a transaction.
Is cost efficiency an effective perspective for innovation or revenue growth? Mostly, no. As long as your risk-of-ruin is low, then you want to fail. Sometimes people misinterpret this as “doing the wrong thing”. But it takes doing a lot of wrong things to do the right thing.
The difference between right and wrong, if there ever was such a simple dichotomy, is so marginal and only understood in hindsight.
ChatGPT's output is certainly limited by its input. If you ask questions that can be answered by finding and simplifying information, then that's the answer you'll get. However, if you treat ChatGPT like a functioning software engineer, describe the problem space, explain the requirements, and define the boundaries, then ChatGPT will do much more. From that point on, you can ask it to explain why it chose a certain data structure, or to adjust an implementation approach, among other things.
With 15 prompts in 2 hours, I was able to pair program a novel 200-line program in Go that used AST parsing, command execution, pattern matching, file parsing, and custom data structures for specific data processing. All to solve a problem one of my teams experienced in the industry. ChatGPT wrote 99% of the code; I tweaked 2 or 3 lines because it had problems correcting an error in a regex (most likely due to the fact that ChatGPT sees tokens not characters). The code compiled, ran, and produced the exact result I wanted.
Researching, prototyping, and writing this code by hand would have taken me a few days probably. That's why the project sat on my TODO list for months
You've explained the problem space, the solution, and why your background is relevant, extremely well. Kudos. I put a preorder in.
Minor nit: the grey on white on your preorder page is practically unreadable for my eyes.
You should apologize for being disrespectful. There's no reason to attack the founder personally with words like: pathetic, desperate, or insulting their critical thinking by saying "you haven't thought this through at all." You can write an equally critical comment without the vitrol.
My response shows these hypotheses to be false. You’re correct, no one’s arguing whether Bazel is useful or worthwhile, not even I.
> Large companies […] who can support Basel within an engineering organization definitely exist.
Ok great, we agree. You’ve revised your point from earlier.
> There’s probably a few Xooglers […]
A baseless hypothesis that’s confirmed false by all the references shared with you. Feel free to plug all the lead engineers’ names into LinkedIn to verify that the majority are not ex-Google.
> Bazel-lite may be enough.
Sure, it may be. That’s why I’m offering the constructive feedback to go talk to the thousands of active Bazel users to see whether and what they want from a Bazel-lite, if that’s the positioning Moonrepo wants to choose.
Usually, there’s a strong rationale and need behind an organization’s adoption of Bazel. Some of that rationale is captured in the references shared earlier. These organizations need Bazel; they’re generally happier with Bazel than their previous systems. These baseline needs represent table stakes for any build system that wants to compete with Bazel.
If Moonrepo wants to compete where Bazel is weak, then I’m suggesting that they need to sharpen their communication such that an engineer well-versed in Bazel has an “aha!” moment within 2 minutes. The proverbial elevator pitch.
Once again, I’m not dissuading Moonrepo from pursuing their vision. I’m offering constructive feedback on their messaging/positioning — the type of feedback I’d like to hear as a founder.
[1]: https://www.youtube.com/watch?v=t_3bckhV_YI
[2]: https://www.youtube.com/watch?v=H67uuwVO1tc
[3]: https://www.databricks.com/blog/2019/02/27/speedy-scala-buil...