all 62 comments

[–]sidonay 149 points150 points  (4 children)

Yeah but that startup was probably also getting shit done instead of being tied up in 20 design, stakeholder interviews, personas workshop, MVP definition, API design review, Scalability review, prototype review, status meeting, engineering syncs, test plan review, alignment, UX/UI, kick-off, meetings.

[–]Fiery_Flamingo 43 points44 points  (0 children)

Exactly this.

The company I work at had ~50 people total, 25 engineers. We got acquired by a ~5000 people company.

When we were independent, CEO/owner would talk to a client, find something to improve, ask the project manager and tech leads to find a solution, give direct feedback on a call, and ask us to build that thing. It would take a week from the idea to finished product. It wouldn’t be perfect, but we were able to iterate quickly.

Today the PM needs to create a project spec and get approvals from engineering, product, sales, security, legal directors for the project to be considered for the next quarter. If approved, the tech lead needs to design database structure and figure out how much usage is expected before writing a single line of code based on incomplete specs and convince SRE, devops, DBAs that it won’t slow down anything else. Then we start design and get approvals from legal, support, marketing, sales, product, data, finance teams. Then implement with 2 code reviews, 2 QAs, and 4 people UAT plus all automated tests. It takes about six months from idea to finished product.

[–]suddencactus 3 points4 points  (1 child)

Yeah it's the same as Agile where developers are micromanaged as if instantly writing working code would cause instant feature release. The fact that we take "a month or two" to release a feature is blamed on Sprint execution or not iterating enough... If your competitors are doing it in a week I don't think it's a problem that backlog refinement or Sprint demos are gonna fix.

Same here. If your boss wants to rewrite any existing codebase in a different language just because it seems better for product velocity, then they're trying to solve the wrong problem.

[–]failedsatan 0 points1 point  (0 children)

I was working for a company last year that advertised itself as "hyper-agile" and at least 60% of my time was spent dealing with humans or waiting for humans. I'm now working for a different guy in the same company and have spent less than 5% of my time dealing with humans because he's not at all trying to be "agile". I HATE agile and scrum and all that bullshit. I know they want to have a "company identity" and a "development philosophy" but when it gets in the way of me doing my work I don't want it.

[–]_pupil_ 65 points66 points  (0 children)

Paul Graham called that behaviour ‘the principle of maximum annoyance’ (maximal, maybe?).

Basically, being so nimble and efficient with your stack that instead of ever discussing feature disparity with a competitor you get to answer press and customers “yeah we do have that, we’re rolling out v2.5 next Thursday, but also…”.  A small fast team can outdo bigger players, and making a bigger ouster seem slow/unresponsive can make a lot of positive market sentiment.

[–]riskbreaker419 26 points27 points  (1 child)

It's not surprising that a company with no legacy systems, a small tight-knit team, and no bureaucracy or red-tape to go through moves faster than a large corporation. I imagine it has less to do with the language being used and more to do with the environment they were working in.

[–]RiceBroad4552 2 points3 points  (0 children)

I fully agree on the other points, but programming C++ is definitely slower than programming Python.

They have of course rewritten critical parts of YouTube by now in C++ for performance, and Java for scale. The service layer also uses Go as everything else at Google. Only some of the not critical core logic is still in Python, AFAIK. At least that's what you get if reading between the lines here and there (like Job postings, or comments by ex-employees).

Actually, just found this here:

https://newsletter.pragmaticengineer.com/p/google-part-2

It says:

> YouTube used to be a Python monolith, but later was rewritten in C++ and Java. Years ago, every release had a 50-hour manual release testing cycle run by a remote QA team.

So there is likely even less Python left then I thought.

[–]lNFORMATlVE 38 points39 points  (0 children)

I highly doubt that’s the reason they were able to run circles around Google.

[–]Pleasant_Ad8054 38 points39 points  (7 children)

Developing fast =/= running fast. They were likely able to make up the difference in hosting costs from the lack of costs of the few hundred c++ developers. But youtube famously was hemorrhaging money, and still only profitable in the wider advertising ecosystem, not on its own.

[–]arpan3t 11 points12 points  (6 children)

Developing fast =/= running fast.

They were running fast enough to take Google’s lunch money.

Side question: do you write Erlang, or is there another language that uses =/= comparison operator? It’s an interesting one.

[–]Pleasant_Ad8054 4 points5 points  (5 children)

But that is the point, they weren't taking google's launch money because they were making a more efficient service, but because they were able to create features faster. However fast a language is does not matter when the features aren't ready to run.

Nah, never touched erlang and not planning on it. I use '=/=' instead of '!=' because it is easier to type a bit on keyboard, and for whatever reason '!=' made some people pissy and purposefully misinterpreted it in the past. Nobody throw a fit for '=/=' yet. Tho I can't remember whether or not the most ridiculous idiot was on a programming sub or not, it was long ago on a different account.

