Jeffrey Snover: Geek of the Week

PowerShell has radically improved the ease of monitoring and adminstering Windows-based servers, and automating routine processes. The visionary leader of this project is Jeffery Snover, who is now Lead Architect for both Windows Server and System Center Datacenter.

As the creator of PowerShell Jeffrey Snover remains a hero to many, particlarly the administrators of large groups of servers and applications.

1584-jeffrey%20snover.jpg

It was a considerable uphill struggle to change the prevailing  technical culture of  Microsoft sufficiently to persuade it  to adopt a new .NET-based command-line scripting language in Windows systems that would allow administrators to do everything from it, and give them incomparably greater potential for automating repetitive tasks. The work, persuasive power and energy that Jeffery put into this task is the stuff of legend.

In order to promote his somewhat radical ideas, he wrote the wonderfully named Monad Manifesto; some say it rivalled Frank Lloyd Wright’s 10-point manifesto for his apprentices. Writing this Manifesto, Snover says, was difficult.

‘I knew what we needed to do and could come up with examples and explain this point and that point but I had not taken the time to put in words. I had no grand overarching narrative. Sometimes you just need to “say it”. When you are forced to actually “say it”, you’ll often find that you really just sorta understand it – that you have a vague notion of what you mean but you don’t really know what you mean until you are forced to say it.’

Jeffrey Snover has 32 years of industry experience and is now the Lead Architect for the Windows Server Division. He joined Microsoft in 1999, and has since  provided technical direction across the company’s management technologies and products.

He was an architect in the office of the CTO at Tivoli and a development manager at NetView and has worked as a consulting engineer and development manager at DEC, where he led various network and systems management projects.


RM:
I really enjoyed reading your blog about the beginnings of the Monad Manifesto and the values it represents. How tough was it that you knew what was needed but you had no grand narrative to back up your plans?
JS:
The gap between understanding the problem and creating a solution was not daunting at all. That is the essence of engineering. The difficult part was getting the GUI-centric Microsoft culture and ecosystem to embrace the CLI. I had senior people asking questions like, “What part of ‘Windows’ confuses you?” The problem was the Microsoft was great at GUIs so if they could turn a problem into a GUI problem, they would win. So they wanted to view everything as a GUI problem. In the end, that works for personal machines but not for servers or large sets of machines.
RM:
In what ways did the manifesto help? What remains of the manifesto to implement?
JS:
The manifesto was a crisp articulation of the problems we saw, the values we held and the approach we would take to address these problems. Ultimately it was a statement of identity and mission. We seek to change the world in a bold and important way.

That sense of identity and mission helped us all get through the many tough times we had and acted as a north star as we worked through the detailed designs. The document was published over 10 years ago and if you compare it to what we’ve delivered, you’ll be amazed at how accurate it is. The one element that has not fully come to fruition is the idea of management models. Watch that space.

RM:
How did you initially design PowerShell? Did you sit down with a pad of graph paper or a UML drawing tool? Did you write mocks in the test-first sense so you tested it as you went along and what form would the code take? Pseudocode? Actual code? Whiteboard drawings?
JS:
Code. I think in code. I explored a number of concepts in code and used that to generate a vision of what was possible. I then set about trying to influence some teams to adopt them. One team was intrigued but the ideas where just way too far out there for people get their heads around them with whiteboard drawings. I told them to go away for a while and effectively dropped out for a while and produced about a 10Kloc prototype that illustrated all the core concepts of the architecture.

When I reengaged and people where able to see things and explore them for themselves, they got it, their heads exploded with the possibilities and they were dedicated to making it real. I knew the potential of these ideas so in the end, I got so hooked on this that I gave up my position as Lead Architect for a team of about 700 people and accepted a demotion to work with a handful of people to make PowerShell real.

At the time, the problem wasn’t considered big enough or important enough to have a person as senior as myself working on it. Accepting the demotion was hard but I was convinced that I was going to change the world, so as long as they didn’t fire me, I was going to do whatever it took to ship PowerShell.

