TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

I built Excel for Uber and they ditched it

753 pointsby robdimarcoover 1 year ago

65 comments

ipythonover 1 year ago
Best quote: &quot;People working for Didi apply for intern jobs at Uber China and then exfiltrate our data. We can’t let them see the formulas or they’ll just copy what we do!”<p>This is so true. People in the US just don&#x27;t understand the level of economic and industrial espionage that happens in China on a daily basis. I was responding to an unrelated breach at an unnamed tech company back in mid-2000s time frame and had a side bar conversation that went like the following:<p>Them: &quot;Yeah, we just opened a tech center in Xinjiang and ... wow, we&#x27;ve had quite the rash of lost ID badges there recently&quot;<p>Me: &quot;Have you considered that they&#x27;re not &#x27;lost&#x27;, but rather &#x27;sold&#x27; for profit?&quot;<p>... silence ...<p>I don&#x27;t know if executives are aware but just don&#x27;t care, or if they&#x27;re simply incompetent, but China has productized industrial espionage on a massive scale. GE Aviation was a victim more recently: <a href="https:&#x2F;&#x2F;www.cincinnati.com&#x2F;story&#x2F;news&#x2F;2022&#x2F;11&#x2F;16&#x2F;accused-chinese-spy-who-targeted-ge-aviation-sentenced-to-20-years&#x2F;69653460007&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.cincinnati.com&#x2F;story&#x2F;news&#x2F;2022&#x2F;11&#x2F;16&#x2F;accused-chi...</a>
评论 #37532237 未加载
评论 #37530659 未加载
评论 #37555897 未加载
评论 #37530417 未加载
评论 #37532686 未加载
评论 #37534400 未加载
评论 #37530500 未加载
评论 #37530603 未加载
评论 #37531692 未加载
评论 #37532902 未加载
评论 #37538290 未加载
评论 #37530749 未加载
评论 #37533101 未加载
评论 #37530569 未加载
评论 #37533036 未加载
评论 #37530807 未加载
评论 #37531480 未加载
erulabsover 1 year ago
I read this article looking forward to the complex bespoke code to be ripped out and deleted - but the author clearly grew as an engineer in a way I didn’t expect:<p>&gt; Sometimes that’s just how it is. The devops saying “Cattle, not pets” is apt here: code (and by proxy, the products built with that code) is cattle. It does a job for you, and when that job is no longer useful, the code is ready to be retired. If you treat the code like a pet for sentimental reasons, you’re working in direct opposition to the interests of the business.<p>A lot of code is fun to write. A lot of problems are fun to solve. But a business, especially a startup, needs to stay razor focused. My entire career is effectively to sit in meetings and tell young, passionate engineers not to build things. It’s a bit depressing, but it’s also vital.<p>A good engineer can solve any problem with clever code. A great engineer knows what problems aren’t really problems and probably an XLS download link updated daily would have been fine.
评论 #37530119 未加载
评论 #37529468 未加载
评论 #37529277 未加载
评论 #37530358 未加载
评论 #37530728 未加载
评论 #37529776 未加载
评论 #37529385 未加载
评论 #37532349 未加载
Znafonover 1 year ago
&quot;Nothing came of it, but I took the code and shoved it into my back pocket for a rainy day.<p>My idea was to take this code and spruce it up for Uber’s use case.&quot;<p>&quot;My first reaction was to publish the code on Github.&quot;<p>I’m very surprised by this, isn’t the code property of Box, or Uber? The author does not mention their authorisation before releasing it under MIT license.
评论 #37529013 未加载
评论 #37528839 未加载
评论 #37528989 未加载
评论 #37536207 未加载
评论 #37528963 未加载
评论 #37534728 未加载
brapover 1 year ago
&gt; He simply couldn’t believe that I’d written a full spreadsheet engine that ran in the browser.<p>I can&#x27;t believe it either, and I don&#x27;t mean this in a good way.<p>Apache POI lets you run headless Excel. You import and interact with sheets programmatically in Java. We used this in my old workplace for exactly the same reason (functions, cell references, the whole thing), it worked great.<p>You found the ‘circ’ problem with a bit of luck. What about all of the other hidden little quirks of Excel that you would ultimately run into down the road? Are you really going to build and maintain a full blown Excel clone in JS? Is this really the objective of the frontend team?<p>It seems to me like a bit of googling and &gt;90% of the work here could have been avoided. As an added bonus it would have been done by the backend team instead.
评论 #37529625 未加载
评论 #37529506 未加载
评论 #37529638 未加载
评论 #37530251 未加载
评论 #37530799 未加载
acchowover 1 year ago
&gt; Over the summer of 2016, we came up against a new twist on the project. We had a model that ran overnight to generate data for anticipated ridership in China. That data wasn’t useful on its own, but if you fed it into a tab on a special Excel spreadsheet, you’d get a little interactive Excel tool for choosing driver incentives. Our job was to take that spreadsheet and make it available as the interface for this model’s data.<p>They eventually built a homegrown &quot;Excel&quot; clone as the UI for their model because &quot;city teams only know how to use Excel&quot;.<p>I would have done it the other way around - connected Excel to the data output by the model so the &quot;city teams&quot; could continue to use real excel. I think most finance teams do something like this.
评论 #37529401 未加载
评论 #37529299 未加载
评论 #37531366 未加载
eastonover 1 year ago
Excel circular reference doc, for the curious: <a href="https:&#x2F;&#x2F;support.microsoft.com&#x2F;en-us&#x2F;office&#x2F;remove-or-allow-a-circular-reference-8540bd0f-6e97-4483-bcf7-1b49cd50d123" rel="nofollow noreferrer">https:&#x2F;&#x2F;support.microsoft.com&#x2F;en-us&#x2F;office&#x2F;remove-or-allow-a...</a><p>&gt; Unless you&#x27;re familiar with iterative calculations, you probably won&#x27;t want to keep any circular references intact. If you do, you can enable iterative calculations, but you need to determine how many times the formula should recalculate. When you turn on iterative calculations without changing the values for maximum iterations or maximum change, Excel stops calculating after 100 iterations, or after all values in the circular reference change by less than 0.001 between iterations, whichever comes first. However, you can control the maximum number of iterations and the amount of acceptable change.
ryukopostingover 1 year ago
I wonder if the author would view this situation differently had Uber&#x2F;Box decided to claim the code as their own. It has to bring some catharsis to know that, even if the code never actually met its potential, at least the whole world can see and appreciate it.<p>I created a whole programming language as an intern for &lt;defense megacorp&gt;. It was lazily evaluated and garbage collected. Unquoted MAC addresses were valid syntax, among other application-specific oddities. No bytecode or JIT shenanigans - the interpreter just pushed and popped stuff from a stack as it traversed the parse tree, and that was fast enough for what we were doing with it. The interpreter was written in pure ANSI C, and Valgrind was very happy with it. Maybe it has been totally forgotten, or maybe it became critical to their technical infrastructure. That code never left the airgapped lab where I wrote it, so I have no way of knowing. 3 years ago, as a recent college grad, that was by far the coolest piece of &quot;actually useful software&quot; I had ever written. It&#x27;s still high on the list. Sometimes I wonder whatever happened to it.
评论 #37530519 未加载
ChrisMarshallNYover 1 year ago
<i>&gt; It’s easy to treat a particularly clever or elegant piece of code as a masterpiece. It might very well be a beautiful trinket! But we engineers are not in the business of beautiful trinkets, we’re in the business of outcomes.</i><p>This spoke to me.<p>However, as anyone that has looked at my code can attest, I tend to also want my code (and its functionality) to be very pretty. I&#x27;m generally writing code that I will be maintaining, so it needs to be something that I can look at, in a year, and understand.<p>I&#x27;m currently in the final phases of a project that I will never announce here, and don&#x27;t plan on taking much credit for, but it really is da schizz. It&#x27;s that way, because no one is paying for it, and no one will make money from it.<p>Money both spoils everything, and also makes it all happen.
pc486over 1 year ago
What a fantastic perspective from the former Uber BI team. I was on the Vertica team during this time period and the amount of effort was spent on incentives mind boggling. Millions a day lost on downtime, product features, or engineering bandwidth was a common theme.<p>A director asking for an exact spreadsheet to be the UI would have been par for the course, especially during the Uber China days. Heck, I personally loaded FX prices into Vertica from a spreadsheet emailed every month to the team. That process remained for more than a year as there just wasn&#x27;t enough bandwidth to invert the control as automated ingestion.<p>Thanks for digging up these memories, @bastawhiz. I&#x27;d love to see more. :)
lxeover 1 year ago
&gt; To this day, I’ve never encountered an in-house application system as well-designed as Uber’s. You could go from start to Hello World running on a *.uberinternal.com subdomain in under 30 minutes with full CI&#x2F;CD.<p>I worked on all this at Uber back then, and this comment warmed my heart a bit. Thank you.
nperezover 1 year ago
I&#x27;ve worked on a project that was intended to replace Excel spreadsheets with a web front end. It was presented like we were moving our processes out of the stone age - as if we were replacing a pen-and-paper process that &quot;doesn&#x27;t scale&quot;, or whatever.<p>I will never do that again. We didn&#x27;t build a whole spreadsheet engine, but we did build a web UI that simply doesn&#x27;t do as much as Excel. Excel is powerful. Sometimes it&#x27;s a fine tool for the job. Our team was laid off before we could roll it out, but I remember the growing sinking feeling of &quot;I would hate using this if I already had a bunch of habits built up in Excel&quot;
lphover 1 year ago
Excel is an ancient and complex beast. I get the appeal of building this project---it sounds fun---but trying to duplicate the Excel engine to the level of producing identical outputs is, frankly, bonkers. The author caught the one discrepancy they noticed, circular reference handling, but how many did they miss? How do they know different inputs won&#x27;t cause it to deviate from Excel? I didn&#x27;t get the sense from the blog post that this had extensive test coverage. Putting it into use for a business-critical financial calculation is a massive risk, but I guess that&#x27;s how Uber rolls ¯\_(ツ)_&#x2F;¯<p>It would have been less fun but way, way less risky to wire a headless Excel up to a javascript front-end.
评论 #37530009 未加载
lowbloodsugarover 1 year ago
IANAL but I&#x27;ve paid lawyers to answer this question in the US.<p>The question is, if you do some work, in your own time, on your own equipment, does your employer own it just because the employment contract says they do?<p>In California: if the work in any way <i>relates</i> to the employer&#x27;s business, then yes, they own it. One way to guarantee that it relates to the employer&#x27;s business is to bring it into the office and use it as part of your job. If your employer is Apple or Google or AWS or Microsoft, then probably <i>anything</i> you write would in some way relate to their business. Write spreadsheets by day, but games by night? All of those companies make games, or are in the games business.<p>I would love to hear a lawyer say, &quot;Well, it doesn&#x27;t matter what the employer does, it only matters what your job duties are, so writing games at night is fine if they don&#x27;t pay you to work on games related things during they day.&quot; But I&#x27;ve never been told that by a lawyer, whether I paid them or otherwise.<p>Everywhere else in the USA: they probably own it. You could write software for washing machines, and write a video game, and if your contract says they own everything you write <i>then they do</i>. You signed it. There&#x27;s no &quot;but surely not!&quot; defense.
dublinbenover 1 year ago
Is it common to take code written for one employer and reuse it for another?
评论 #37528857 未加载
评论 #37532486 未加载
评论 #37532632 未加载
评论 #37532114 未加载
评论 #37529006 未加载
评论 #37530143 未加载
schlowmoover 1 year ago
&gt; “The city teams only know how to use Excel, just make it like Excel.”<p>&gt; “Why can you see the formulas?”<p>&gt; “You said to make it just like Excel.”<p>I can&#x27;t keep up with the espionage story that followed but I had this conversation more than once in my professional career.<p>The first time I sat as a junior dev on a multi-month project replacing a excel spreadsheet for financial controlling of data centers that only one person who was going to retire understood with a web-based solution.<p>They were quite proud that they were going to get a &quot;modern&quot; solution.<p>Then they wanted me to make it like excel. What followed was evaluating every fricking excel JavaScript library out there at this time, going for one and started duct taping all the missing pieces.<p>They were pleased but the look was off. It wasn&#x27;t excel. I slapped some styles on it coming quite close.<p>I was not prepared for what happened during the next presentation: They hated it because they wanted a modern web based solution (their words, not mine) and what they got was a poor excel knockoff running in their Internet Explorers. Tables are so 90s.<p>I remember the pain so vividly that I regard &quot;just make it like excel&quot; as some kind of forming meme for my career till today.
nardiover 1 year ago
I do not like working with people like this, because I don&#x27;t want to be anywhere near the maintenance burden of a pile of hacks that technically can run a single Excel spreadsheet. I don&#x27;t even want to be within earshot of people complaining about this. If I even thought about it for too long I&#x27;m sure I&#x27;d have a giant headache.
评论 #37530555 未加载
评论 #37553484 未加载
评论 #37532885 未加载
mkiiover 1 year ago
&gt; &quot;In 2015, I had built a prototype of a tool at Box. Box had a collaborative note-taking product called Box Notes (based on Hackpad). I had the idea to make a similar project for working with numbers: sometimes you didn’t need a full spreadsheet, you just needed a place to put together a handful of formulas, format it with some headings and text, and share it with other people. Sort of like an ipython notebook for spreadsheets. I called it Box Sums.&quot;<p>&gt; &quot;Nothing came of it, but I took the code and shoved it into my back pocket for a rainy day.&quot;<p>...<p>&gt; &quot;Apparently that was a thing. I remember being only half-surprised at the time. I hadn’t considered that our threat model might include employees leaking the computations used to produce the numbers in question.&quot;<p>...<p>&gt; &quot;My first reaction was to publish the code on Github.&quot;<p>Perhaps the author feels &quot;only half-surprised&quot; due to their own disregard for corporate legal ownership of code. The hypocrisy is strong here.
mrintegrityover 1 year ago
I get a strangely dystopian feeling from this article, like it&#x27;s almost about a character in a black mirror episode
评论 #37530484 未加载
评论 #37529025 未加载
评论 #37529859 未加载
评论 #37529141 未加载
评论 #37528985 未加载
Reubendover 1 year ago
Love the part about circular references. I gotta say though - I&#x27;m having a difficult time imagining how complex these fomulas are that reimplementing Excel&#x27;s formula engine is easier than just porting the formulas into JS.
评论 #37529511 未加载
评论 #37529784 未加载
ww520over 1 year ago
I had a somewhat similar requirement in a past work. The Excel file had all the formulas and data, and the analysts only work with Excel files. The result of the calculation in Excel needed to be put on the web.<p>The solution was not to recreate Excel in the browser, but ran the Excel file with its formulas and its data plus the input parameters from end users at the backend server. Apache POI was a nice Java library that could do everything on an Excel file. Once it finished the formula calculation, I just read the cells from the Excel file to extract the result data and generated the web pages to present the data and graphs.<p>One nice benefit was the analysts could update their work in the Excel file, uploaded it to the server, and got the new calculation reflected on the web pages right the way.
kazinatorover 1 year ago
&gt; <i>You see, when formulas create a circular reference, Excel will run that computation up to a number of times.</i><p>Like almost every spreadsheet before it: Lotus 1-2-3, Borland Quattro Pro, VP Planner ...<p>Spreadsheets iterating on circ references goes back to the 1980s.<p>The first spreadsheet application, VisiCalc, didn&#x27;t track dependencies: it evaluated cells left to right, top to bottom, IIRC.<p>Microsoft had a product called Multiplan that competed with VisiCalc. Not sure if that did iteration.<p>I think it used to be a setting in some programs whether circular references are flagged as errors, or iterate. Maybe it&#x27;s still that way in Excel?
评论 #37530042 未加载
bsderover 1 year ago
Side question: Why the hell is it so stupidly difficult to display and <i>edit</i> tabular data from programming code?<p>You can&#x27;t drive Excel from Python&#x2F;Rust&#x2F;etc (Microsoft just announced to great fanfare that Excel can call Python--which is the wrong way around). All the editable table widgets for the web seem to suck. Nobody seems to have a TUI which you can drive from an external program.<p>A poorly written spreadsheet with a driveable API seems like a component that has been built multiple times by lots of people yet seems to be unavailable.<p>Is there some solution that I&#x27;m missing?
评论 #37542600 未加载
dmdover 1 year ago
&gt; So the data scientists have multiple laptops that they download the data to, then run the models overnight.<p>This haphazard way of running compute jobs really stuck out to me. I can&#x27;t imagine doing things this way (rather than having a central compute cluster running SLURM or similar) at a company bigger than, say, a dozen people - much less the scale of Uber. What&#x27;s the rationale? Even if it&#x27;s just a cluster of 3 or 4 machines in a rack shoved in the corner, isn&#x27;t that better than ... laptops?
评论 #37530024 未加载
mathgladiatorover 1 year ago
Beyond the questionable IP theft.<p>The lesson of what you build for a company as something that may be thrown away is a good one.<p>However, I believe the only way to actually have a sacred masterpiece is to own the company and make the company&#x27;s mission to build that sacred masterpiece. For example, there are definitely business opportunity for converting excel sheets to online apps that are collaborative.<p>The core problem is alignment between the tech investment and the company&#x27;s goal.
hannofcartover 1 year ago
On reading this article, I realised that maybe the most noticeable change that experience brings to a developer is... laziness?<p>When I was 24, I was pretty much exactly this person. &quot;Building a spreadsheet engine that runs in a browser. Sounds like so much fun!&quot; And then I&#x27;d slog away at it for a month and get something working.<p>Now though, with age, I know I can&#x27;t chug away coffee working late into the night. My back hurts when I have to sit too long. My wrists aren&#x27;t being too kind to me these days either.<p>Now if someone asked me to build Excel I&#x27;d first laugh in their face. And if I don&#x27;t see them smiling, I&#x27;d ask if they can afford any of these A,B,C...Z COTS products that are doing this that we can just buy. And if none of those work out, I&#x27;d look for how I can take something like ethercalc and repurpose it for our use case.<p>Looks like the older I get, rather than writing code, I seem to be getting more adept at how not to write it.
abeppuover 1 year ago
I&#x27;m confused about the circular reference thing. Like, was there a reason to do the linear regression that way? Is there a secret story in a story where next week, in a spinoff &#x2F; sequel episode, the data scientist responsible will explain why they took the weird&#x2F;surprising choices they did?
评论 #37529628 未加载
评论 #37530120 未加载
评论 #37529576 未加载
jenglerover 1 year ago
Great to see @bastawhiz on here.<p><i>Box had a collaborative note-taking product called Box Notes (based on Hackpad).</i><p>Slight correction: Box Notes was forked off etherpad-lite. Hackpad was a parallel fork of Etherpad.<p>[context: I was lead engineer on Box Notes till around 2014&#x2F;2015. I left before the events @bastawhiz described]
sr228822over 1 year ago
ironically, I was backend at Uber 2014 - 2018 and used to ask a simple version of implementing an excel formula engine as my go-to coding interview question. Its got a nice mix of data-structures, algorithms, complexity, and implementation. Good candidates can get a reasonably efficient implementation handling cell references in an hour.<p>nice read. made me nostalgic for the wild days of Uber-China hacking.
评论 #37529448 未加载
purpleblueover 1 year ago
1) This was the type of effort and level of coding that I saw when I was Uber during its heyday. I love it and I miss it every day.<p>2) You stole Box code, used it at Uber, and then stole Uber code and posted it on github. I understand no one&#x27;s using the code or missing that code, but you really did steal that code. It belongs to the company, not to you. I would be careful not to do that in the future, because technically that&#x27;s a trade secret and people have gone to jail over that, like that programmer at Goldman Sachs (wrongfully) and ironically Levandowski who took Google code and tried to use it at Uber.
StopHammoTimeover 1 year ago
I find it remarkable that they used laptops for this. Surely, a Dell server for $100k with good specs could have crushed a lot of these models. Could have just given them all Remote Desktop sessions too.
junonover 1 year ago
Hey I worked with Matt Basta at Uber, cool guy and great engineer. His interview question for me was about this exact thing - how one might build excel from scratch. Neat to see him here :)
roarcherover 1 year ago
The intended lesson of this article may be the &quot;cattle, not pets&quot; point made near the end, but I think there&#x27;s another lesson hidden in it.<p>This is the story of literally every single large project I&#x27;ve done under a tight deadline in my career:<p>- Some non-technical department (usually sales) promises a customer something very big very soon, with no regard to how much time might actually be needed to build it. Fulfilling this promise &quot;on time&quot; is now your problem, Engineer.<p>- Months are spent frantically building said Thing, working overtime, burning out engineers, and bastardizing the previously clean codebase in the rush.<p>- The deadline is met, and no customer uses Thing for at least several months. Or the deadline is not met and customer waits for Thing as long as it takes, because they&#x27;re not going to blow up a big contract or integrate with your competitor instead of waiting another month. They have too much invested and the deadline wasn&#x27;t that important anyway. The third possibility, as it was in OP&#x27;s case, is that Thing gets thrown away in its entirety due to some fateful turning of the organizational wheels.<p>I swear, almost as if by some karmic law of the cosmos, literally every frantic deadline turns out to be irrelevant in the end, and you should have saved your sanity and gone home at 5 every day for the last 6 months.
constantlyover 1 year ago
I wouldn’t try moving code written for one employer and using it another employer. Unfortunately for me my employers have been somewhat litigious; thankfully Uber doesn’t have that reputation.
charles_fover 1 year ago
&gt; “Every day that we don’t have this tool as specced, we’re losing millions of dollars.” There was no budging on the spec.<p>If this is life or death, then the first reflex should be to find ways to make things simpler to ship. I understand that the requester in this case was a head of finance, but sh*t, if you want something, try to compromise once in a while.<p>This is a great story, but at some point as an engineer in a gig-selling company, I would have asked myself if my job was really to re-build excel.
OJFordover 1 year ago
&gt; having answers that were very, very close is objectively worse than having numbers that are wildly wrong: very wrong numbers usually always mean a simply logic problem. Almost-correct numbers mean something more insidious.<p>Ha! I massively identify with this. &#x27;The market-wide median is off by £3.07&#x27; is a much harder but to crack than the &#x27;worse&#x27; report that &#x27;the median is twice the max and the min is null&#x27;.
评论 #37532554 未加载
cushover 1 year ago
Any PM that walks in with “Just make it like Excel” hasn’t spent a moment writing code.
评论 #37529723 未加载
gobrrrmemeover 1 year ago
There&#x27;s a service in SharePoint and SharePoint Online that let you program against Excel. Just gonna leave this here.<p><a href="https:&#x2F;&#x2F;learn.microsoft.com&#x2F;en-us&#x2F;sharepoint&#x2F;dev&#x2F;general-development&#x2F;getting-started-with-excel-services" rel="nofollow noreferrer">https:&#x2F;&#x2F;learn.microsoft.com&#x2F;en-us&#x2F;sharepoint&#x2F;dev&#x2F;general-dev...</a>
NavinFover 1 year ago
&gt;You see, when formulas create a circular reference, Excel will run that computation up to a number of times. If, in those computations, the magnitude of the difference between the most recent and previous computed values for the cell falls below some pre-defined epsilon value (usually a very small number, like 0.00001), Excel will stop recomputing the cell and pretend like it finished successfully.<p>W<p>T<p>F
whimsicalismover 1 year ago
Funny that this article is talking about interns exhilarating data and yet the author blatantly recycles code between employers.
itsthecourierover 1 year ago
I&#x27;m glad I read this article and learned about the circ
ineedasernameover 1 year ago
These are the times that, if you at least enjoy the process of coding, you should try to look at your work as a videogame. You enjoyed the game, you even got paid for it, and you beat the final boss, it doesn&#x27;t matter that no one will ever see your final score.
renewiltordover 1 year ago
That&#x27;s a tremendous war story. I _love_ it! Doing a thing that&#x27;s considered unreasonable. Knowing that total value is integral of instantaneous value over time (so short high-impact projects can easily outvalue long-lived projects).
hddqsbover 1 year ago
Tangential, but regarding footnote 7 (efficiently recomputing cells, assuming no cycles), the correct algorithm for determining the order is topological sorting (<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Topological_sorting" rel="nofollow noreferrer">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Topological_sorting</a>). Using a breadth-first search gives a good approximation in many cases, but there are pathological cases where it can produce an inefficient order.<p>&gt; Uber Sheets<p>Hee hee, this name is funny on a number of levels :)
mcintyre1994over 1 year ago
I’m really curious how Uber China was actually supposed to work. I once worked for a company that built server software and my understanding was that they were partnered with a Chinese company to sell into that market. We built a branded, localised installer for them. I’m not sure what the business arrangement was or what equity relationships (if any) there were between the companies. But I can’t imagine Uber would ever be allowed to have a fully owned Chinese subsidiary competing in that market?
评论 #37533053 未加载
JohnMakinover 1 year ago
Reading this and having China cloud experience on my resume I wonder how many chinese data laws they may have violated, you have to really strictly segregate data when it comes to chinese users.
评论 #37530153 未加载
allanrboover 1 year ago
Another approach would be to use the Excel APIs. Both the classic desktop Excel and the web version has APIs to read&#x2F;write cells and recompute. Rebuilding is more fun of course :-)
MrDresdenover 1 year ago
This just gave me chills. Never would I want to work on a tool like this from scratch, and alone for that matter, that was underpinning crucial financial planning for a giant operation like the one described in the article.<p>There are simply too many potential problems that could come up in this scenario and be the cause for catastrophic financial results in the end. And most of them wouldn&#x27;t nessecarily be easily found via unit tests.
mihaalyover 1 year ago
Too many eager geeks are pushing through with realization of things that are a raw (not even half cooked!) droppings of a clueless mind with authority, instead of just simply saying &#x27;No!&#x27; - or giving alternatives at least. Driven by pride doing things that should not have been attempted the first place. Lots of waste, lots of waste, lots of half cooked thingies interacting into unreliable solutions.
smrtinsertover 1 year ago
My favorite line: &gt; On the other hand, we as engineers need to be real with ourselves. Every piece of code you write as an engineer is legacy code. Maybe not right now, but it will be.<p>which of course leads to what some people are saying, did this have to be built? Sometimes I think our job is to optimize ourselves away.
camgunzover 1 year ago
I just finished doing this. I built an Excel formula parser and interpreter, and then a transpiler into Python. I even had the experience of having the values off by &quot;just a little&quot; and there&#x27;s so many things that can cause it, it&#x27;s just whack-a-mole honestly.<p>Makes me wonder how many times this has been done haha.
stevebmarkover 1 year ago
A good and related article about the dangers and poison of domain driven design, and why spreadsheets are used at every level of every company. <a href="https:&#x2F;&#x2F;dev.to&#x2F;cheetah100&#x2F;domain-driven-disaster-147i" rel="nofollow noreferrer">https:&#x2F;&#x2F;dev.to&#x2F;cheetah100&#x2F;domain-driven-disaster-147i</a>
DubiousPusherover 1 year ago
Just a heads up for anyone who finds themselves with a similar requirement, there&#x27;s a very robust set of office APIs available in .net. I would be surprised if you couldn&#x27;t open and run a whole workbook with them though I have only used them for more tangential tasks.
quijoteunivover 1 year ago
Is interesting what people focus on when they read, ultimately I think one needs to ask oneself why you take some jobs. Is the money, the challenge or the purpose. I find that money and challenge has little to go for me if the purpose is skew.
sha16over 1 year ago
&gt; “take this [the spreadsheet] and put it in on the website [Wesley].”<p>This should be taught in classrooms.
PeterStuerover 1 year ago
Running the models on laptops overnight? They know desktops and servers exist right?
评论 #37533013 未加载
评论 #37532617 未加载
Vt71fcAqt7over 1 year ago
I love this article. It begins setting the scene with Uber&#x27;s grand expectations for the chinese market and then shows just a small piece of the work Uber spent on Uber China. Meanwhile Uber China itself failed spectacularly, with factories of phones claiming the free rides money.[0] I don&#x27;t think I&#x27;ve ever experienced dramatic irony in a blog before, certainly not a technical blog. The post itself is a masterpiece.<p>[0]<a href="https:&#x2F;&#x2F;www.forbes.com&#x2F;sites&#x2F;ywang&#x2F;2016&#x2F;09&#x2F;27&#x2F;ghost-drivers-are-just-one-of-uber-chinas-problems-following-didi-takeover" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.forbes.com&#x2F;sites&#x2F;ywang&#x2F;2016&#x2F;09&#x2F;27&#x2F;ghost-drivers-...</a>
ec109685over 1 year ago
This was an amazing read. One of my favorite memories in college was building a spreadsheet in Java (some of the guts were there) in third semester CS.
alzaeemover 1 year ago
I interviewed with Uber in 2016 with the &quot;crystal ball&quot; team. Reading about R-crusher, I am glad that offer never came through!
itsthecourierover 1 year ago
&quot;When I met the members of the Crystal Ball team, it was about roughly ... people&quot;<p>how many people there were at that point, @bastawhiz?
评论 #37529206 未加载
评论 #37529196 未加载
fnwbrover 1 year ago
given this website’s name it’s incredible how deeply neoliberal posts’ contents, comments and discourse have gotten…<p>y’all seriously believe that the only valid reason for an engineer or a programmer to exist is to “create *bUsiNess~ value”? i’m shaking my head.<p>this blog post is full of ideological blindness.
bjornlouserover 1 year ago
&quot;&#x27;Growing as an engineer&#x27; means becoming a better engineer, and becoming a better engineer (directly or indirectly) means getting better at using your skills to create business value.&quot;<p>Learning how the Excel model worked and then reimplementing it would have been a better example of &#x27;getting better at using your skills to create business value&#x27;.
oq_pmgover 1 year ago
Questions at the end of the article, are the ones, every engineering manager should ask
Machaover 1 year ago
So a lot of my time as a more junior engineer was spent on a similar project that I&#x27;ve described as &quot;rebuilding excel&quot;. In my case, it was in the form of a table widget. It was an inhouse widget for displaying tabular data. We were working on AngularJS 1, and had moved from a prior iteration of our application in ExtJS. Now ExtJS had a reasonably featureful table widget out of the box, and so when we were porting to AngularJS, it was considered important that we continued to have these UI features, but at the time (the Angular ecosystem was relatively immature at that time) there were not very many advanced table widgets available in open source, so we ended up building our on.<p>However, while the ExtJS table widget had been treated by product management as pretty immutable &quot;this is what ExtJS gives us, we can customise the colours and wording and that&#x27;s it&quot;, the idea that we could customise the table widget started something amongst one of the PMs. And so we would get a constant stream of feature requests for the table widget to add stuff and enhance it and soon we were significantly more featureful than the ExtJS widget. It&#x27;s still, to this day, the most featureful table widget I&#x27;ve seen in a web app. Everything Excel had in terms of resizing tables, sticky columns, scrolling behaviours, sorting, filtering, searching, etc., all saved in your config so it was synced across all your devices, as well as all the performance goodies like recycled rendering etc. The constant stream of feature requests meant there were dev team years invested in this table widget.<p>As a more mature engineer looking back, it&#x27;s clear that at some point this had stopped being about customer value and more about one PM&#x27;s obsession with getting excel like functionality in a in-browser reporting tool, but at the time we just kept building those features.<p>Now at this time, our company had acquired a sort of competitor of ours. This competitor had what was effectively the same product, but in a different market. And so the first merger of the functionality was basically to reskin both applications so they would pretend to be tabs in a unified application, and change some terminology, etc. They actually did happen to have a pretty similar tech stack to us, so some newer components were available in both applications.<p>But it became clear that our users were not happy with two applications pretending to be one. They wanted to know why this other market was not accessible by, say, a dropdown in the configuration, and not an entire application which worked in different parts from subtly differently to entirely differently.<p>So the discussion became about building a ground up unified interface for both of them. Of course, this ignited the discussion of &quot;which table component do we use?&quot;. On the one hand, the acquired team were looking at our table, with it&#x27;s fifty billion options and single handedly accounting for half the page weight of the minified JS of our application and did not want something so bloated. On the other hand, our team were looking at their table widget which was effectively &quot;for row in data, for column in row, print td&quot; and dreading having to rebuild all these features for product management again.<p>Ultimately the conflict was resolved by choosing to use an open grid that had less features than ours but more than theirs and telling the PM in question that table features were going to be prioritised much less heavily from then on unless there was a real user need for it.
joshuover 1 year ago
i feel like “learn vba” would have been a much easier path here
CodeWriter23over 1 year ago
&gt; Someone will take joy in ripping it out someday.