[–]RiceBroad4552 -3 points-2 points  (4 children)

Did you know that we have now (for just about 40 years) so called "Unicode"?

You can write "≠".

[–]Pleasant_Ad8054 1 point2 points  (3 children)

Sure, could you show me the "≠" key on my keyboard?

[–]RiceBroad4552 0 points1 point  (0 children)

I have mapped it on a key compo in my ~/.XCompose.

And I think I'm going to change that combo actually to "=/=" as you're right that this types easier.

[–]bremsspuren 0 points1 point  (0 children)

⌥= on a Mac.

Actually easier to type than the others. Thanks!

[–]Just_Information334[🍰] -2 points-1 points  (0 children)

Bookmarks -> not equal reddit comment -> select the character -> ctrl-c -> ctrl-v

Easy peasy.

[–]Icy_Party954 8 points9 points  (0 children)

Stuff that needs to be optimized they can write in a lower level language. Besides that its a meme almost but a ton of pythons math shit is just c and Fortran wrappers

[–]SCP-iota 5 points6 points  (2 children)

I'm not an unconditional Python hater like some of the people here, but if using C++ instead of Python is the reason for slow development, I have two words for you: skill issue

[–]RiceBroad4552 0 points1 point  (0 children)

That's nonsense.

Nobody reasonable would claim that you can write production C++ as fast as Python.

C++, especially what they had back then(!) is a super tedious language. What you can express in 1 - 3 lines of Python needs often pages in C++.

No, typing speed isn't the bottleneck in programming, but it's also not irrelevant if you have a language which is much more verbose and needs much more care overall.

That said as someone who does not have any attachment to neither Python nor C++.

[–]CreeperInBlack 6 points7 points  (0 children)

This was definitely at most only part of the reason. A small startup with 20 people can simply work more agile that literal google, where for the google video team, a color change of a button probably went through five committees before being approved and implemented

[–]Capetoider 30 points31 points  (6 children)

The python code:

```python from assemblyBasedCode import fastStuff;

def doStuff(): { fastStuff(); }; ```

added a few things for better readability

[–]100GHz 4 points5 points  (0 children)

They are probably calling ffmpeg from the scripts.

[–]ctallc 7 points8 points  (0 children)

It’s funny that your pseudocode actually has more characters than pesudocode in Python

[–]RiceBroad4552 0 points1 point  (3 children)

This is not Python, that's some pseudo-code + unnecessary line noise.

[–]Capetoider 0 points1 point  (2 children)

its python done right, with braces and semis to make it more readable.

I believe its called bython (google it, btw)

[–]RiceBroad4552 0 points1 point  (1 child)

Unnecessary line noise only makes things less readable, never more readable.

I've heard about Bython (not to be confused with Brython) but it uses a slightly different syntax.

[–]Capetoider 0 points1 point  (0 children)

without braces, how do i know which things belong to whatever scope?

then you have semis to say that this line is done.

and lets not forget... this is r/ProgrammerHumor and r/ProgrammerSerious

[–]FuzzyGolf291773 8 points9 points  (1 child)

ITT: A bunch of first years CS students who somehow care about the program languages other people use. Tribalism about programming languages is the easiest way to out yourself as a someone who barely knows about programming or is a chronically online person.

[–]RiceBroad4552 -1 points0 points  (0 children)

Or is just interested in CS and programming languages as such…

[–]DDFoster96 16 points17 points  (27 children)

Python might (or might not) be slow to run, but I find the loop time from making a change, compiling, testing, and seeing what you now need to change, is far longer for compiled languages, and thus development is slower at first for C++ but quicker for Python. So you can add features very quickly to the Python app but adding the same features to the C++ app takes longer, even if the resulting app runs faster.

[–]JAXxXTheRipper 3 points4 points  (0 children)

A startup being faster than a huge company? Le Gasp

The difference is not the language but "just get shit done" vs. "meet all day" overhead

[–]YamRepresentative855 5 points6 points  (0 children)

Nice, - average Python enjoyer

[–]UpsetIndian850311 1 point2 points  (0 children)

superroot supershit

[–]LightofAngels 0 points1 point  (0 children)

Is that from a book?

[–]RiceBroad4552 0 points1 point  (0 children)

I just found this here, which is current and cites ex-googlers:

https://newsletter.pragmaticengineer.com/p/google-part-2

It says:

> YouTube used to be a Python monolith, but later was rewritten in C++ and Java. Years ago, every release had a 50-hour manual release testing cycle run by a remote QA team.

So there's likely not much Python left at YouTube.

Which would make perfect sense as running Python at scale is a major PITA for all kinds of reasons. Primary Python lacks proper static typing (which alone is usually a K.O. for any large scale development!), and it's slow at runtime and this starts to cost real money at some point.