6

Jeffrey Snover Claims Microsoft Demoted Him For Inventing PowerShell - Slashdot

 2 years ago
source link: https://slashdot.org/story/22/05/11/0013214/jeffrey-snover-claims-microsoft-demoted-him-for-inventing-powershell?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Jeffrey Snover Claims Microsoft Demoted Him For Inventing PowerShell

Become a fan of Slashdot on Facebook

binspamdupenotthebestofftopicslownewsdaystalestupid freshfunnyinsightfulinterestingmaybe offtopicflamebaittrollredundantoverrated insightfulinterestinginformativefunnyunderrated descriptive typodupeerror

Do you develop on GitHub? You can keep using GitHub but automatically sync your GitHub releases to SourceForge quickly and easily with this tool so your projects have a backup location, and get your project in front of SourceForge's nearly 30 million monthly users. It takes less than a minute. Get new users downloading your project releases today!
×
PowerShell inventor Jeffrey Snover has aired some grievances about how his indispensable tool once got him demoted. The Register reports: The Microsoft Technical Fellow discussed the incident in a weekend Twitter thread that started when controversial investor Peter Thiel discussed the virtues of courage. "Courage is a key characteristic of future leaders and previous employees," Snover joked in response to Thiel's musings. He also asserted that "many people focus on getting their boss to pat them on the head rather than address problems." Snover said he was urged by friend Kevin Kean -- who served as director of the Microsoft Security Response Center (MSRC) in the mid 2000s -- not to reveal PowerShell, as it may not well be received.

