Wikimedia Developer Summit/2018/Keynote by Dan McKinley

Keynote by Dan McKinley
 * https://phabricator.wikimedia.org/T183399

DevSummit event

 * Day & Time: Monday, 9:30 am – 10:00 am
 * Room: Tamalpais Room
 * Notetaker(s): quiddity, subbu, rachel

Session Notes:
 * Choose boring technology
 * Worked at large and small companies, from mailchimp to etsy
 * "How do you choose technology?"
 * "How do you make developers happy?"
 * often get very specific answers, e.g. "I want to use clojure at work"
 * Etsy started as a big ball of php. Tried out various things, including months of work using clojure
 * I care less about specific languages. I've climbed up Maslow's hierarchy over the years
 * limited attention span: more important to think about: "does this product make sense" .. not spend a lot of time worrying about details like: should I use cassandra?
 * People have a finite amount of attention. E.g. a friend who wears the same clothing choice every day. I think of it as 'innovation tokens'. You get maybe 3 a day and can spend them where you want.
 * Etsy is trying to reshape the entire global economy. Not sure how seriously we/you should take corporate mission statements.
 * Maybe one of your innovation tokens needs to be spent on big-picture problems, instead of e.g. deciding how to implement queues.
 * Epistomology. There are known unknowns, and unknown unknowns (often larger than the former). In software e.g. "We don't know what happens when our primary datacluster is [?]"
 * danger of the unknown unknowns: choose "boring" tech
 * The failure modes of boring tech are well understood. Not "boring" in the sense of cspan, but in the sense of well-understood languages/domains,
 * E.g. python memchached mysql apache, are all very well known. Could Ruby be added to that stack? Maybe. Could redis be added? This is approx where is falls apart.
 * "The short term benefits of using [?]"
 * We are there to solve business problems with software. Problems on one side, and Technology on the other, drawing arrows between. Choices incur costs and give benefits.
 * When you multiply the number of Technologies you use to solve Problems, you add to the costs.
 * Total cost = sum(maintencene cost) - sum(velocity benefit ) over all choices made that have a cost to using them and provides some benefit
 * If the cost per tech is cheap, then the cost of adding many tech solutions is effective. But in reality, the cost is high for each new technology.
 * "Synergy, Not just for jerks"
 * If you're trying to build an activity feed, take events and stick them in a database, apis sprinkle [?] on top, and use redis to put them in the world. (or memcache back in that time)
 * Over a few years, 20x more people using activty feeds 2,000% increase . All because we invested time in making memcache work.
 * If we'd had to scale redis constantly, that would've been an expensive/resource-consuming endeavour
 * "How to use exciting technology" -
 * Talk to each other. Make people explain things. Keep up-to-date with changes elsewhere.
 * "How would we solve this problems /without/ adding this new thing?"
 * "Here I just heard about this new graph database. I think we should try it out" -- someone who is about to have a bad time.
 * Identify all the unnatural things you need to do with your existing tech .. 9 times out of 10 .. it is not so bad.
 * "Find low-risk ways to get started"
 * e.g. thinking about rewriting everything in rust but ... [ missed that part ]
 * Commit to removing the old, redundant system "replaces all of the old stuff with new stuff" Or "replace new thing with old thing" if things don't work out as you had planned.
 * Focus your attention on the big picture.. Choose a few optimal technologies.
 * Kinks go down over time, so don't bail mid-transition. You'll never get to the part of the curve where you've achieved mastery.
 * Have a process, speak to each other to decide what you are going to do and have deliberate plans. Happiness comes from shipping!
 * Climb Maslow's hierarchy, cos happiness comes from shipping stuff.

Scott: lot of examples are from closed source companies: In open source, choice also impacts who is going to contribute / influence your product. How do your recommendations change here?

Dan: I don't have experience in a domain like yours, but what you're saying jives with resourcing and recruiting. [?] You get more people interested in your project based on what it does, and not the language it uses. E.g. In business software you should be interested in the customer's needs, more than the software paradigm.

Scott: People in school got certificates, e.g. in python, which turned out to not be as commercially viable.

Dan: Etsy and Mediawiki are both in php. Php is something people very few people choose except when they're trying to do something important. [?]

Aaron: anyone who has done in ops probably getting a burst of dopamine .. power relations in choosing tech and what we adopt .. sometimes ppl pushing the new tech might have power .. and it is on you to convince which we shouldn't use this ... in some cases ops might be able to say it is on you to justfy why we need to use this tech .. so, there is a power dynamic here .. how do think about that dynamic?

Dan: Devops has accumulated a lot of baggage. Can even get certificates in it. It used to be [?]. [..] Part of our role is in preserving the value of things we've already created. It has to be a conversation between valuable perspectives, around complicated issues.

Jan D: You mentioned rust. Mozilla is another interesting example. They were replacing things piecemeal to fix problems with C/C++

Joe: Thanks for the article about choose boring tech. Very valuable for us. Not just about shiny new things. Most important part is .. do not duplicate functionality, having 10 different ways to do slight variations on the same thing, but all with different stacks is a huge problem for ops.

Dan: [?? missed it]

David: You make an important point about not proliferating, but what about when you already have 10 different way, and there's zeal to replace them all with a single solution.

Dan: Talk therapy. You're going to have to replace the ten with one, and you imagine it's going to solve all the things, and that might be true but it's going to take time and effort, AND it will create new problems.

How can people find out more about this topic?
 * 1)  Relevant essay: http://mcfunley.com/choose-boring-technology