Comment by vinni2

1 year ago

Just curious what does a Python team do? It doesn’t make sense to dedicate a team to a programming language.

Of course it does. Pretty much every FAANG, and many smaller ones, have teams for every programming language they consider important. Google has C++, Rust, Python, Java, JavaScript, and others (although I've heard that several of these teams were hard it in this round.)

To take a basic example: Google has a team that works inside LLVM and Clang to improve the code it produces for Google's specific workloads. (Often these help all of LLVM's clients.) But if this team is able to make a search query faster by even 0.01% a year, at Google scale that saves literally millions of hours in compute across Google's fleet. And millions of hours of compute is millions of dollars in power, space, and need to expand.

This is true of all the other language teams at Google too.

The Python team builds a better python by fixing upstream bugs, reducing the memory it consumes and so on. It upgrades the internal installation of Python to the newest versions, ensuring that the upgrade is smooth and doesn' break the using teams.

It contributes proposals for language features to upstream, ensuring that Google's use cases are at least considered.

  • in addition to contributing to upstream python, we

    * maintained a stable version of python within google, and made sure that everything in the monorepo worked with it. in my time on the team we moved from 2.7 to 3.6, then incrementally to 3.11, each update taking months to over a year because the rule at google is if you check any code in, you are responsible for every single breakage it causes

    * maintained tools to keep thousands of third party packages constantly updated from their open source versions, with patch queues for the ones that needed google-specific changes

    * had highly customised versions of tools like pylint and black, targeted to google's style guide and overall codebase

    * contributed to pybind11, and maintained tools for c++ integration

    * developed and maintained build system rules for python, including a large effort to move python rules to pure starlark code rather than having them entangled in the blaze/bazel core engine

    * developed and maintained a typechecker (pytype) that would do inference on code without type annotations, and work over very large projects with a one-file-at-a-time architecture (this was my primary job at google, ama)

    * performed automated refactorings across hundreds of millions of lines of code

    and that was just the dev portion of our jobs. we also acted as a help desk of sorts for python users at google, helping troubleshoot tricky issues, and point newcomers in the right direction. plus we worked with a lot of other teams, including the machine learning and AI teams, the colaboratory and IDE teams, teams like protobuf that integrated with and generated python bindings, teams like google cloud who wanted to offer python runtimes to their customers, teams like youtube who had an unusually large system built in python and needed to do extraordinary things to keep it performant and maintainable.

    and we did all this for years with fewer than 10 people, most of whom loved the work and the team so much that we just stayed on it for years. also, despite the understaffing, we had managers who were extremely good about maintaining work/life balance and the "marathon, not sprint" approach to work. as i said in another comment, it's the best job i've ever had, and i'll miss it deeply.

    • > the rule at google is if you check any code in, you are responsible for every single breakage it causes

      i can no longer edit my post to clarify this, but by "responsible for breakages" i meant that if your new check-in caused any CI tests anywhere within the codebase to fail, even if due to bugs in the other code, you had to stop and fix it, or get the owners to fix it, or find some principled way to temporarily disable those tests, before you could check your code in.

      this was a very real issue for things like the python runtime or widely used code checkers like pytype or pylint, because if e.g. the new version of python, or some improved check in pytype, started raising failures in a code pattern that was technically wrong but which the existing toolchain did not complain about, you could not release the new version until you had fixed all those new breakages.

      contrast this with non-monorepo codebases, where the other code would have had to deal with the fact that "oh, our code works under 3.10 but 3.11 broke it, guess we have to pin our own repo to 3.10 until we fix it", but as the python team we could just say "we support 3.11 now, you need to catch up"

      5 replies →

    • Adding to the wonderful writeup by my now-ex teammate (thanks!):

      Several of us were/are/TBD also involved in both long term strategic leadership and maintenance of the open source CPython project itself. That direct feedback line from a major diverse needs user into the project and ecosystem was valuable for the world.

      The reason I stayed on this team for 12+ years is as zem said. It was an ideal impactful alignment of people, abilities, priorities, and work life balance. My prior teams at Google... were often not.

      For the first half of our Python teams existence, there were only ~5 of us. Many early years were spent paying down internal tech debt accumulated from prior years of neglecting to have a strong Python strategy and letting too many do their own thing. Python was one of the very first languages used widely at Google. It was the last major backend language to get a language team.

      Signed, -- the now-ex runtimes TL

      2 replies →

    • My guess: the people in your group have very high salaries and they want to dump them. I would not be surprised if they hire people to make a new team at some point in the future.

      I run HR at a small software company reports and my HR person has a lot of friends in HR at FAANGs. For 10+ years we've been talking about hiring and salaries at Google (and others). It's just crazy to me how high salaries have gotten. I know someone that switched from Google to FB when they made $750k at Google and got $1M at FB.

      I said all this to say: I've talked to a bunch of people over the last 6 months that know someone laid off and: 1) they had a very high salary, and 2) the group they were in was hiring.

    • I was your opposite number at AWS for many years. Like you say, it was one of the best jobs I've ever had, but over there it was a career dead end. I wasn't laid off, but I had to leave it to have any hope of growing myself.

      I feel for ya, zem; if you ever turn up at a PyCon in person, lemme buy you a drink.

      1 reply →

    •   > very large projects with a one-file-at-a-time architecture (this was my primary job at google, ama)
      

      Is there any place where we could see such tools? A lot of the scripts that I write are contained in a single file, and I'm sure that there would be much to learn from seeing such project scripts. Thank you.

      2 replies →

    • That is a lot of great work. Sorry to hear that it is gone. Take some time to rest and hope find somewhere with better vision!

    • Any guess how many SWE-yrs are now going to be spent migrating existing Python projects away from Python, now that Python seems to be unsupported at Google going forward?

    • Can you say more about the automated refactoring? How did it work? How was it triggered? How much human involvement was there? Are any parts of it public?

      4 replies →

    • > maintained tools to keep thousands of third party packages constantly updated from their open source versions.

      Hi Zem could you say more about how you maintained those thousands of third party packages? We are facing the same issue and would love to hear your insight!

      1 reply →

    • When was pytype invoked? Runtime? CI/CD? Did it output types to be added to files or did it infer and then enable downstream tasks based on those inferences?

      1 reply →

    • Frankly, it sounds like a dream job for me too, to be responsible for a particular technology and make sure that it works for all your internal (and external) users.

      1 reply →

    • When Wall St. concerns lead to imposing cannibalistic capitalism plans that are pennywise but pound foolish.

      Just wait a few years. When they come calling for consulting services, charge them triple.

Classic: ask what the team does, and before getting an answer, decide that it doesn't make sense.

[flagged]

  • I'm a bit surprised anybody with DevOps in their name would be unclear about the benefits of having specific roles devoted to what might seem to the uninitiated like just some tiny corner of the development process. Past a certain scale, things can't be covered by just having anybody pitch in as required and everybody collectively muddling through.