This argument is also true of any equity that doesn't pay out dividends.
Most people wouldn't consider the stock market to be a zero-sum game. Maybe in the ultimate long-term, but not within a time frame that's meaningful for anyone.
You're forgetting book value and future earnings valuation.
If a company earns $X billion per year, even if they don't issue a dividend, if their market cap dropped to fifty bucks an acquirer could swoop in and pay themselves the company's earnings directly for as long as it keeps running, or shut it down and sell off the book value for a profit.
If there's no dividend, any earnings + book value still exists as a potential profit to someone who would own the company. So you just have to assume that in the future someone would be willing to buy $X for $X-1.
Isn't it obvious that buying shares in a public company gives you proxy, fractional ownership of a business that's generating cashflow? You don't get that with crypto. Crypto, on the other hand, literally requires someone else to take you out in order for you to profit.
Bad people can still be the recipients of injustices or undue hardship. For an extreme example, you can still feel bad for a thief who gets tortured extensively.
You can even feel sorry for people who are led to ruin by their own hubris/etc. For an actual example: It's not insane to feel sorry for Travis Kalanick. Yeah, he sounds like a bad person. It would still really suck to see your "magnum opus" swept away from you. Did he need to be removed? Yes. Would I like to be friends with him? No. Do I still feel bad for him? Yeah, kinda.
Sure, the guy from the article kinda sounds like a dirtbag. Still, he was shunned from his family (and a close family at that) and is essentially losing all of his close social network because of staunch religious beliefs that most of us would call silly. That sucks.
People don't have to fall into this binary classification of "sympathetic" or "unsympathetic". I can feel bad for him losing his family and wife, but feel no sympathy for his financial situation.
As an aside, this is also part of what makes leaving cults so hard: The thought of losing your entire social circle, including your immediate family, is daunting. If you want to know why more people are involved in cults despite being seemingly normal, this is a big part of it.
> Sure, the guy from the article kinda sounds like a dirtbag. Still, he was shunned from his family (and a close family at that) and is essentially losing all of his close social network because of staunch religious beliefs that most of us would call silly.
Do most of us really consider 'don't leave your wife for your mistress' a silly belief? From the article, that really sounds like the reason he was cut off.
Silly in the sense that it's considered an unforgivable offense relative to how mild it actually is (in the realm of "ways you can screw up your life and others"). It's the staunchness that makes it silly.
If my sister cheated on her husband, I wouldn't stop talking to her forever or kick her out of the family (to the extent that I have that power). I'd be disappointed and it would affect our dynamic, sure, but it's not even close to a shunning offense.
Thinking on it, there's actually relatively few things she could do to warrant that kind of treatment.
"Don't leave your wife for your mistress" isn't a belief, it's a rule. Belief is saying that it applies across the board no matter what, no matter why.
You get told to "hang yourself" and told you should "die screaming" or just have someone yelling "cunt cunt cunt cunt cunt" at you multiple times a week?
I used to work for a hedge fund. Mostly people just didn't understand it and were skeptical, but phrased it in a way that gave me an out: "I don't understand how it provides any value to society," or things like that. Nobody ever harassed me online with just "cunt cunt cunt cunt cunt".
That was one of the best scenes in the movie IMHO. Personally, I also had no idea that level of investigation took place. This strikes me as similar to how energy trading firms will pay for thermal imaging data of power lines and such to gain an edge, or how other companies look at satellite imagery of parking lots to predict retail performance.
Which makes sense - when you're dealing with that much money, (and working in an environment where lying and sweeping things under the rug are viewed as valuable skills) it's irresponsible NOT to go and see what's going on with your own eyes, or to employ some third party to do so for you.
That was one of the best scenes in the movie IMHO. Personally, I also had no idea that level of investigation took place. This strikes me as similar to how energy trading firms will pay for thermal imaging data of power lines and such to gain an edge.
That seems not to be the case everywhere - they might make money but not profits anyway. It seems uncertain that they actually use the money to fund education. Not to mention the fact that they basically exploit the athletes, who aren't always even given a quality education in return. Some schools make every student help subsidize the sports programs.
> That seems not to be the case everywhere - they might make money but not profits anyway.
While it's mostly true that athletic programs as a whole are not profitable, it's also true that a majority of football and men's basketball programs are profitable[1]:
> > Between 50 and 60 percent of football and men’s basketball programs have reported net generated revenues (surpluses) for each of the nine years reported, while the dollar amount has increased slightly but steadily each year. (3.6)
> It seems uncertain that they actually use the money to fund education.
They don't. They use the money to fund sports programs that aren't profitable, like women's basketball. Women's basketball, in particular, cost FBS schools (in aggregate) about $1.8 million in FY 2014 (though ice hockey isn't far behind at $1.4 million).
Note that I'm not making a judgement here: I don't think we should eliminate women's basketball. But if we're going to argue about what actually costs the school money, we should at least be honest about it.
> Not to mention the fact that they basically exploit the athletes, who aren't always even given a quality education in return.
No qualms there. The NCAA's treatment of athletes is asinine and I'm quite certain we'll view this as a black mark in the history of sports.
> a majority of football and men's basketball programs are profitable
A majority of Division I programs. Only 252 out of 674 football programs and 351 out of 1099 men's basketball programs are Division I.
Division II[1] football and men's basketball programs are universally money losers. Every single one lost money. The Division III report[2] doesn't include as much detail, but I doubt that any of them are profitable either.
Oh sure, fair point. When I think of the college sports monolith I'm typically thinking of D1 exclusively.
I don't think many sports fans would care or even notice if you got rid of D2/3 programs. It's an interesting point when people like Ben Wallace or Chris Ivory come along, but it's mostly a non-factor.
I'm not even sure the NCAA would care, honestly, other than it being a talking point for them to claim athletes are "students first". I'm guessing it's mostly the athletes themselves who would care.
Yeah the entire NCAA system is basically funded by young men playing basketball and football, a few who are objectively being cheated out of millions of dollars (because the ncaa lobbies the nfl and nba to have minimum age requirements).
> I've heard many arguments about how its a cultural thing, old people in the west (more weighted towards N-America) are treated as a burden. A burden on the economy, a social burden (damn those annoying grandpa's and grandma's). Isn't that why the 401k and MediCare/MedicAid exist? (excluding the set of population that doesn't qualify for them) to pay them(selves) back for their 40+ years of service? I'd like to hear some fresh arguments/data on why they are treated as such. I'd be grateful to anyone who points me to more reading material on this topic.
Usual disclaimer: This is my opinion, yada yada yada. I am probably wrong on some (if not most) of this.
The elderly, especially in America, have an incredible amount of sway over national politics. Nearly 1/2 of voters are 50 or older [1]. As such, they generate a lot of ire in the US among the less-elderly because it feels like their needs are often met at the expense of the nation.
Medicare, for example, represents a huge amount of US entitlement spending [2] - though this is somewhat of a misleading number because Medicare funds quite a few things besides strictly healthcare expenses (like it funds most physician residencies, IIRC). Coming out in opposition to Medicare is often viewed as a bit of a political death sentence, because your primary goal as a politician is (at least it feels this way sometimes) to pander to older voters.
Additionally, steadfast conservatives tend to be elderly [3], which often puts the elderly in opposition to younger generations. Since politicians tend to listen primarily to their actual voters, you can sort-of understand the young liberal's decree that "things will be better when all the old people die."
Now, none of this is really the elderly's fault (aside from maybe that last part). Medicare is a reaction to an out-of-control healthcare system, and that's not necessarily your grandma's fault. If politicians listen to the people who vote for them, the logical answer would seem to be "go out and vote", not "get angry at the people who do vote."
But, if you're someone who does vote but feels like your voice still isn't being heard, you can probably start to understand some of the animosity.
> So as soon as they shut down, someone else will make an alternative.
They exist already. They're mostly horrible.
I pretty religiously use DDG, but even then I probably use the !g operator every third search or so.
Reddit's already almost entirely open-source IIRC. People have used it to make alternatives. Check out Voat, you can see the alternative in action (you might not like what you find, though).
They're horrible becuase not a lot of effort goes into them. If there's no alternative, then they will drastically improve.
Voat is bad becuase of the users. Not becuase it is an alternative to Reddit. If all Reddit users switched to coat, it would have a pretty similar culture and content, becuase it will have the same users.
I also use ddg but I haven't used a !g in over a year.
> They're horrible becuase not a lot of effort goes into them.
And not a lot of effort goes into them because there's no money to be made off e.g. a Reddit clone without doing the same things Reddit is doing. A vicious cycle.
> If there's no alternative, then they will drastically improve.
Ah yes, monopolies (virtual or otherwise) are well-known for drastically improving their products.
> Voat is bad becuase of the users. Not becuase it is an alternative to Reddit.
Alternatives are often created by people with strong viewpoints, e.g. Voat.
> If all Reddit users switched to coat, it would have a pretty similar culture and content
This makes a lot of assumptions, namely that the admins of Voat wouldn't quash that (and there's little reason to believe they wouldn't).
The big problem with Reddit was that the moderators abused their power to censor. (and in some cases, moderation was infiltrated with bad-actors, trying to create a controversy to manipulate a group of Reddit users to get them to leave).
The problem with Reddit alternatives like Voat; was that there were no responsible moderators who would censor the absolutely indefensible.
In other words: Welcome to the same problem the Internet has known since use-net. Hell. Since the BBS days.
This is totally an incomplete thought, and I'm not trying to be down on this author in particular:
It's interesting to see a lot of management thoughts and colloquialisms slowly creep into the "other side" of software development (i.e. the actual developers) and become fairly well-tolerated.
We still make fun of phrases like "paradigm" or "synergy", but we're all mostly on-board with phrases like "own <x>" or "growth mindset". You can see the author using the word "leverage" here repeatedly in the same way that we often chide managers for using words like "synergy".
Interestingly the conversation around "effective engineers" has also shifted to really de-emphasize that technical ability - the best engineer is a good teammate, first and foremost (and I think a not-so-subtle implication also is that a good engineer is mostly extroverted as well). In the past decade or so, it seems like the "effective engineer" has become one who straddles that line between management and technical ability.
I don't really have an opinion on this yet (I think there's good and bad, as with most things), but it's just fascinating to watch.
It's less about management and technical ability, and more about soft skills and hard skills.
A recent Washington Post article shared an analytical study from Google on what made engineers at the company successful:
"Project Oxygen shocked everyone by concluding that, among the eight most important qualities of Google’s top employees, STEM expertise comes in dead last. The seven top characteristics of success at Google are all soft skills: being a good coach; communicating and listening well; possessing insights into others (including others different values and points of view); having empathy toward and being supportive of one’s colleagues; being a good critical thinker and problem solver; and being able to make connections across complex ideas."
Unfortunately, almost all computer science education nowadays focuses on pure technical skills and hiring interviews at most tech companies also focus on the technical skills. The impact is that many engineers plateau in their careers because they've underinvested in (and oftentimes looked down upon) the "soft skills" that actually separate the top engineers from everyone else.
among the eight most important qualities of Google’s top employees, STEM expertise comes in dead last.
I have a lot of those soft skills. But no one is going to hire me as an engineer because I don't have the coding skills.
It comes in dead last because you have to have high level coding skills to get your foot in the door. Everyone has that. Getting ahead in that crowd means having others assets on top of being a good coder.
It is a little like saying "Height doesn't matter for success as a basketball player. As long as you are at least 6'6", what matters are these other attributes." Yeah, sure, cool. It isn't a strong differentiator for the in crowd because you can't even join the crowd without it.
>Project Oxygen shocked everyone by concluding that, among the eight most important qualities of Google’s top employees, STEM expertise comes in dead last.
This result seems a bit unsurprising. People who work at Google would already be in the top n-th percent in terms of STEM expertise. If everyone you hire is 'above average' then being a bit better than that has marginal gains and other factors would lead to your success.
I'd be curious to see how this plays out at smaller firms where they cannot afford to hire the top-end STEM expertise.
Your observation is a great one, and I'd love to see more data on this as well.
A related point, though, also rings true. Soft skills like being a good coach and effective listening are so underinvested in, that even marginal improvements in those skills lead to huge differences in success.
I see this in engineering leadership workshops that I've run with Jean Hsu and Diana Berlin, where even teaching a handful of coaching and listening skills can have a transformative impact on participants.
At Quip, we run one coding interview that happens on a laptop, and where your conversation and discussions with the interviewer, including how you handle suggestions and feedback, matter a huge deal.
For experienced hires, we'll do deep dives on technical projects that they've worked on. Sometimes, I'll frame these as "Suppose I'm a new member joining that team. Bring me up to speed." These interviews focus on whether the candidate can clearly articulate concepts, explain the big-picture motivations, defend decisions they've made, understand complex technical problems, and stay humble and share lessons learned.
For manager interviews, we'll also do interviews that are one-on-ones with engineers on actual issues that they're facing.
> we'll also do interviews that are one-on-ones with engineers on actual issues that they're facing.
Be careful with this approach. If you're not paying candidates for their interview time, you're not allowed to use their work. Big companies go to great lengths to demonstrate that the entire interview is for the purpose of a hiring decision and nothing more. This is to limit liability. Your approach is very dangerous for your company and if an unhired candidate's idea shows up in your product, even if you arrived at that result independent of the interview, the candidate has a strong case against you in a lawsuit.
If you're doing interviews like this, be sure you've discussed all the nuances with your company's lawyers.
I strongly agree with this analysis. It's already a population with strong STEM abilities, it should suffer from some sort of diminishing returns after an already high hiring standard on a company well-known for hiring only top students.
It's like conducting an analysis on skills of all F-1 drivers, and what differentiates champions from remaining pilots. I'd expect a lot of mindset-related and soft skills to appear as key indicators, and "driving abilities" to have a minimal gap between drivers.
This would be like a study that found that height was completely uncorrelated with performance in the NBA. Doesn't mean that height is irrelevant in basketball, only that selection bias is in full effect and that we're not looking at a 'normal' population with respect to height. Same IMO with respect to google and engineering skill.
This makes so much sense and frequently overlooked. I find even in other areas (such as sports), what makes someone seem really impressive generally isn't what is actually important.
A dumb example is from cycling, people frequently over-practice the ability to sprint at the end of a race but what is really important is the ability to conserve energy throughout the race... Really dumb example, but I think it is somewhat similar.
Is there any evidence this is happening? I work at Google and as a lower level engineer more often than not wish some of the leads had better soft skills which makes me think they're not emphasized nearly enough in terms of promotion, which is at least one measure of success.
I believe promotion committees try to see measurable impact, which at least to me sounds like soft skills unfortunately don't help much..
I can’t speak to this particular study, but as a former Google employee, I would take any of the social “research” done at Google with a massive grain of salt. Very little is peer reviewed (or even externally available) and the stuff I looked at internally is not even remotely rigorous.
Additionally, the results that make it to the media get way exaggerated compared to the actual underlying study. This is compounded by the fact that Google picks and chooses what it publicizes, so what you’re seeing has a huge PR/political filter.
> Unfortunately, almost all computer science education nowadays focuses on pure technical skills
Assuming by computer science education you mean the actual classes within that major, I don't see this as a problem. I didn't take CS classes to learn interpersonal relationship skills. Other college classes and the college experience in general does help with that though.
If talking about tech programs, I also think that isn't necessarily something they can or should focus too much on, as that's not their focus. The assumption is you have that part already figured out. If not, go through a course that focuses on that in addition, I'm sure you'll get a better education in that topic that way. It probably is appropriate for them to stress it's important though, even if they don't offer much in the way of rectifying it.
Or, spend a lot of time on self-directed self improvement in one or both those areas. The resources and programs exist for that as well.
> and hiring interviews at most tech companies also focus on the technical skills.
I agree on this. Companies should hire people that will function within their system. Hiring the smartest guy from MIT's class of 2017 sounds all well and good, but if they can't function well with your existing 100 employees and they leave after a year or two (or worse, they cause a few other people at your company to leave every year causing high turnover), the chances of them somehow making up for that are probably extremely low.
Our CS program had a "basic communication" class, where you learned to write basic reports, memos, emails, your resume, etc. The final project was investigating some piece of tech, writing a 30 page paper on it, and presenting your findings to the class. Other CS teachers were invited to drop in during the presentations too.
Supposedly they added this after receiving feedback from industry that the biggest problem was that their graduating students couldn't properly communicate.
Altogether it felt pretty appropriate, since it was still focused on CS related concepts.
> Unfortunately, almost all computer science education nowadays focuses on pure technical skills
I'm not sure I'd really call that unfortunate. CS education isn't about making you a more well-rounded person: It's about giving you a basic education in Computer Science.
Similarly I don't really lament that CS programs don't have a course in basic financial literacy, even though it would be incredibly useful.
These are really topics that should be addressed much, much earlier (empathy in particular is something we should start teaching children as young as possible) and should be mature ideas by the time people reach college-age.
> The impact is that many engineers plateau in their careers because they've underinvested in (and oftentimes looked down upon) the "soft skills" that actually separate the top engineers from everyone else.
To mirror the other comment, I hate to say it but if you're a software engineer at Google you're likely already a "top" engineer.
You're trying to explain what differentiates the top 0.1% from the top 1%, but I'm not sure it's a super useful distinction for the other 99%. For them, investment in hard skills might actually be considerably more fruitful (and land them that Google job in the first place).
Maybe not, I'll admit I could easily be wrong on that.
There's for sure a tricky balance on what fits into a CS education.
I remember when I was at MIT (oof, over a decade ago), many project-based CS courses where students were just put into teams and expected teamwork to just happen. Sometimes people got along, and the project would go fine. Other times, not so much.
I know I certainly wasn't very well-equipped to handle tension or to have hard conversations about fair distribution of work. And back them, I ended up just avoiding them. Knowing what I know now, even a single lecture on tools for more effective teams or for having hard conversations or giving feedback would have made those projects SO much more valuable in terms of being learning experiences.
Given that effectively using your CS education will involve collaborating with other people to some degree, I do believe that giving more emphasis to the non-technical skills that play a big role in your career would have a hugely positive impact.
> I know I certainly wasn't very well-equipped to handle tension or to have hard conversations about fair distribution of work.
I guess my point is more that primary school really should've prepared you for this: Group dynamics and how to handle these "group tensions" is more of a basic learning skill that we should be developing very early on.
I'm not arguing that this is a useless skill to teach, more that it's far more expensive and much less effective for MIT to be teaching you these skills and not MyTown elementary/middle/high school.
Why can't the managers with business backgrounds be the social engineers expertly manipulating the asocial software engineers? I thought that's what they were for. Distribution of labor!
There are quite a few implicit assumptions here that make it a dubious example, though.
For example, there's an assumption that what works well at Google would work well for other tech firms. And yet Google is in the rare position of having gained so much from its early golden goose that success in terms of producing viable, valuable products and services has been almost irrelevant among most of its workforce for most of its existence.
There's also an assumption that the staff at a big, famous organisation like Google are generally better than those elsewhere, and therefore that being successful in such an organisation is something to be emulated. Working at one of the Big Five seems like a default aspiration for some parts of the tech world, and there's definitely an element of hero worship for those who have made it. I can't help wondering whether that is simply because of the amount of money they can throw at new starters in the hope that they attract some of the best people among the catch.
What I see here is that if you're in an environment where being good at walking the walk isn't always necessary, talking a good talk becomes the path to recognition and success. While this is almost certainly true, anyone who's ever observed the phenomenon of middle management could have told you that, without reference to any specific industry. What it doesn't tell us is how much being able to walk the walk matters in most other environments where it is necessary for success.
The seven top characteristics of success at Google are all soft skills: being a good coach; communicating and listening well; possessing insights into others (including others different values and points of view); having empathy toward and being supportive of one’s colleagues; being a good critical thinker and problem solver; and being able to make connections across complex ideas."
That is describing what it takes for an individual to be successful in a group of men. I think Im safe in saying this is like that since the dawn of men. Specifically here, it happens in organisations big enough so that people's actual productivity is unknown.
Innovation though generally doesn't happen in such environment.
> Project Oxygen shocked everyone by concluding that, among the eight most important qualities of Google’s top employees, STEM expertise comes in dead last.
And yet it seems to me that the typical software/technical interview process emphasizes #8 more than the other seven. Maybe like the drunkard searching for lost keys under the lamp post. Quite sobering.
"Project Oxygen shocked everyone by concluding that, among the eight most important qualities of Google’s top employees, STEM expertise comes in dead last. The seven top characteristics of success at Google are all soft skills"
Worth keeping in mind that this is true for the culture/environment within Google, not universally. Different companies have different cultures, and the above actually makes me more cynical about the culture within Google. If two people have competing ideas for a engineering solution/implementation, is the winner going to be the one with the best technical merits, or the one best at office politics? Judging from the above study, it seems like Google's culture is less meritocracy-driven and more politics-driven than people think.
This is the article that argues that for people in the top 1% of STEM expertise, STEM expertise isn't the distinguishing factor.
Frankly, it would be surprising if it was. If you've topped out that tech tree, most of your performance variance will come from other areas where there's more, uh, variance.
I did some reading into project Oxygen. From what I could tell it set out to find the most important qualities for managers at google, which made the results much less surprising. I would love to find more info on this either way.
This is a mindset that I encountered a lot from managers and VPs at Google. The premise is that the best way to improve one's incremental technical contribution is to improve an entire team.
If you bust your ass for a year and improve your own technical chops, you might be able to implement stuff 10% faster. Instead, you could help a team of 30 people to produce 10% more work. This is achievable from my anecdotal experience, but citation needed. At this point, you can throw your 10% incremental improvement out the window because now your incremental engineering improvement is 10% of a 30 person team, or 3 engineers. Now imagine you organized a department of 300 engineers to develop the right mix of infrastructure, forward-looking projects, and core projects such that the organization runs and grows efficiently. Now your incremental technical contribution is so much larger than the initial 10% that it's laughable.
This doesn't have to be limited to management, which is where I think the Google VP perspective falls a little flat. You can do this kind of work through pure technical contributions. I think managers write about this kind of leverage more often, but it can come from any kind of organization. A core library or tool has a massive impact, because it's reusable past the bounds of your team. Maybe you're change isn't 10% distributed across 30 people, but you could improve 3000 people by 1%.
Yeah, and I think this is where it's fair for the author to use terms like "leverage", since you're effectively multiplying force.
To be fair, though, I don't think having that team-first mentality (where you're focused on improving the team's productivity as opposed to your own) necessarily implies pervasive "management thinking" (for lack of a better phrase) or even soft skills. I imagine we can all think of teams where that isn't the case.
This Leverage concept can be applied to a family .
Instead of YOU, as head of household putting more hours to solve Home chores/issues, if you teach other 3 members of your family how to solve issues/do chores , you get 3X return .
An example is online shopping for Home: Instead of you spending time for all the research each time, teaching family members, you can achieve leverage .
> If you bust your ass for a year and improve your own technical chops, you might be able to implement stuff 10% faster. Instead, you could help a team of 30 people to produce 10% more work. This is achievable from my anecdotal experience, but citation needed.
> At this point, you can throw your 10% incremental improvement out the window because now your incremental engineering improvement is 10% of a 30 person team, or 3 engineers
I think you're being a little too pessimistic, although I do see where you're coming from. Technical jargon and vocabulary aren't created out of thin air: they are meant to efficiently and effectively convey certain facts and behaviors. Sometimes (perhaps many times?) there are co-opted and misused by certain people (many times managers, since they're further away from actual coding).
The thing about engineer being a good teammate: I don't think it is about extroversion as much as realizing that modern software systems are very non-monolithic and thus require cooperation among many different services to work effectively. This means that the days when a person could write the entire thing by himself/herself is over, and a lot more co-operation is required among engineers to design and build effective systems. That cooperation requires a certain amount of communication skills (apart from stellar technical skills), but it doesn't mean that you have to be an extrovert.
I think often lost from the whole introversion vs extroversion debate is that:
1. It's not a binary. It's a bell curve where many people fit near the middle and some are extreme outliers in either direction.
I know personally that I am an introvert, but I confuse a lot of proclaimed extroverts who mistake me for being extroverted because I have a fairly gregarious and willing to try anything once personality.
2. Introvert / extrovert really has nothing to do with communication skills except that introverts appear to be bad at verbal communication usually because that skill isn't as practiced as extroverts. But good verbal communication is totally a developable skill rather than something innate to a person.
This means that the days when a person could write the entire thing by himself/herself is over, and a lot more co-operation is required among engineers to design and build effective systems.
At that point, you're not really talking about being an effective engineer, though. You're only talking about being an effective engineer in a large organisation working on a large project.
I know plenty of people in the freelancing and startup world who can build and maintain very significant systems single-handedly. Take someone with the skill and experience to do that, give them a free hand in choosing whatever tools and processes work for them to get a good job done, and remove the overheads of micromanaging this and co-ordinating that. It's not unusual for that person to outperform an entire team working for a competitor under more traditional constraints, or for a small number of such people who can keep the overheads down to outperform a more traditionally organised but mediocre team an order of magnitude larger. Of course these people also need good soft skills, but those are not why they are so productive.
> That cooperation requires a certain amount of communication skills (apart from stellar technical skills), but it doesn't mean that you have to be an extrovert.
There are many people (including myself) who can operate quite successfully in the text-based world (Slack, email) and collaborate that way.
I think Slack (and other tools like it) helps the introvert be a more active participant or even a leader in certain technical discussions. Most especially, the ones where the servers are melting down.
> That cooperation requires a certain amount of communication skills (apart from stellar technical skills), but it doesn't mean that you have to be an extrovert.
Yeah, and I realize it's a spectrum and not a binary thing. My point was more:
If we use the simplistic, trendy definition of introversion/extroversion as "do you gain energy having conversations or does it require energy?" and then say that regular conversations are an extremely important part of doing modern development work, I think it's fair to say that you're implicitly selecting for extroverts.
And again, I don't really put a judgement on that. I think it's fair to say "regular conversations are required to be successful as a software developer." I'm just noting the shift (as you've also done!).
"Leverage" has real meaning. Another word for it that you might be more familiar with from software is "reuse".
Reuse is leverage. If a piece of software (function, class, module, service, tool, whatever) is used for 1 task, it's not leveraged. If it's used for 10 tasks, that means the creation of the reused thing had 10x leverage: working on that reused thing created 10 times more value than working on something that's only used once.
It's not quite that straightforward as everyone knows, there are costs to reuse (abstractions (both lowest common denominator and leakage), more dependencies, higher maintenance costs owing to risk of breakage of multiple clients, etc.). But the leverage is very often real.
What's your point? Synergy has real meaning as well. The problem is when concepts like leverage or synergy become goals in and of themselves. That might be something you'd expect from someone who's read a lot of management books, but you'd expect engineers to see these as means to an end.
While I don’t advocate the use of these terms in every situation, it’s hard to have all ends in mind and to carefully choose which tool should be applied to each end. That may be why these properties are used as goals. Easier to spot, easier to reason about. Basically, they are heuristics.
> You can see the author using the word "leverage" here repeatedly
Or maybe devs/engineers are just growing more eloquent than used to be? "Leverage" is truly the most intrinsic essence of everything engineering/developing. Reducing man-days, eliminating manual efforts, extracting infinitely reusable abstractions, code that emits+evals code .. I could go on and on and on --- hard to find a more sufficiently terse umbrella moniker that captures the mindset behind it all than "leverage"!
The terms themselves don't induce scoffing, it is the specific usage patterns over time, which then becomes associated with the term, devaluing it as a meaningful way to communicate.
Synergy was frequently used in a mindless, vague way by individuals who wished to appear in-the-know. Thus, it was devalued, as people actually in the know did not want to be mistaken for those those who didn't know how to use the term.
This dynamic usually happens with high-level abstractions that have much complexity and nuance, as it is difficult to assess if the term is being used in a meaningful way. "Paradigm" and "synergy" are good examples of such powerful yet tricky concepts prone to misuse and buzzification.
Some philosophers say that the meaning of a word is determined purely by its usage. In this view, a word like synergy loses much of its meaning, as it is commonly used in such a jumbled and unclear manner.
> Synergy was frequently used in a mindless, vague way
Again, I'm really not trying to put the author down here - but "leverage" is a term that can very easily and often is used in a mindless and vague way. Not always, of course, in the same way that "synergy" can absolutely be used properly.
Still, it would be extremely easy for me to mindlessly posit whatever I want as "high impact", or at the very least "minimal time investment". "Minimal" and "high impact" are inherently subjective phrases (minimal compared to what? high compared to what?) and without a baseline are effectively useless.
So, I guess I still don't see a huge difference between "synergy" and "leverage" in terms of vagueness. And if vagueness exists, mindless usage is pretty soon to follow.
I'll take that table-turn! Well my intuition here goes like so: think back to the first moment in life you heard about a "lever" --- then "synergy". Chances are, the former was an illuminating childhood moment when simple levering was first powerfully demonstrated to you by a peer or parent, and tickled your inner engineer/fixer-upper/tinkerer. Chances are, no comparable "engineerish" moment occurred when you first encountered the latter.
Probably the wrong person to ask :). The first time I heard the word "synergy" was downloading https://symless.com/synergy , which was an incredibly useful piece of software and absolutely did tickle my inner engineer (trying to figure out how it worked).
This frustrates me greatly. Many "engineering management" professors will show Dilbert strips and Office Space memes, then immediately fall into using the same kind of vocabulary that these works mocked.
(Recall that Initech in Office Space had "Hawaiian Shirt Fridays" - one of the core features of this manager-speak is to try to appear human and relevant as much as possible.)
>But the things that have crept in seem to have because they work.
Keep in mind that things like Agile and Scrum might have had buy-in from team members because a team member adopting it wasn't as high of a cost as the same team member leaving the job. You might be able to object, but you'll probably be overridden.
There's some amount of reprogramming that happens there to keep the team cohesive, so people might begrudgingly adopt new habits. So in those cases, "it works" is barely sneaking in because everyone was forced to make it work.
It's not as easy to prove/disprove as more objective things like program performance, size, or correctness. There's a whole lot of flavors of "it works" out there.
I don't think so. Leverage has a precise concrete meaning in this article. We shouldn't avoid a descriptive accurate term just because it's for an abstract higher-order concept.
> I often see complaints about Agile and SCRUM met with, "You're just not using it correctly."
To be fair, this is true a lot. Agile has quickly become "whatever you were doing before Agile but now with stand-ups and kanban boards."
The real problem with Agile is that it's kinda stupid to assume that companies will radically change their development process and that they won't just do "whatever we were doing before but with a couple bits and pieces from this other thing."
It's way easier to keep doing whatever you were doing before and just say that it's "Agile." See, for example, the number of teams that have long-winded standups even though that's pretty explicitly discouraged.
> What would not have helped, or been in any way productive, would have been spending time trying to figure out how many "points" my tasks for the day are worth. I still don't see how that system is actually different from just using hours beyond philosophical arguments.
Totally my take on the whole point system, but:
They're definitely related (hours and points), but basically the whole idea is vagueness. Figuring out if something will take 3 hours or 5 hours is kinda meaningless, because you really have no idea until you get into it. Saying it's worth "5 story points" might suffice as a rough representation of that 3-7 hour chunk.
If it ends up taking 20 hours, oh well - good to know for next time!
The idea is not to bicker over whether something will take 3 hours or 5 hours or 7 hours, but to just slap a vague label on it as "low-to-moderate difficulty." It's supposed to save time in that regard.
> Basically, I prefer a more focused and leaner version of the approaches.
I think any reasonable Agile advocate would tell you to discover what's working for your team and what isn't, and to adjust accordingly.
The point is mostly to move away from that extremely long-winded waterfall process and move towards rapid iteration. Story points and stand-ups are just tools for accomplishing that (by estimating velocity and having regular check-ins).
Agile requires flexible features since the deadlines are fixed. The point system is there to give an idea of how much you can cram before the deadline and negotiate with the client about what to axe from the release
Easy bullshit scrum test: go to a manager and ask what feature will be in the release and what will be axed.
If nothing is going to be cut from the requirement docs, all the castle about poibts priority and speed just falls down (or you have a ridicolously lax deadline, of the likes I’ve never seen in practice)
> The point system is there to give an idea of how much you can cram before the deadline and negotiate with the client about what to axe from the release
Well, it's more than that though - otherwise you'd just assign each developer 80 "points" worth of work for each two-week sprint.
> If nothing is going to be cut from the requirement docs, all the castle about poibts priority and speed just falls down (or you have a ridicolously lax deadline, of the likes I’ve never seen in practice)
Adding stories to an iteration in progress is also (I'm pretty certain) explicitly discouraged.
If your manager is doing that, you've already kinda lost the Agile battle.
I think that's sorta what people mean when they say people are doing Agile wrong - they do these things that are explicitly discouraged.
Whether there's any way to reconcile that, I can't say.
> I think that's sorta what people mean when they say people are doing Agile wrong - they do these things that are explicitly discouraged.
Usually how it goes. It's like critics of communism. Or libertarianism. Maybe--just maybe--it's a shit ideology that is totally unworkable.
I think my current place is on their, what, 8th "reset" now? Where they try to correct their process because it's "not working." Despite not listening at all to the developers who are telling them week after week exactly what is wrong: management forcing unreasonable deadlines on developers and throwing all process out the window.
It would be more amusing if I wasn't one of those caught in this demented whirlwind.
I think I'll start a new fad. Instead of Waterfall, I'll propose we call it: Typhoon Development. It's where management focuses all their attention on a single project for a short period of time, stressing the developers to the breaking point and eventually moving on. But not before completely destroying the code base in their wake.
> Maybe--just maybe--it's a shit ideology that is totally unworkable.
Could be. Much like communism, it's something that seems to work remarkably well for small groups of people but seems to have problems with large, entrenched groups.
There are enough agile success stories though that I don't think the ideology is completely silly.
> I think my current place is on their, what, 8th "reset" now? Where they try to correct their process because it's "not working."
It's highly unlikely that any methodology would have any effect on your current place, regardless of how brilliant or revolutionary it is.
I think it's tempting to dismiss Agile as stupid or unworkable because it's failed to produce any results at organizations like this (and often just made things worse).
The truth is really that your organization is highly dysfunctional and the problem is management. There's no development methodology that will fix that, and indeed it won't get better until those people see the light of day (unlikely) or leave/are replaced.
For more functional organizations, or even organizations where management is willing to admit they might be wrong, Agile can be a nice set of guiding principles for development work that makes life easier.
> There are enough agile success stories though that I don't think the ideology is completely silly.
Any lonk to read one account of such written by devs themselves, as opposed to the vast majority that are written by consultants selling agile packages?
I have used scrum in two completely different companies and it was working really well in both.
In both cases management was on board with scrum and knew what that meant. Everything was estimated by devs, not managers. If there was an external deadline, scope was adjusted to meet it.
> Saying it's worth "5 story points" might suffice as a rough representation of that 3-7 hour chunk.
> If it ends up taking 20 hours, oh well - good to know for next time!
The idea behind points in this situation is to start equating that 5 points = 20 hours (for this type of problem, for this team). If you think of it in terms of "this story is about the same complexity as this other one". Whether you call that 5 or 15 or 50 points is largely irrelevant, so long as all 5 point stories are roughly equivalent and a 10 point story is about double the work of that.
The rest of the uncertainty around complexity and people is supposed to wash out in the averages of the team: for example the fact that one person may typically do 12 points a week while another does 30 does not really matter for figuring out the overall velocity (team points per week), assuming the team does dozens of points per week total.
Now that said, I've never successfully used points. Sometimes it was due to endless discussions trying to equate hours to points (mostly from management and others outside the dev team), poor estimates, radically different estimates or skill levels, and probably several other reasons I'm unaware of.
Now my team does t-shirt sizes for long term things, and hours for the stuff in sprint (basically as it's started), but it's still often way off.
Does anyone have successful (long term) experience using points? What did you do to make it work? Does it actually have material advantages over other methods?
Yes, we have been using them successfully for quite a while. We only use it to estimate roughly what fits into a sprint.
No comparisons to time or between team members are made. I think that's really important. Management is on board with that. If it wasn't, it probably wouldn't work.
> Now that said, I've never successfully used points. Sometimes it was due to endless discussions trying to equate hours to points (mostly from management and others outside the dev team), poor estimates, radically different estimates or skill levels, and probably several other reasons I'm unaware of.
After two years of managing the same team of developers and gathering metrics, my PM[0] and I were able to successfully forecast tasks to within a few hours of precision for the team's 2 week feature work sprints.
The key to doing this was having a behind the scenes multiplier that was applied to each developer's capacity. Visual Studio Team System (or whatever it is called today) actually supports doing this. Work was still entered in "hours".
I forget how we even did it so that the devs didn't see the multipliers, but it all worked out some how.
Another key is never have a task that is more than 8 hours. Break it down further, and further, and further. However at some point there is a trade off between spending time breaking tasks down and actually doing tasks. Learning how to break tasks down is a skill that only comes with a lot of forced practice. No one likes doing it, no one likes learning how to do it, and for a new team I'd say it might not even be possible. Some familiarity with the code base and problem space are needed before 2-4hr tasks can be generated for 100% of all work that needs to be done.
We used t-shirt sizing only for initial planning of what work was going to be done. In our case we had 2 types of requirements, internal engineering work (code quality, refactoring, adding new libraries, etc), and feature requests coming from, mostly, external. We'd first triage based on t-shirt sizing, saying we had enough capacity in a sprint to do, for example 2 large, 2 medium, and 4 small sized items.
A senior dev (expensive!), myself, PM, and UX lead, would all sit down in a room and use the planning method taught in BJ Fogg's boot camp (https://www.bjfogg.com/bootcamp.html), which sounds new agey and stuff but it 101% works and ends with everyone in the room agreeing on exactly what should be done[1]. Once the t-shirt sized features were decided on, developers would spend a couple hours (or more...) breaking those features down into ~4hr tasks. At this point we'd discard any work that was over in hours, based on priority. Basically a second pass filter. (If devs guesstimated one of the other t-shirt items would actually fit, a quick breakdown would occasionally be done to see if we could squeeze it into the sprint).
The overhead here was really high. The first part was ~3 hours of prep + meeting for senior leadership: myself, UX lead, PM lead, and stakeholders in the feature work that sprint. The second half was basically the better part of a day for the entire dev team[2]. The super cool advantage of this was that at our peak, all the work was super parallelizable. Dependencies between tasks were mapped out, and anyone could go onto the task board and grab work that they knew would fit in just in time to the work their team members were doing. I cannot express enough, having everything broken down into less than a day provides amazing benefits, and also clarity of though.
We were kind of in a Goldilocks scenario though. Clean code base, all written by the developers there, multiple years experience in the same code base, and a PM team who lets us take a month+ to refactor when things got out of hand. Even then, it took us ~2 years before we were able to reliably hit our burn down every single sprint.
But wow it felt good when the machine finally became perfectly oiled and we were able to ship out embedded firmware every 6 weeks (3 week sprints, 2 weeks feature work, 1 week code quality[3], every other version went out) without stress or crazy[4] hours.
[0] A good PM is a force multiplier, a bad PM is a force divider.
[1] It is the best planning technique by far. Once we switched over to his style of planning sessions, everyone walked out of the room genuinely happy with what we were going to do that sprint!
[2] Once we did a session over fresh made to order Piña coladas, made in coconut shells. I think my PM almost cried from the lack of productivity that day.
[3] Bug fixing and code base improvements. This went up and down accordingly to stay under our bug bar. And after a dev came off of a feature push, they would be told to just work on whatever bugs they felt like for a sprint so as to avoid burn out.
[4] Not counting a couple devs who would refuse to go home, even after I cut their excess feature work and literally came in on weekends to drag them out of their chairs. There was 0 penalty for ICs in not shipping! Design didn't always help, they had cool new visual effects that some of the devs really wanted to see. Doing fancy visuals on an embedded processor with kilobytes of RAM is one of the coolest feelings ever.
> If it ends up taking 20 hours, oh well - good to know for
> next time!
If a project is adding real productive value to the business there won't be a next time as the tasks should be intrinsically unique. A non-unique task suggests either poor product strategy, poor architecture, or that there's a pre-existing package or product that you should be using instead of recreating the wheel. At best, unavoidable repetition signals deficiencies in the state-of-the-art (e.g. overall Linux or Windows ecosystem), but those are rarely the sorts of tasks where you see trouble communicating or planning.
> The idea is not to bicker over whether something will take
> 3 hours or 5 hours or 7 hours, but to just slap a vague
> label on it as "low-to-moderate difficulty." It's supposed
> to save time in that regard.
The purpose of scoring is to enhance the precision of time management. Theoretically, you should be bickering over details! The point is to reliably track so-called velocity with increasing precision to assist executives with product planning and orchestration of resources. But as I mentioned above, if you're doing anything of real value you're constantly creating unique solutions to unique problems. Those solutions and problems should constitute the bulk of your effort. As you suggest, your scoring necessarily must be uncertain and imprecise to be accurate and reliable, at least when you're attacking worthwhile problems. But that's completely at odds with the function and aim of scoring in Agile, which is to achieve increasing precision.
Agile methodologies come from the world of industrial automation where you're trying to refine the process of building millions of identical widgets with designs that evolve relatively slowly. Increased precision in resource management (e.g. real-time inventory management) allows managers to squeeze more profit out of the product without any additional expenditures. It's one of the rare management tools where they can uniquely add measurable value. But repetition and slow evolution is pretty much the complete opposite of what you should see from an efficient and capable programming team. At best, something like SCRUM routinizes poor value-add. Agile isn't a recipe for success, it's a recipe for making failure more efficient. (Not the experimental, knowledge-building definition of failure.)
In the context of software, Agile tries to achieve the impossible, which is to mechanize innovation. It's fundamentally broken. If you cherry pick aspects of SCRUM (or any particular Agile methodology) it's no longer SCRUM, nor is it novel. At best the Agile fad has introduced more programmers to, e.g., unit testing. But Agile is neither necessary nor sufficient to adopt unit testing; nor is unit testing always the most efficient use of time, especially when formal verification is practical. And while fast iteration is ultimately what you want to achieve, again the point of fast iteration is remove as much repetition and wasted effort (e.g. orchestration latency) as possible. If you're iterating fast, you're spending less time on tasks that are easily articulable, let alone predictable, and thus not amenable to fine-grained, precise time management. This is a consequence of the very purpose of software programming--to shift tasks that exhibit regularity to the domain of computers.
As for me, I left my previous job the moment people started complaining that our velocity was "too fast"; that (I kid you not) we should slow down the pace of work on a big, high-priority project in a futile and misguided attempt to make our time management more predictable (like the more junior teams), oblivious to the tensions between accuracy and precision and to the fact that the inaccuracy of our overly precise scoring was actually evidence (especially in light of other evidence) that we were working particularly efficiently.
As far as I understand, my prediction about when the project would wrap up if my preferred strategy (for which I was effectively the deciding vote) wasn't followed was accurate nearly down to the week, for a project that was supposed to take 3-4 months but ended up taking 9 and which was supposedly the highest priority for the entire (NYSE-listed) company. It easily could have taken 3-4 months if some of the engineers didn't approach time management through the lens of Agile development. They would have been more tolerant of the predictive errors for the easy tasks and more suspicious of the estimates for the more complex tasks, many of which were backloaded in this particular context. The lens of SCRUM in particular and Agile more generally primed them to equivocate tasks; to see similarity and repetition where there wasn't any.
Most people wouldn't consider the stock market to be a zero-sum game. Maybe in the ultimate long-term, but not within a time frame that's meaningful for anyone.