RM:
You must have been asked to estimate how long it would it would take for PowerShell to be at beta stage. How did you estimate the length of time it would take?
JS:
I don’t recall. I do know that everyone understood that we were in for the long haul.
RM:
In the early days of designing software, your life must have been an endless series of late nights and overall working long hours. How much of that is a necessary part of programming?
JS:
No; but if you want to change the world in any meaningful way, you are, by necessity, going encounter a very large set of difficulties, setbacks and adversaries. It is not for the faint of heart. It takes dedication and passion. Dedication and passion can be very messy and disruptive forces. The path to every significant accomplishment is paved with personal sacrifices.
RM:
How much do you think you can sit down and figure out how something ought to work, assuming it’s not something that you’ve built before? Do you need to start writing code in order to really understand what the problem is?
JS:
It varies. Sometimes it’s a top down process where I generate the story and then figure out how to make that story real in terms of components and interactions. Other times I just need to get into the code and bash things around until I understand the “physics of the problem”. Once you understand the physics, then you can apply them to a set of conditions and get the right answer. If I ever get lost or confused, I just stop and think about physics and it always provides me a reasonable path forward. The greatest harms I see come from excellent people applying their talents and thinking without any reference to a theory, a model or a set of principles. I call that “brilliant people doing stupid things”. It is recipe for technological Brownian motion and explains more of our industry than I think you can imagine.
RM:
How do you know that something has worked in the way you intended it to? Is it feedback, knowing that millions of people are using what you designed, people coming up to you at conferences or what?
JS:
The essence of physics is the ability to predict. So often what I’m doing is predicting that if we do things a certain way, we’ll get some desirable outcome. Often those are things that I can observe by myself in my office. That said there is a huge difference between “technology” and “technology that matters”. Technology that matters impacts the world and provides an economic return. I love to see the positive feedback and to talk to the people that tell me how it has transformed their jobs and careers but the true measure of impact will take a long time to access. My intention was to fundamentally change one of the largest technology ecosystems in the world. I have no illusions about how long will take.
RM:
You’re now the lead architect for Windows Server. Do you see Microsoft doing a lot more for IT pros than it has done before? Is Microsoft You’ll see a lot more done in this space, a lot more focus in on the needs of IT pros. All the stuff we used to do before we’re going to do. We’re going to do better. All that continues forward, but just see an increased focus on the needs of IT pros.
JS:
We just had a reorganization and my new role is Lead Architect for both Windows Server and System Center Datacenter. Feel free to read as much into that as you like. The industry is embracing the cloud and I some very strong views about that. Most of our competitor’s approach the cloud as something you bolt on top of an OS. I think you’ll see that proven to be wrongheaded and that the cloud is fundamentally an OS issue. Remember when applications were responsible for doing their own memory paging? Applications always do what they have to do to cope but in the end, the cloud issues are all variations on the classic OS issues of resource management and application services. You need to be able to change things at any (and sometimes, every) layer of the OS to deliver the true benefits of the cloud.
RM:
One of the aspects of the modern style of programming is that programmers have to absorb things quickly. How did you tackle the problem of understand a big pile of code, none of which you’ve seen before?
JS:
Poorly – just like everyone else. Seriously, I’ve never had a particularly large working memory so groking a large pile of code is always a challenge for me. It is one of the reasons why I’m so hardcore about consistency, predictability and readability. You can see that in PowerShell. PowerShell’s strengths flow from my weaknesses.
RM:
You’re surrounded by some very smart people. Given how persuasive computers and software are in our society, do you think everybody needs to understand a bit about programming just to get along or understand the world they live in?
JS:
Absolutely not. Programming is a thing of beauty but if everyone needs to understand it, then we’ve failed as an industry. That said, I think everybody needs to understand scientific thinking and methods. You shouldn’t need them to deal with computers but I think you need them to be a good citizen and an ultimately a good human being. Most of the ills of society can be traced back to bad thinking. A critical element of scientific element is being clear and comfortable about what you don’t know and using that to know when to be assertive and when to be humble.
RM:
A lot of people I’ve interviewed got into computers because they enjoyed it and they like it would change the world. Some did that in the past and are now depressed by how little they feel the world has changed as a result. What are your feelings about that?
JS:
Someone once said that the only thing that is pure good is goodwill and the only thing pure evil is ill will. I am absolutely amazed and delighted by the world that computers are helping to create. Computers pour jet fuel onto the fires of human spirit and creativity. Don’t get distracted by the messy parts. Great change requires adjustment and sometimes a healthy dose of coping. I have confidence in the species, we are up to the challenge. It is a gift to participate and be a witness to these times.