Hacker Newsnew | past | comments | ask | show | jobs | submit | dcraw's commentslogin

My brother wrote an essay on how to work with "stupid" people (which starts with recognizing they're not stupid).

https://jasoncrawford.org/how-to-work-with-stupid-people


I think I could die happy if the following aphorism were attributed to me:

Never attribute to stupidity that which can be properly explained by apathy.

We treat other very smart people as stupid when we just haven’t given them any reason at all to make them give a fuck about our pet peeves, or daily pain. Everybody has days when they are just trying to make it to 5:00. Sell me on your idea. Scolding is a weapon of last resort, and some people reach for it very early.


> Scolding is a weapon of last resort, and some people reach for it very early.

This single fact is responsible for so much polarization and conflict in the world. It also makes one's point less convincing, and makes people less likely to choose your side.

A lot of the times, especially online, the "scolding" is done not as an attempt to bring the other person over or make them see your side; rather, it's become a social signal to one's own in-group to say "see how committed I am to our side", and gain some cachet in the group that way. Even if it muddies the water for everyone and makes the world a little bit worse in the process.


I think it’s Paul Graham’s definition of a stupid person that goes something like:

  A stupid person is someone 
  who creates difficulties
  that don’t benefit anyone
  including themselves.
Thinking about a large number of other people as lacking intelligence seems to be one of those things.


I know a lot more people that aren't bothered to even to try to learn something new, than stupid people. It takes serious effort to change your mind if you are already 'convinced'. Some people ground their convincement by repeating the same thing over and over again. It becomes part of their identity, making the effort of seeing things from a different angle almost impossible.


That's a great read and very, very high EQ way of thinking about these situations.

Last 3 bullets are solid. Roughly same advice I often give to junior devs.


I spent most of my career at a company with some of the top engineers and optical scientists in the world. I'm pretty used to being the dumbest guy in the room, and I'm smarter than the average bear.

Problem-solving/designing IQ is great, but it ain't the be-all/end-all. A lot of folks with two-digit IQs are my heroes.


Lots of useful information.

I guess you need to practice what this suggests rather than just sharing it with someone, though. If you send someone a link of 'How to work with "stupid" people' they might think you're calling them stupid instead of trying to improve communication.


Something I’ve come to realize is that there’s a sort of irony in thinking people are stupid. It typically means you value a specific form of intelligence, and are too biased to recognize other forms when they occur in other people.

My friend’s mom hates computers and software, but is incredibly technically competent when it comes to weaving and looms. She has fixed so many old machines, learned to do such cool stuff with them, does amazing work with dying and processing, and so on. She would strike your average tech bro as pretty clueless and out to lunch (she’s a little whacky and eccentric) but she’s so technically inclined in a different way it’s absurd.

Obviously some people are intellectually disabled and can’t do things like this, but stupid seems like a derogatory term in that context. And even then, I sincerely doubt you couldn’t find useful insight and intelligence there too.

I’d say that thinking other people are stupid is simply failing to recognize or appreciate the value other people bring.

Having said that, I’m pretty stupid so I could be wrong


    > Something I’ve come to realize is that there’s a sort of irony in thinking people are stupid. It typically means you value a specific form of intelligence, and are too biased to recognize other forms when they occur in other people.
There's a great book by Todd Rose titled The End of Average; great read.

Premise is exactly that for centuries, we've measured "intelligence" in such a narrow scope focused on the foundations of industry (reading, writing, arithmetic) often at the expense of other forms of intelligence like spatial (e.g. sculptors, artists), emotional, and even dextile (I think I just made up a word?).

I have more recently been thinking about what intelligence means in this era when AI is advancing so quickly in processing information in volumes far surpassing humans ever could. I think that in the future, we'll see a realignment on intelligence.


Awesome demo video!


Thank you <3


Read The Phoenix Project, a book which fictionalizes this issue. As a novel, it covers not only technical and process steps, but most importantly how to talk through the negotiations and emotions that come up along the way.

https://g.co/kgs/Mq634e


Looks cool. You may like https://workflowy.com/


Personally a big fan of Vimflowy, an open source self-hostable version of Workflowy with vim-like controls:

https://github.com/WuTheFWasThat/vimflowy

Dev is super pleasant as well :)


I use Dynalist which is also similar to workflowy.


I love Dynalist and I've been using it for the past 3 (?) years or so, I just wish it had Vim controls.


