I'm noticing on many projects that no one has the time to write tests. They feel pressured for time and refuse to spend even a minute writing tests.
And yet, magically, everyone has unlimited time to waste in a debugger! Where is that free time all of a sudden coming from?
I've never understood the appeal of Tailwind
The power of CSS is reusable classes
Style once → apply anywhere
Modifying a Tailwind style means doing a find and replace on 100s of instances of an HTML object
What am I missing?
10 years ago today, Vue was introduced to the public for the very first time on HackerNews: https://t.co/M2ZRwhiIaP
10 years later, it is now one of the mostly widely used frontend projects, with a diverse community all over the world.
Full text from Jack Dorsey to Block employees via Insider:
I want us to build a culture of excellence.
Excellence in service to our customers, excellence in our craft, excellence in our respective disciplines, and excellence to each other.
We want to help everyone achieve excellence here at Block. And if that's not possible for any one person, we want to acknowledge that, and part ways without delay (which is a perfectly fine and honorable outcome.)
Our current "performance management" practices do not help us achieve this. In fact, they are holding us back. Some have described them as a "denial of service attack on managers" given the time commitment versus the benefit to our people. There's also a perception that we allow people to "rest and vest" throughout the company, including poor managers who oversee great and promising individual
As we kick off our "annual performance review cycle," we're going to make some changes.
First, this is the last "annual performance review cycle" we'll have. It's way too heavy for everyone involved and it doesn't actually help us get better. Performance should be continuously evaluated, and feedback should not be queued up for later. There are natural and asynchronous milestones that are specific to individuals and teams, like launches or product completions, that will force our leads to be more specific and personalized with feedback, promotions (which need to be dramatically simplified!), compensation, or whether to part ways immediately (instead of letting things linger). Of course, there are things like calibration across disciplines that require a synchronous action, but everything else should default to asynchronous and personalized to the individual. We're working through how this will work in practice. The People team will follow up with more details before the end of this year.
Second, we're going to introduce performance ratings that will be visible to each individual employee. Everyone deserves to know where they stand and how to improve. This will help both the individual and manager have a conversation, and gives us more insight into how well the manager leads their people. We're going to start with 3 ratings which will replace the compensation designations we've used in the past. The clearest and fairest way I think about these is through expectations: I meet, exceed, or fall below the expectations set with my lead (exceeds, meets, below). That ensures we can have a fair two-way conversation holding each of us accountable to always raising the bar.
Third, as we have a clearer and continuous understanding of where each of us are, we're going to end Performance Improvement Plans (PIPs) in the US. We haven't seen these plans actually work consistently, as they often feel too late and don't push the manager to give feedback in a timely manner. It's a lazy and often surprising approach that we can avoid with direct and consistent feedback.
Fourth, we build things. Specifically, we build technology things. Therefore, we will invest disproportionately into design and engineering disciplines. I just want to set that expectation going forward. And we'll need more focused help to do so, which is why we're going to create a new role at the company, one that's responsible for our overall engineering excellence, technical strategy, and who will oversee our shared technology platforms across business units. Many companies call this a "CTO." Titles don't matter...responsibilities do.
I've asked Dhanji Prasanna (cc'd...sorry Dhanji!) to join my direct team and take on these responsibilities for Block. Dhanji is technically excellent, has served since 2011 in Square, Cash App, and TBD...and most importantly is an excellent human who's a "show, don't tell" type of leader. Dhanji won't have all of engineering reporting to him, but will instead focus on our engineering culture and practices, our development tools and increasing productivity and velocity, and our overall strategic direction inclusive of AI and shared services like Fe and InfoSec. We'll organize a Block-wide engineering all-hands soon to introduce/reintroduce Dhanji to all of you and discuss the problems we're trying to solve.
Finally, an most importantly, we're only as good as our leads and that's where we're going to focus a majority of our attention as we evaluate our performance and push to drive excellence. Leading is a privilege with immense responsibility. If we don't have the right leaders and can't evaluate them against an ever-increasing bar, everything suffers. We will not tolerate mediocrity or low performance from our leads. You have my commitment that we will hold a very high bar to all of them, and act extremely fast if things are clearly not working out.
And of course...that includes me. As I do every year, I'm sharing my annual performance review with you all (attached). Read if you wish. I'd focus more on the direct feedback quotes than the narrative (which sounds way too positive to me. Summary: folks want me to work on 3 things this year; driving results, decision making, and being more inclusive across business unit lines. I have a lot more to do, but I believe the actions we've taken over the past 2 months have hit on all these three themes. I know it feels like a lot of change at once, but I believe this urgency will help us and our customers dramatically.
Thank you all, jack
Stupid ways to compensate programmers:
I've seen every single one of these. They backfire and make working for your company a living hell.
Pay your developers by the number of bugs they close. After a week, they will start committing bugs on purpose so they can fix them a day later.
Pay your developers by the number of features they deliver. After a week, nobody will want to work on anything that takes more than a few minutes to complete.
Pay your developers by the number of lines of code they write. After a week, you'll get triple spaces between every line of code.
Pay your developers by the number of commits they make. After a week, your repository will become more useless than a screen door on a submarine.
Pay your developers based on the reviews from their peers. After a week, you'll have a hostile environment, backstabbing, and politics.
During the British rule in India, the government wanted to reduce the cobra population. They offered a reward for every dead cobra.
Some people saw this as an opportunity to profit. They started breeding cobras to kill them and collect the reward.
The British government had to stop the program. With no reward to collect, farmers set the snakes free, making the infestation much worse.
Be careful what you wish for. You might get it.
Story Points don't work.
Even Ron Jeffries, who invented them, said he was sorry years ago.
And not only did he apologize, but he called the whole estimation idea "Evil."
Unfortunately, too many teams still use these points to estimate their work.
Story Points is a made-up metric to estimate work effort, not time. The goal was to prevent management from misusing estimates.
But it didn't work.
Every team I've ever met keeps a conversion table to translate back and forth between points and time. Some will never admit it, but go and talk to the folks doing the work.
Look at me and tell me I'm wrong.
But it gets worse:
Teams use points to decide how much work they can finish. But how can they do that without talking about time?
The effort to do something is not the same as the time it will take to finish it. This is especially true when planning an iteration with many people and tasks.
It's clear now: Story Points don't work.
What's the alternative?
I'll let the people who manage projects for a living offer their alternatives, but I can tell you what I've done.
As I got older and wiser, I stopped with the estimation charade altogether. I had my teams focus on short iterations with constant feedback from stakeholders.
From the "scope, budget, and time" triangle, I always tried to keep two of them variable and fix the third one.
If the customer was looking for a specific scope, we had a variable timeline and budget to finish it. We kept the scope and time flexible if the budget was non-negotiable. And if we had to deliver by a specific date, the scope and budget were on the table.
Every company is different, and this doesn't work for everyone. But if it does, I hope you stop the charade.
I'd love to hear about your experience estimating software. What crazy things does your company make you do?
I wrote, "Scrum is a cancer," and the Internet had thoughts about it.
After 3,400 replies, I learned a few things:
First, the most common jobs among the people who told me I was wrong were "Agile Coach" and "Scrum Master." They feel very strongly in favor of Scrum, but I'm not sure why.
Second, Scrum can't fail because Scrum is whatever you want Scrum to be. There's no right way to do Scrum, so if it doesn't work for you, you aren't as bright as you thought you were.
Third, Scrum isn't agile, except when it is. But it's much better than Waterfall, except when it isn't. And it's better than nothing and everything at the same time.
Fourth, many people got triggered by my comparison of Scrum and communism. They say communism is great but recognize they have never lived in a communist society. They keep mentioning this book they read and how every person who shed blood under communism was "doing communism wrong."
Finally, by far, most people hate Scrum with passion.
No matter how you look at it, Scrum is a failure.
Dear anti-TDDers, you cannot win this battle. That’s because the discipline is over a thousand years old. It’s called double entry bookkeeping.
You don’t need to employ the discipline if you don’t want to; but would you hire an accountant who didn’t?