This is not the first time Snover has revealed his demotion, but he hasn't previously discussed his profound embarrassment -- or that he kept it secret from everyone other than his wife. "I never mentioned it to anyone for over a decade until I got promoted to Distinguished Engineer," tweeted Snover, who was given the honor in March 2009. Snover then contrasted Microsoft's policy for company-related passion projects to Google's famous 20 percent rule.
  • I wish I could find any substance to this story. The first link, to the Register, basically says what the summary says. I can't read much of anything at the second or third link because I don't have a Twitter account. As far as I can tell, the summary is the whole story. Jeffrey Snover created PowerShell, got demoted (from something to something else), and later got promoted again (to something better than he was?), and then it was now.
    • Re:

      At least the The Register is consistent in being useless

      • Re:

        The "BOFH" chapter from The Register is great though.

      • Re:

        A long time ago I used to bother pointing out the frequent gross factual errors in The Register's stories.
        They never corrected anything.
        I stopped going there.

        • Re:

          They probably didn't miss you. The truth is you could find errors in all their stories. That isn't the point. They are not there for accuracy or as suggestion of what someone should do. They are there for entertainment and for that purpose they are well written.
    • Re:

      That the inventor of clippy likely got promoted. Or that gates did not sufficiently flog himself for inventing control-alt-delete.
      • Re:

        Gates didn't invent ctrl alt delete. David Bradley at IBM did.

        • Re:

          True, Gates didn't invent ctrl-alt-delete, but he DID make it famous.

      • Re:

        She married Bill
        • Re:

          I think she "invented" Bob, not Clippy.

    • Here is an actually-somewhat-interesting interview with Snover about developing Powershell:

      https://evrone.com/jeffrey-sno... [evrone.com]

      He doesn't mention anything about being demoted but at least it is an article you read and make sense of. I'm still not sure which tweets we are even supposed to be looking at (and I did look for a while - what a garbage dump twitter is).

    • Well the tale is from Jeffey Snover's twitter feed, so from the horses mouth....

      He says that he developed Powershell, but his VP at the time was a bit of an ass, and MS refused to have anything to do with anything "linuxy". He was therefore told to drop it. When he didn't he got demoted (which according to him had quite a large financial penalty)

      Much later in his career the benefits of a shell based tool was seen he was promoted again.

      Now obviously we only have his word for this, although ex-colleagues on the same twitter feed, seem to back him up that in MS, and especially in that division, there was a toxic management culture , where any innovation would be stomped on and the perpetrators deminished

    • Re:

      By his own narrative, it wasn't creating PowerShell specifically that got him demoted. It was doing "unassigned" work during work hours.

      He details that it was specifically that Microsoft did/does not have the 80/20 type thing some competitors have, where you get some time to free range random concepts and ideas, so some pissy middle manager got mad that he wasn't going through the whole project approval (you know, the let everyone comment on the color of the shed stage) and he got demerits.

  • I've only dabbled with Powershell, but it seemed a pain. Maybe because I don't work in Visual Basic? Anyway, I stuck with terminal until the Linux subsystem came along.

    Now _that_ I find indispensable.

    • It is and becoming even more so. There are a few but important features in MS Azure that you can only do/activate in powershell. A lot of the tutorials or scripts for MS Azure is written in powershell. And more and more things in windows (particularly in 11) can only be accessed via powershell.
      • Re:

        It's not really telling much - that can as well be done through other means as well.

        The only benefit of a shell instead of a graphical UI is that you can run headless.

        • Re:

          And that with a shell you can access all the underlying commands in contrast to a graphical UI that presents a subset of functionality. And that with a shell you can create scripts that allow programmability and scheduled or conditional execution. The main benefit of the GUI is that it can be more convenient, if you happen to want to do what the GUI allows you to do.

        • The only benefit of a shell instead of a graphical UI is that you can run headless.

          And that you can script things easily. And save command snippets in a text file. And easily describe how to do something in an email. And do things over remote connection, whether the machine is headless or not, and whether what is done is automatic or manual. And that you can easily log what you do, both to be able to review that you did the right thing, and to be able to replicate it in the future if required.

          A GUI is great if all you want to do is check a checkbox. But if that is your job, be prepared to be replaced with a really small shell script before long.

      • Re:

        You're exactly right that Powershell is becoming ever more indispensable, but only as long as your world is constrained to just Microsoft. It's clear that with every new version of Windows, Microsoft is hell-bent on making performing simple tasks ever harder and more awkward by either removing or at least more deeply burying the most often used or actually useful functionality under an increasingly non-intuitive layers of crap GUI design.
        It's therefore natural that more and more people are having to resort

          • Re:

            Not just job creation *at Microsoft*, but job creation all across the board. There's the legions of "licensing specialists" who sell you a piece of digital paper with some license codes on it so you can "activate" the product you just purchased from Microsoft. There's the "partners" who exist to tell you how you've fucked up your licensing analysis and that you actually need to pay more combined with "I just designed this awesome custom tool for you, unfortunately it will rot on the vine while you pay for

      • Re:

        Being forced to use it doesn't make powershell good. Having things you can only do in powershell makes Azure bad. (Windows was already bad.)

    • Re:

      For me powershell has never really been much of a use. Only some rare stuff that probably could be done other ways too.

      It's one of the features not wanted, not needed and a mystery how it even ended up in the final product.

          • Re:

            But what if you want to do Windows specific stuff? Surely this is something Windows users want to do.
            • My thoughts exactly.

              But is this really a fault of powershell? Powershell is a different tool than bash. They do some things similarly and that's okay, but their best features weren't developed to compete with each other.

              I'm no expert, but my understanding is powershell actually has some advantages (or did at one point) over bash for some very specific things. On Slashdot I recall users talking about things like type fidelity for example. I don't work with either tool to much personally, so I can't defe

          • Re:

            Here is a script just from the top of my head (so it may not be the best way of doing it). I could have easily got it down to a single line if I didn't want to worry about efficiency. Also, if this were a real script I would use named arguments.

            $l = $args | foreach { dir $_ -File }
            $l | select @{ N="File"; E={$_} }, @{ N="Matches"; E={ $n=$_.Name; $l | where { sls $n $_.FullName -Quiet } } }

            And now for a follow up challenge. Take the output of the bash and PowerShell scripts and sort the list by the write

    • Re:

      Cygwin for me. Not having bash is unacceptable.
      • Re:

        You could try GiT Bash, i find it more convenient. But I guess you have already to many scripts under Cygwin.

        • Re:

          I've tried it but it's a bit minimal. If I can install it in under 2 hours it's missing something that I will eventually need.
        • Re:

          Many Windows environments preclude local users from installing software, or restrict the installation of potent, flexible tools like git and cygwin and Windows for Linux. Having a built-in, vendor supported scripting language for remote administration tools is invaluable. Even tools like the "extensions" for Azure virtual machines provide built-in access to powershell commands, so the investment in setting it up is often much lower than for git-bash or for Cygwin.

  • I fucking love it.

    Long time windows admin who also spent his entire career on this site, and did more than dabble with linux. Powershell is just awesome, and a lot of windows admins are just starting to dip their toes into it. ISSO's are still frightened of it, despite being around for almost 20 years. So what's so great about it?

    Let's talk about things from an AD perspective. With ADUC (Active Directory Users and Computers) it's all very click click gui. There's not a whole lot I can do there other than work on one user at a time. Let's say tomorrow, everyone in marketing moves to a new building. I can list all of them with...

    get-aduser -filter 'department -like"Marketing*"'

    But let's say I wanted to update the address.. Powershell works with what it calls objects. Each user returned from that query is an object, and each object is formatted the same. Objects are passable through the pipe.. So if I wanted to update all of them at once I could...

    get-aduser -filter 'department -like"Marketing*"' | set-aduser -streetaddress '123 main street' -city 'Wichita' -state 'Kansas' -postalcode '123456'

    Let's say I want to take a more cautious approach, and work off CSV files.

    get-aduser -filter 'department -like"Marketing*"' -properties * | export-csv c:\temp\marketing.csv

    and after editing the CSV a bit, I can read it back into AD with.

    import-csv c:\temp\marketing.csv | foreach {set-aduser $_.samaccountname -streetaddress $_.streetaddress -city $_.city -state $_.state -postalcode $_.postalcode}

    Each $_. is the header of the CSV column.

    Wait there's more though... Enter-pssession! Enter-PSsession is like a SSH shell in linux (but for windows boxes) With it I can jump on any computer on a network and run commands remotely.

    Related to enter-pssession is start-pssession, which allows you to send a pssession to the background (sort of like & in bash) except it also has qualities like screen, allowing you to open that session again.

    What about groups? Your marketing department wants a distribution group "Men who stare at goats" and they want everyone in marketing added to it. After creating the group you just...

    get-aduser -filter 'department -like"Marketing*"' | foreach {add-adgroupmember "Men who stare at goats" $_.samaccountname}

    Let's get really deep in the weeds now. Powershell can now do GUI's via dotnet WPF forms. Actually, it can do everything dotnet. People write all kinds of crazy shit with posh. Did I mention it also does regex if you need to parse some shit?

    I enjoy it way more than Perl. I don't have to write my own parser for everything. I don't have to make sure what I parse is sanitized. Loops are sort of plain english to understand. It kind of borrows the best from Perl, C, Python. Being able to build Gui's means even the dumbest dolt in your IT org can use your scripts.

    It's fucking bad ass.

    • Re:

      To me what you refer to could in theory be done by the old command prompt. Just implement the commands like "get-aduser" as executables and then the shell itself wouldn't be needed.

      Every new scripting engine is a new language to learn, and the world is now full of a number of more or less useful scripting languages.

      • Re:

        Right, but you do know that having 500 commands to manage various pieces of software is it's own language anyway, right? So what is the specific, meaningful difference between implementing 500 commands with a consistent syntax that seamlessly work together, and.. implementing them in an extensible shell? Put another way, how exactly does "get-aduser" being an executable help anything?

        Instead, you get bash/linux where you can certainly string shit together but you have to go find the syntax expectations betw

        • Re:

          There are a couple angles here. Let's highlight some and let's start with that powershell isn't a shell as a Unix-user would understand it: A command line shell is something that surrounds the ability to run commands "like a shell". It does a bunch of things for you, including telling the OS to start this or that executable.

          One of the things it does is keep and expand variables. Another is expanding "glob" expressions. Originally the latter wasn't even in the shell, you had a separate command for that, tha

        • Re:

          Having them as executables helps because then you can easily manage a heterogenous server park. You need to add usersfrom one system to another? Use get-aduser to grab them and pour them into passwd. You need to get all the people who are in marketing on the Solaris machine and add them to the correct group in the ad? Alter one of the scripts from the above overview.

          Reinventing the wheel just to get some vendor lock-in is not actually adding anything to what we have. It's exactly that; vendor lock-in. Inste

    • In my opinion Powershell is just like every other Microsoft product (especially Windows).
      It's an inelegant, bloated, illogical, overcomplex, non-intuitive and awkward mess when compared to competitors, such as Linux and Bash.

      • Well,
        if you read man pages like you have read/skimmed over your parents post, then your Linux and Bash knowledge most likely is pretty shallow.

        Perhaps, you should stop and read again, when he mentions pipes... just a hint.

        • Re:

          > your Linux and Bash knowledge most likely is pretty shallow.

          Lol I've been developing for Linux and Unix OS's since before Linux was even a thing,

      • Re:

        I'm not sure where you're coming from on

        >non-intuitive

        sed/awk/grep by name are non-intuitive. At least in powershell the commands have a standard naming convention of verb-toathing. get,set,test. aduser,adgroup,adcomputer Linux commands are like a bunch of acronyms.

        awk -> Awk is abbreviated from the names of the developers – Aho, Weinberger, and Kernighan.

        Sed - Stream Editor

        grep -> Global regular expression print

        wtf? Claiming acronyms are more intuitive is like someone in marketing snicker

    • Re:

      As someone who uses Windows as a development environment - I hate it and still just use cmd if I need to use Windows commands. Its a shame they didn't mimic the *nix commands so we'd have consistency even if bash is an abomination.
      • Re:

        are you talking about command names? because there are aliases for common *nix commands in powershell. `get-content` is aliased to cat, `invoke-webrequest` is aliased to curl, `get-childitem` is aliased to ls - these are a few examples i can think of off the top of my head.

        • Re:

          Yes, they're aliases. That means if you type "ls" or "dir" something happens but it is not equivalent to "ls" or "dir", especially when command line arguments are supplied. Would it have killed them to make DIR a script that processed the same arguments instead aliasing onto something which doesn't function the same at all?
        • Re:

          Probably the biggest thing he's missing out on sticking with CMD prompt is UNC path support. In CMD prompt if I wanted to poke around the hard drive of another computer I have to do a dance with "net use z: \\someserver\somepath"

          With posh I can just "ls \\someserver\somepath"

      • Re:

        +1 agree. Also, PowerShell is based on.NET framework, and I fucking hate.NET.

        If PowerShell is such a great automation tool I'd really be interested in how many people use it under Linux?

    • Re:

      I work in devops and I have no idea how I'd do my job without powershell. So much of automated build and deployment pipelines relies on powershell. There are alternatives, but none of them integrate everything together anywhere nearly as easily.

      Is powershell a great command prompt? Eh, not really, but it's not really meant to be. It's meant to be a scripting language. And for managing Windows machines, it excels at that.

      • Re:

        I'm on Linux so psh is not that relevant, however from how you and comment [1] explains it, it's really more of a scripting tool than a "shell" as one would normally call it, i.e. it's more of an API+an interpreter than a tool to launch other tools and pipe data between them. Whats good about it is that it allows you to automate clicky GUIs, and that it allows you to access certain things that isn't available through the GUI.

        How is that really different from earlier MS scripting tools, such as *e.g. one I h

        • Re:

          >i.e. it's more of an API+an interpreter than a tool to launch other tools and pipe data between them. Whats good about it is that it allows you to automate clicky GUIs, and that it allows you to access certain things that isn't available through the GUI. How is that really different from earlier MS scripting tools, such as *e.g. one I have experience in from long time ago) VB6?

          Declaring a variable in VB6 requires DIM. Declaring a variable in POSH is just $variablename =. Variables can also be bits of

      • Re:

        Sure, because the operating system you're using isn't Unix. You only need something like powershell because everything on the system tends to be a monolithic tool that does 230472342807 jobs and has to be called with 3497234973429234 different options in order to do them. Before powershell there was REXX, which solved the same problem. You needed a special scripting language just to write scripts that would ultimately be called from OS scripts because that special language knew how to talk to the applicatio

    • 100% Agree that most/. commenters don't seem to know or fully understand wtf PowerShell truly is.

      The way I describe it: it's an object-orientated headless-possible scripting engine, allowing compiled custom objects to be interacted from a headless environment. It's a precursor to a headless Node instance (whose scripting language is JavaScript), and PowerShell's native support for compiled objects truly allow simple command-lets to do sophisticated things beyond WMI (windows management interface) but any.NET-runtime-eligible compiled code/objects (like interacting with a distributed network environment or cloud provider resources).

      In short, PowerShell is what Node/JS would like to be if it were a first-class citizen in an enterprise environment.
      • Re:

        Maybe it's more like mongo shell which is node plus an object store and the distributed network stuff. I'm not sure I would ever use it like that though.
    • Re:

      I have come to appreciate PowerShell... as a non-coder, the only thing I wish was more consistency in how commands handle information. I realize that that depends on manufacturers who create the commands but still.

      get-vm | get-vm | get-vmnic | set-vmnic
      vs
      get-vm | get-vm | get-vmnic | set-vmnic -nic $_

      And such things... Finding out the way to properly pass on objects or even info is using more time than necessary IMO.

      Similarly When you want to know the UUID of a VMs Harddisk you havre to do something like

    • PowerShell and it's objects are awesome... until they aren't.
      One issue I face is that I use PowerShell to manage things on Office 365 / Azure AD that I can't do through the web interface. This is mostly good, except when it's not.

      An example, if you're running something like Get-MailboxFolderStatistics on a local Exchange server, the statistics you get back are proper objects, and you can do things like sort them by size.
      If, however, your run this against Office 365, you get output back that looks the same, except it's serialised as xml, sent down the line, and then deserialised for display. There's no option to tell it to return sizes in bytes, because you don't need to because it's an object and you can display it however you want. It then returns human-readable sizes (e.g. 12.3 GB, 486 MB etc) and now you can't sort it because it comes back down the line as text. If you want mailbox folders, on Office 365, sorted by size, you then need to grab this text, and parse it to turn it back into bytes, sort it, and then parse it again to turn it back into human readable text.

      So you then need to do something like:
      Get-MailboxFolderStatistics username | sort-object @{ Expression = {$tmp = $_.FolderSize -replace ".*\((.+) bytes\)","`$1"; [int]$foldersize = $tmp -replace ",",""; $foldersize }; Ascending=$false } | ft Identity,FolderSize

      • Re:

        Yep. As much as powershell annoys me at times, being able to do stuff like this is really nice:

        $cert = Get-ExchangeCertificate -Thumbprint "$certthumbprint"
        $tlscertname = "$($cert.Issuer)$($cert.Subject)"

  • It is ludicrous to believe having the courage to go against the flow in any corporation run by famously thin-skinned Peter Thiel would get you anything but a pink slip.

    • Re:

      I worked at a place where one of the upper managers (not mine, thankfully) loved little slogans. His favorite was "lead, follow, or get out of the way." By which he meant, "I will lead, you follow, or you're fired." He was not known to appreciate initiative on the part of his workers.
  • Sounds more like a firing offence to me.
  • In most workplaces, criticisms of how things are currently done or offered solutions to improve stuff are rarely well-received, no matter how tactfully & persuasively presented. Organisations tend to be resistant to this kind of thing usually because it means being self-reflective (you might not like what you see, i.e. a threat to self-image) & it means learning to do things differently & most probably some extra work, effort, making mistakes, dealing with uncertainty, etc. in the short-term in order to benefit from the changes in the longer-term. Most people don't want to do this. Many people can't tell the difference between a constructive critique on how they do a particular thing vs. a personal attack & can get defensive. Nobody's immune to this.
    • Re:

      SImilarly, most people on Slashdot ( and elsewhere ) automatically rate something that attacks their political positions as -1 Troll and reply with an ad hominem attack on the author.

      Debate or STFU.

    • Re:

      Anytime I've followed advice that sounds like something from a motivational poster I've been punished for it. Leaders love to spout platitudes but then turn around and punish you for following them.
  • Powershell sucks. I still don't understand why they didn't implement a.cmd /.bat interpreter, and command-line compatible wrappers around common DOS commands like DIR, XCOPY etc.
    • Re:

      Soo... PowerShell Crescendo.

    • Re:

      The worst parts of PowerShell are its ties to the existing MS DOS-derived legacy Microsoftisms. You're saying it'd be better if it was more like that, and less like a more functional shell like DCL or Bash?

      Plus, you know, cmd.exe already does all of those things, and isn't going to be removed from Windows. Ever. So why would PowerShell need to emulate any of that garbage?

      PowerShell's problem isn't that it's not Microsofty enough, it's that it's not actually radical enough to reject the Microsoft model,


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK