We’re on the same team

A big organization, like Windows, needs to be aligned and work together to produce a great cohesive product. This means teams talking to each other about dependencies, interfaces, and timelines. That communication is crucial to tying together seamless customer experiences, reducing friction, and delivering value smoothly and efficiently. Unfortunately, humans are lazy, selfish, and suck…

0

Diamond dependencies

 How can you tell if you’re a smart engineer? What separates people who go through the motions from those who really get it? Second-order effects. Anyone taking an introductory software class can learn what changing a line of code does to a function, but engineers who really understand programming will see the cascading impact of…

2

Better for everyone

 This month’s column is about accessibility. I’m not making patronizing arguments for it. I’m not saying, “We’ll all need it someday.” I’m not rehashing heartwarming stories of inspiring people who prevail over life’s challenges. I’m not reminding you of your legal obligations. If that’s why you’re following software and hardware accessibility guidelines, then you’ve missed…

4

Courageous design

 Does this sound familiar? You’re meeting to design a solution to a tricky problem. People are alternating between adding new requirements and deriding prior approaches. Everyone agrees with the issues (“Yeah,” “Yup,” “That’s right”), but no one is suggesting a solution for fear of rebuke. These meetings end one of three ways: Deciding to meet…

3

Stupid in any language

 Surely you’re smart enough to know that people outside the United States attempt to use Microsoft software every day. I mean, Nadine Kano first published Developing International Software for Windows 95 and Windows NT back in 1995. By now you must be aware, but how can anyone tell? You could try using our software outside…

3

Data-driven decisions

 You’re working on a feature and think there’s an obvious customer improvement to be made. The tester thinks you’re in obvious need of medical attention from a psychiatric professional. She believes the shipped design was fine from the start. The PM insists that your suggestion doesn’t fit the design language (?). He wants to make…

2

Software engineering—what’s missing?

 To start the new year, my boss gave an all-hands speech to a large group of developers about being an engineer. He equated being an engineer with taking responsibility for quality and using methods that ensure high quality at checkin (Nailing the nominals). Naturally, a developer in the crowd took issue with calling software developers…

6

Green fields are full of maggots

As I said in Nailing the nominals, the two keys to successful big projects (100K+ LOC) are thinking ahead and defining done. Thinking ahead is about design and planning. Defining done is about setting a quality bar and sticking to it. Yet many big projects go astray even when people think ahead and define done….

7

My experiment worked! (Prototyping)

It’s summertime. Time to sit out in the sun and daydream, perhaps on a vacation or a weekend afternoon. When your mind is relaxed at times like these, you often think of beautiful new ideas. You further develop those ideas and then, when the time is right, perhaps early in the next release cycle, you…

3

At your service

Remember this one, “The microprocessor changes everything!” No, it didn’t. Yes, it had a big impact, but people still fretted about the same problems and tried to accomplish the same things. They just created problems and accomplished things more efficiently. How about, “The Internet changes everything!” No, it didn’t. Yes, it had a big impact,…

3