Cool! Notion (https://notion.so) is also similar, I use it personally and at work and it's an awesome product.


Thank you! I didn’t know that! My app is similar to that one >< I need to make representatives function which distinguishes this from that!


Sounds interesting, but not obvious to me. What are the dividends?


Most relevant here on HN I think would be the ability to communicate and articulate ideas very quickly and efficiently. I say dividends because while you can get rusty, the skill never really goes away; I constantly feel grateful for all the time I’ve put into improving my drawing skills over the years.

“Drawing on the Right Side of the Brain” is the book I typically recommend for anyone at any skill level.


Most people seem to be evaluating this question on an egalitarian premise: what's best for the greatest number of people? On that premise, taking money from very wealthy people and giving it to others will always seems appealing (even though it destroys wealth).

But let's evaluate it from the premise of justice. By what principle can we remove control of these companies from those who created them? From those who have worked there and earned equity in them? From those who have invested in the public stock in order to fund growth and earn a return? By what principle can a government interfere with a private contract, one that has governed how a group of people work together for 15 or 20 years, and unilaterally break it?

The argument is that the companies have too much power. But what kind of power? Can they take money out of your paycheck without your permission? Can they prevent you from erecting a building on your property without their approval? Can they imprison you for failing to appear at a hearing?

There is a difference between government power and economic power. Government power is the power to compel, and it the source of the power is the army and the police, or, more bluntly, the gun.

Economic power is the power to create. The source of economic power is the value that is offered. Sometimes a business offers something so valuable that people shape their lives around its presence and start to take it for granted. These are the businesses we punish most.

Should we turn economic power into government power? The immediate implication is frightening. All three of these companies have well-staffed legal departments challenging the government's requests for private information about their users. Who will fight those requests when these companies are agencies of the executive office?

The long term implications are devastating. Who will create the next Facebook, Google, or Amazon with the prospect of working 20 years and having it taken by force, as punishment for succeeding too much?

And would a nationalized Google have created a self-driving car? Would a nationalized Amazon have invented AWS? Would a nationalized Facebook invest in high-speed internet for Africa? Nationalization destroys growth.

Economic growth follows economic freedom. The world has experimented many times, and the theory and the experiments agree—Venezuela is only the most recent tragic example. At the root of any other argument is a desire to redistribute wealth.


Alation (http://alation.com) - Redwood City, CA; Seattle, WA - Sales and customer success REMOTE

Looking for Full Stack and Backend Software Engineers, DevOps, Product Managers, Product Marketing, Digital Marketing, Sales Executives and Sales Development Representatives. VISAs welcome, though we can't relocate international candidates right now.

Alation is democratizing access to data by tackling one of the most universal challenges in analysis – the challenge of context. We analyze petabyte-scale data warehouses at companies ranging from retail to banking to pharmaceuticals to improve the way data is accessed. Alation has brought together an incredible team of engineers, designers, and executives from Google, Apple, Oracle, IBM, one-man startups and top schools. We have raised $32m and our customers include eBay, Square, Citrix, Pfizer, General Electric, and Tesla.

We've got a great product in a huge market with great people, and we have a lot of fun. Come join us!

https://alation.com/careers/ or send your resume to jobs@alation.com

30-minute talk about the problem we're solving by our head of product: https://www.youtube.com/watch?v=PeY5VxdUa6Y


I don't see any postings for Seattle, WA on the career page..


Alation (http://alation.com), Redwood City, CA (sales and customer success REMOTE)

Looking for Full Stack and Backend Software Engineers, DevOps, Technical Support Engineers, Customer Success, Product Marketing, Digital Marketing, Sales Executives and Sales Development Representatives. VISAs welcome, though we can't relocate international candidates right now.

Alation is democratizing access to data by tackling one of the most universal challenges in analysis – the challenge of context. We analyze petabyte-scale data warehouses at companies ranging from retail to banking to pharmaceuticals to improve the way data is accessed. Alation has brought together an incredible team of engineers, designers, and executives from Google, Apple, Oracle, IBM, one-man startups and top schools. We raised a $9m Series A, and our customers include eBay, Square, Citrix, General Electric, and Tesla.

We've got a great product in a huge market with the right people for the job, and we have a hell of a lot of fun. Come join us!

https://alation.com/careers/

30-minute talk about the problem we're solving by our head of product: https://www.youtube.com/watch?v=PeY5VxdUa6Y


We had a similar problem and have made a lot of progress by reducing the size of changes submitted for review. We used to submit code only when we thought a feature was complete, and the median review was probably 1000 lines. Now we're closer to 100-200.

This has a ton of positive effects:

  - Reviewing code is much less daunting
  - Reviewers give more detailed feedback
  - Developers get feedback on lower layers (such as model definition) before writing a ton of code that depends on it
  - Reviews come quickly enough that developers don't need to switch to another project before continuing
It was a bit difficult to make this transition. We started out by explaining what we wanted to do (submit shorter diffs) and why, and people generally were on board. But most people didn't know how to do it. It's not as simple as submitting a diff whenever you write 100 lines of code, since the diffs need to be coherent. Here are some techniques we used:

  - Use feature flags to commit unfinished features to master/trunk without exposing them
  - Submit model changes as their own diffs, then API changes, then UI changes
  - As you work on a feature, pick out parts that seem ready for review, stage and commit them, send for review, then branch again from that point and continue working.  This takes a decent amount of git-fu, so train folks accordingly.
Another thing to note is that our reviews are not at all evenly distributed around the team. We have a team of 13 engineers, and it's probably an 80-20 split—80% of reviews are done by 20% of reviewers


I agree it's important to reduce code review sizes, but I try to avoid reviews that end up leaving incomplete code in production such as having individual domain changes and feature flags. If a feature is cancelled before it's completed there will be unused code checked-in - which to me is technical debt.

I prefer to split domain changes into different commits on the pull request so they can be inspected individually - eg #1 Create API, #2 Consume API with model, #3 View Logic. And for feature flags, try to figure out a possible fully implemented subset of features - eg show new model properties to the user that will in the future be editable.


Feature flags are huge win for building reliable systems. You want them. Incomplete implementations should be modular, like complete implementations. Don't fool yourself, all code is tech debt. If you aren't writing modular PRs, you are in for a world of pain down the road anyway.


Also don't allow commits which break "git bisect". There are two ways to deal with this, either force all commits to be complete, or document that some patches will need to be squashed together before they are committed to the upstream repository.


This could be avoided by not merging into your master branch, and having a feature branch, from which subsequent branches are made. Then the dev can open pull requests to merge to the tertiary branch into the secondary one without affecting master.


If your team uses feature flags, and it should.

The only healthy thing to do, is to set a deadline for each. When the deadline comes around, the code should be deleted, or a very valid reason should be brought up to extend the deadline.


Your last 3 points, especially the last point seems to require a lot of discipline to pull off.

There's an article IBM's developerWorks that says code reviews are the most effective when devs are reviewing 2-400 lines of code at a time. However, when you have team members spanned around the globe, it's difficult to get quick feedback, and obviously one shouldn't wait until there's feedback. Some people on my team will also open up a PR really early. What I'm saying is, there are a lot of roadblocks to review the code your team members many time zones apart and still give them the feedback they need on a timely manner. How would you adjust the approach described above to fit team members that are 7-8 timezones aparts?

http://www.ibm.com/developerworks/rational/library/11-proven...


I'm based in LA and work with a team in Germany. I think we're most productive when we devote the morning to reviewing code and the afternoon to writing code that can be put into a PR by EOD. This way nobody is blocked. It does require a ton of discipline though because if you don't do the morning review you will fall behind and basically get stuck perpetually reviewing PRs without any time for writing code.


Is that review lopsidedness on purpose? IE, do devs go in and choose to do an arbitrary set of reviews when they feel like it? or are they assigned?

The one code-review-heavy team I worked on did a modified round-robin style. The team wiki had a list of all devs and a count for how many reviews they'd done during the current (3-month) phase. You go in, choose a review with the lowest count, increment their count, then assign them your review. This way, they aren't available again until anyone else who had their count has also done a review.

You could still assign big reviews to senior devs and small reviews to juniors, because there would usually be multiple people with the "lowest" count -- ideally, at some point every dev would have 10 and would then gradually all increment to 11.


Wowz why hasn't anyone automated the process of counting reviews?


We've achieve a similar thing, but through the use of feature branches. Tickets are branched off a feature branch and merge requests are made back into it which are reviewed one by one.

There is still a final review when merging the feature branch into the upstream branches, but it's merely a scan and not an in-depth review.


Have you had any issues with some parallel features overlap in their changes? IE: messy merge conflicts in models after two teams took base functionality in different directions?


  Please manually add newlines to your blockquotes,
  otherwise your comments are near-unreadable on
  touch-screen devices. And they'll be much better
  on mouse-driven ones, too.


^ Skimming through the page I thought this was an example of a bad PR comment ;)


Love this! Is there a way to trigger it to run when an event happens in my book?


Yeah, you could create a codelet and then configure a webhook to invoke the codelet: https://github.com/fieldbook/api-docs/blob/master/reference....

(In the future we'd like to have an even easier / more seamless way of handling webhooks with codelets.)


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: