TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

How to maintain engineering velocity as you scale

178 点作者 sandslash超过 2 年前

27 条评论

falcolas超过 2 年前
I&#x27;m going to be contrary and say &quot;that&#x27;s not possible&quot;. At least, it&#x27;s impossible to maintain feature velocity, even if you maintain development velocity.<p>The reason is simple, in the beginning you&#x27;re starting with no legacy code. Features are simple to add, because there is no history to work around. However, even a month in, features are going to start blending together, and new features will have to work around existing features.<p>Your databases will get new tables, and the existing tables will get more columns. The response code is going to fork as the API versions increment. The API space is going to grow.<p>Technology which handled 1-1000 requests per minute will fall over when they start getting hit with 10,000 requests per minute, and require optimizations, indexes, caches, and other complexities in the stack <i>which aren&#x27;t new features</i>.<p>Startups are fun to work for early on, when complications like these don&#x27;t exist. It requires more than &quot;the best engineers&quot; to keep up development velocity, let alone feature velocity.
评论 #33333484 未加载
评论 #33333901 未加载
评论 #33336212 未加载
评论 #33333133 未加载
评论 #33345255 未加载
评论 #33337692 未加载
评论 #33346164 未加载
评论 #33333121 未加载
评论 #33334329 未加载
bentlegen超过 2 年前
Genuine question that isn&#x27;t answered in the article: what is it that Faire is doing that suggests they&#x27;re maintaining engineering velocity as they scale in a way that is equal or better to anyone else out there? Alternatively, what are the engineering challenges of running Faire&#x27;s storefront&#x2F;marketplace makes them more qualified to write about their experiences scaling vs. other organizations?<p>This article opens with an unsupported assumption, &quot;we are really good at this&quot;, and doesn&#x27;t really elaborate on what that means. I&#x27;d genuinely like to know what great engineering at scale looks like, not just some suggested ways to do it.
评论 #33334186 未加载
lifeisstillgood超过 2 年前
- Have devleads as the central crux for every major decision. Screw &quot;senior&quot; management - make sure that the people who are at the codeface every day are part of the major discussions - that those people need to be persuaded of the need for product X or pivot Y. Because they do whether you treat them like it or not.<p>- the above means you are &quot;surfacing&quot; politics. Do not keep the backbiting and infighting amoung a cabal of senior managers who talk to each other a lot. Make it public<p>- Have <i>one</i> place to have these discussions - an email list probably, and the only way to get your project signed off is to get agreement on this list (well, Ok the CTO can have some veto power - this is not a democracy of course)<p>- Analysis really works. Publish one-page analysis of the proposed project. Watch it get destroyed with evidence and laughter and then watch <i>even better ideas</i> get proposed.<p>In short scaling is a political problem - treat it like one. And engineer the horror out of politics. Democracy and transparency are pretty good at that.<p>Edit: Buidling a business IMO has strategic, operational and tactical levels. Strategy should be obvious, be PMF and be well known in the company (a PC on every Desktop). Most of the article is <i>tactics</i> - hiring, metrics, stack etc. The hard part is often operational - and that is almost always orgabisation design and that is about communication, alignment of resources, trade offs, etc etc. That&#x27;s hard. Dysfunctional organisations blow this. Open politics fights dysfunction
评论 #33339580 未加载
sitkack超过 2 年前
Doesn&#x27;t mention Conway&#x27;s Law or the Scientific Method, Continuous Feedback or Composition.<p>Scaling an organization uses the same techniques as creating scalable (computer) systems. Systems are systems.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Conway%27s_law" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Conway%27s_law</a><p>If your systems relies on &quot;hiring the best engineers&quot;, it is operating Open Loop. All Open Loop systems will suffer catastrophic failure at some point.<p>Grit is a dog whistle for grind. You can be tough and resilient and flexible w&#x2F;o being gritty.
评论 #33336888 未加载
maerF0x0超过 2 年前
My tips for maintaining velocity and sanity:<p>1. Ensure your devs are making choices that do not mortgage tomorrow. Anything that gives O(1) value (one new feature) and requires O(n) investment (forever maintaining) is a bad deal.<p>2. Make as much of your code someone else&#x27;s problem through FOSS. (This is kinda the same idea as innovation tokens)<p>3. Solve the generic problem not the specific one. For example, i could write a program that reads a csv row by row, converts it to my internal model, then emits those data into a ndjson file. Or I could just write a program that converts csv to ndjson , agnostic of the data. The former costs you every time the model changes. The latter is useful for a variety of system architectures again in the future.<p>4. Let the computer do as much as possible for you. Automation is compounding returns. O(1) value from manual testing, vs O(n) value for automated testing, there&#x27;s a clear winner in my mind. Typed languages prevent a class of bugs, so does TLA+.<p>5. Most customers wont tell you it&#x27;s broken, most engineers wont stay to clean up someone elses&#x27; mess. Best to avoid those issues or resolve them immediately.<p>6. Remove broken incentives where individuals leverage everyone else&#x27;s resources for their own gain. An example of the pattern is &quot;pleased to announce&quot; emails sent to all@. (along with the litany of reply-all posturing). These kinds of emails cost you for every employee, but only bring value to a very small subset of folks. At it&#x27;s worst you have N^2 cost for 0 value. Ensure individuals can be recognized and promoted without such emails. Disincentivize those who bring that behavior from previous broken cultures.
评论 #33354442 未加载
评论 #33338744 未加载
评论 #33339960 未加载
评论 #33338397 未加载
claudiulodro超过 2 年前
I would say it&#x27;s not necessarily ideal to keep shipping a bunch of features and changes every week as you scale. Once you have an established customer base, change needs to be managed and customers need a heads-up on things that will affect their workflow: you&#x27;ll want to do deprecation periods, beta periods, have backwards-compatibility, etc. No customer is grumpier than the one whos critical workflow you just totally changed without warning!<p>I suppose as long as those sorts of tasks count as maintaining engineering velocity, it&#x27;s all good though.
0xbadcafebee超过 2 年前
<i>&quot;Hiring the best engineers&quot;</i><p>Every company can&#x27;t have the best engineers. They cost too much and they&#x27;re a finite resource. I would argue that the quality of engineers is just going down, too, as the hiring pool is flooded with people who&#x27;ve had zero tech experience, and then took a bootcamp and &quot;churned on algorithms&quot; to finally land a tech job. You probably will end up with poor to average engineers, and you&#x27;ll have to deal with that.<p><i>&quot;Building solid long-term foundations from day one&quot;</i><p>You have average engineers. The foundations they make are not going to be solid. And even if they could make solid foundations, your founders won&#x27;t care. They just want to ship ship ship ship ship. So your foundations aren&#x27;t going to be solid... and you&#x27;ll have to deal with that.<p><i>&quot;Tracking metrics to guide decision-making&quot;</i><p>Never seen it done well. If you have the time and staff to properly do this, you&#x27;re either crazy lucky or are swimming in cash. Those days are probably gone... and you&#x27;ll have to deal with that.<p><i>&quot;Keeping teams small and independent&quot;</i><p>Remember Conway&#x27;s Law? The more teams you have, the more fractured your architecture becomes. Obviously you can&#x27;t have one infinitely big team, so the key is to have as few teams as you can get away with. Integrate them tightly - same standards, same methods of communication and work. Eliminate monopolies of knowledge. Enforce workflows that naturally leads to everyone being more informed. (For example, every team having stand-up on a video call means none of the teams have any idea what the other teams are doing)<p>There&#x27;s actually a lot of evidence-based research and practical experience out there, that&#x27;s been around for <i>decades</i>, that shows how to maintain the productivity of organizations, regardless of whether they&#x27;re growing or not. But they&#x27;re not trendy, so nobody working today gives a crap. Actual productivity gets ignored while managers pat themselves on the back and start-ups churn out banal blog posts with the same lame advice that <i>thousands</i> of startups have used and still completely failed to maintain velocity with. We all know how startups today really get by: burning through staff and money, and luck.
评论 #33335502 未加载
评论 #33337565 未加载
评论 #33335291 未加载
winphone1974超过 2 年前
So they value &quot;grit&quot; which is defined as the ability to code and push features in near real time, as told to the CEO at a multi day trade show, then follow that up with explaining the importance of building a solid foundation.<p>Pick a lane.
评论 #33338422 未加载
whakim超过 2 年前
I can&#x27;t express how much I dislike the advice to be &quot;data-driven&quot; and collect all the data you possibly can because it could be useful someday. While this may or may not be sound business advice, it&#x27;s deeply unsettling to see such profound disregard for user privacy trumpeted as a key to scaling quickly.
评论 #33337983 未加载
评论 #33346342 未加载
评论 #33336623 未加载
reillyse超过 2 年前
It&#x27;s interesting to see CI wait times as core engineering metric. I 100% agree, so much so that I&#x27;m building a product specifically to speed up CI. We have redesigned how hosted CI works focusing on speed as our north star. We don&#x27;t have CI wait time - your test starts immediately and we run your tests super fast. How do we do it? We have many workers with your test environment pre-built so we can split your tests and start running your tests in seconds. If anyone is interested you can check it out at <a href="https:&#x2F;&#x2F;brisktest.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;brisktest.com&#x2F;</a>, I&#x27;d love to hear any feedback from the community.
评论 #33338049 未加载
评论 #33337843 未加载
评论 #33334914 未加载
andsoitis超过 2 年前
&gt; cultural issues do not emerge as you scale<p>Naïve and unavoidable. As you add more people, the people issues become more complex and require more sophisticated approaches. A 10,0000 employee company is very very different from a 2,000 employee company. A 100,000 employee company is again very different.<p>The art then is how do you evolve your culture to adapt, with intent, based on solid principles but that might express themselves differently at these different sizes.
hrpnk超过 2 年前
&gt; Pods should operate like small startups<p>This only works if a pod is equal to a domain that&#x27;s fairly independent of the other domains, technically, and business-wise.<p>If there are N pods per domain, each being their own startup without additional coordination results in chaos and duplicated work. Business complexity not included (two pods from different domains can unknowingly work against each other due to having conflicting goals&#x2F;targets).
ThalesX超过 2 年前
I wish I&#x27;d see advice where they prioritize having a roadmap, milestones, an actual plan of execution, after Product Market Fit (PMF) has been found. And before you find PMF, any concern for hiring the &#x27;best engineers&#x27;, building a &#x27;solid foundation&#x27; is moot.<p>I feel I&#x27;m going insane expecting product people to put the time in to define the requirements and context; I get weird looks asking startups about the plan for the next week. &quot;That&#x27;s how startups do it&quot; is just the most bullshit excuse I keep hearing constantly regarding lack of planning.
评论 #33335587 未加载
itsmemattchung超过 2 年前
&gt; For us, pods generally include 5 to 7 engineers (including an engineering manager), a product manager, a designer, and a data scientist.<p>Similar approach to Amazon&#x27;s internal two pizza team philosphy[0]: every internal team should be small enough that it can be fed with two pizzas.<p>[0] <a href="https:&#x2F;&#x2F;www.theguardian.com&#x2F;technology&#x2F;2018&#x2F;apr&#x2F;24&#x2F;the-two-pizza-rule-and-the-secret-of-amazons-success" rel="nofollow">https:&#x2F;&#x2F;www.theguardian.com&#x2F;technology&#x2F;2018&#x2F;apr&#x2F;24&#x2F;the-two-p...</a>
评论 #33338475 未加载
评论 #33333796 未加载
iovrthoughtthis超过 2 年前
the number one principal of a high performing engineering team needs to be that unblocking your peers is the most important thing you can do<p>if it&#x27;s not, your peers will just invent work to feel useful while they wait for you to unblock them<p>teams that do this go fast, teams that dont go slow
cjblomqvist超过 2 年前
Each pod should have a clear leader. We have an engineering manager and a product manager co-lead each pod.<p>So, 2 leaders is &quot;a clear leader&quot;? How does that work? Sounds contradictory?
mouly超过 2 年前
Scaling engineering velocity is also dependent on the domain and strategy. If the strategy is throw darts on the wall and see what sticks - one can scale independent teams. If the strategy is leverage what we have to build new features then teams have to communicate with each and this doesn&#x27;t scale linearly.
rubyist5eva超过 2 年前
lol this feels like exactly the opposite of what&#x27;s going on at my company now:<p>1. Hire the best engineers: fire half the dev team and replace them with offshore devs for pennies on the dollar 2. build solid foundations: cut every corner possible to get whatever crazy deal our sales team made yesterday 3. tracking metrics: uptime? who cares, CI taking too long? whatever<p>well, I suppose our teams are small when they literally fired everyone and made the &quot;team&quot; so small it literally couldn&#x27;t be smaller or it wouldn&#x27;t be a team (there is 2 of us now). Hardly independent though since we&#x27;re shackled to the whims of clueless sales drones that have zero clue how building software works.
WirelessGigabit超过 2 年前
Don’t take away admin rights for devs. I gotta file paperwork every time I want to elevate to admin.<p>I develop. I iterate incredibly fast. I don’t have time to wait 2 weeks for security to sign off on a tool that I want to use.
diceduckmonk超过 2 年前
&gt; We use Redshift to store data. As user events are happening, our relational database (MySQL) replicates them in Redshift. Within minutes, the data is available for queries and reports.<p>Is data engineering really this simple?
评论 #33336157 未加载
jlarocco超过 2 年前
Honestly, I&#x27;m so tired of arbitrary UI and behavior changes, I&#x27;d actually say more companies need to back off their engineering velocity as they scale. Get it right, then leave it alone.
WarOnPrivacy超过 2 年前
&gt; Faire’s engineering team grew from five to over 100 engineers in three years.<p>If I&#x27;m reading the (below) image correctly: They did this by staying as far away from older engineers as they possibly could.<p>ref: <a href="https:&#x2F;&#x2F;www.ycombinator.com&#x2F;blog&#x2F;content&#x2F;images&#x2F;2022&#x2F;10&#x2F;3.jpg" rel="nofollow">https:&#x2F;&#x2F;www.ycombinator.com&#x2F;blog&#x2F;content&#x2F;images&#x2F;2022&#x2F;10&#x2F;3.jp...</a>
评论 #33334603 未加载
评论 #33338489 未加载
评论 #33334743 未加载
hayst4ck超过 2 年前
Here is what I think are several root causes of poor velocity<p><pre><code> 1. too much focus on hiring 2. lack of clear responsibilities 3. lack of management &lt;-&gt; line worker interaction 4. bad mentor &lt;-&gt; new grad ratios 5. bad product development to infra (build infra&#x2F;infra infra&#x2F;dev tools etc) ratios 6. mistaking prolific senior engineers for good senior engineers 7. letting senior engineers off the hook for maintenance 8. lack of some process 9. hiring specialists </code></pre> One can ask what sacrifices you make to hire good engineers. You might choose to make exciting infrastructure investments rather than a necessary investment. You might promise that the &quot;good engineer&quot; won&#x27;t have to do incredibly boring work. You might hire people who have made a career out of avoiding the real high risk pain centers of a company and instead working on high visibility low risk problems. How much of which engineer&#x27;s days will be sacrificed to interviews? The engineering concessions made towards the goal of hiring are likely an underrated root cause of poor velocity.<p>I watched the most festering pile of code at a company be hot potato-d between the vp of infra and vp of product. The CTO was checked out and not in touch with what was happening enough to know this was a problem. Neither VPs brought it up as a problem, because neither wanted responsibility and therefore the likely black mark by their names for the uphill battle that would result. The company deeply suffered because there was no advocate for the companies highest pain area because everyone with power, clout, or authority avoided responsibility for it.<p>When management gets insular, and management fails to solicit direct feedback for line workers, they can&#x27;t be sure the picture they have in their head is what matches reality. This creates management level delusions about the state of their engineering org. We can see this played out in US vs Russian military structure. Management sends goals down and expects them adhered to. Failure results in punishment. This creates rigid planning and low agility. The US military instead gives lower levels large leeway to achieve higher level goals. It is the lower levels responsibility to communicate feasibility or feedback, and more importantly it is upper managements responsibility to adapt plans based on feedback. I was absolutely part of an &quot;e-4 mafia&quot; (<a href="https:&#x2F;&#x2F;www.urbandictionary.com&#x2F;define.php?term=E4-Mafia" rel="nofollow">https:&#x2F;&#x2F;www.urbandictionary.com&#x2F;define.php?term=E4-Mafia</a>) and I knew much better than my superiors what was happening, why it was happening, who was doing it, who could help doing it, and its likelihood of success because I was in the weeds. When I laughed directly at managers who told me their plans, they thought it was something wrong with me, not something wrong with their plans. That was half management failing, and half my inexperience in leading upwards.<p>Every new grad needs one mentor to prevent them from doing absolutely insane overly complicated things. If you do not have a level of oversight, complexity will bloom until it festers. A good mentor preventing new grad over complications can save an incredible amount of headaches. New grads should not be doing other new grads code reviews (for substantial work). Teams should not be comprised entirely of new grads and an inexperienced tech lead. New grads are consistently the largest generators of complexity.<p>I worked at a place where there was 1 person working on build infra. .2% of the company was devoted to making sure we had clean reliable builds. I estimate 5-15% of the engineering org quit due to pain developing software, which meant there was a lot of time spent interviewing people and catching them up rather than fixing problems. I don&#x27;t know what the right ratio is, but I can say for sure that if you don&#x27;t invest in dev tools&#x2F;build infra etc, early enough, you will hit a wall and it will be damaging if not a mortal wound.<p>There are lots of engineers who code things to be interesting. They write overly complex code. They lay down traps in their code. It&#x27;s rare for there to be a senior engineer who writes boring, effective, and, most importantly, simple code. Some of the code I&#x27;ve seen senior engineers write violates every principle of low coupling, no global state, being easy to test, etc. These people are then given new grads who learn to cargo cult their complexity until it gets to the point where someone says &#x27;we have to re-write this from scratch.&#x27;<p>There is an anti-pattern where senior engineers get to create a service with no oversight, then give it to other people to maintain and build upon or &quot;finish.&quot; Those teams seem to have low morale and high turnover. The people left on those teams aren&#x27;t impressive and so it gets harder to hire good engineers for those teams. If a team is the lowest rung on the ladder, clearly evidenced by being given problems and being told to &quot;deal with it,&quot; that will show to new hires only exacerbating the problem.<p>Some people hate process, it slows them down. Bureaucracy is (debate-ably) terrible. One design doc with a review can save quarters of work. Some process slows progress down now, for less road blocks later. If process is not growing at a rate of O(log(n)) or growing at a rate greater than O(log(n)), then there&#x27;s probably gonna be some problems.<p>Lastly, while it&#x27;s important to hire good people, it&#x27;s also important to hire some specialists. Databases, infra, dev tools, build infra, platform&#x2F;framework infra, various front-end things, traffic infrastructure. There are all types of specializations, and if you have a good &quot;full stack&quot; product engineer in the room without say a platform&#x2F;framework specialist, you will get the product development perspective without the product maintenance perspective, and that has exactly the consequences you might expect. The earlier you get an advocate for say &quot;build infrastructure,&quot; the more you are able to address future problems before they are major problems.
danielrhodes超过 2 年前
This article dances around some of the important stuff.<p>Maintaining engineering velocity is about adapting your culture to focus on the right things. At the beginning, engineering velocity is driven by low communication barriers and fast decision making and lack of existing tech debt. But this doesn&#x27;t scale.<p>For engineering velocity at scale you need the following:<p>- Maintaining a high quality bar: You need to properly manage and prioritize tech debt and infrastructure complexity. This also means keeping dependencies low. The more engineers you have, the more code you&#x27;re going to have. If this catches up with you, your velocity can be severely impacted.<p>- You need to have good change management: things like database migrations or big code changes should carry the least amount of risk possible. Documentation is important. You quickly get into hot water if you get stuck here.<p>- A culture of continuous improvement: teams should be data driven in measuring their performance and motivated to maintain and improve that performance over time. That means, for example, tracking sprint completions, bugs, etc. Each team needs to own this. The goal: ship high quality code faster.<p>- A close connection with the business and customers: When you focus on what the business needs and what the customer needs, it prioritizes things in such a way that your teams are dialed in to work on only what is needed. You can waste a lot of engineering time on things which don&#x27;t matter.<p>- A culture of coaching and personal improvement: hiring good people is key, but ultimately it&#x27;s how they play together as a team which is the most important. People need guidance on how they can be the most useful in that context. Sometimes people don&#x27;t work out, so having fast feedback and showing people the door when they don&#x27;t work out is necessary. Not doing this is a great way to demotivate other team members, at the very least.<p>- High amounts of ownership. This has sort of become a trendy topic in management philosophy, but ultimately it comes down to: can teams make autonomous decisions and own outcomes in the greatest way possible. This is all aimed at reducing decision making and communications overhead. It is also about making sure people with the greatest context can make decisions rather than somebody higher up with less context.<p>I&#x27;m sure I&#x27;m missing other stuff, but if you apply these principles things start aligning themselves in a direction where velocity is constantly improving.<p>However, I think talking about engineering velocity can sometimes miss the mark. What you really want is consistency.<p>Engineering lives within a broader organizational structure and other parts of the business need to be able to rely on you for certain things. When you can say: &quot;Yes we can ship this feature by this date&quot; and then hit that, you enable a lot of things. So yes, being fast is great. But you won&#x27;t get there without being consistent.
vasco超过 2 年前
This is bullshit advice. Hire the best engineers? Might as well say &quot;don&#x27;t make mistakes&quot; in a list of advice about how to minimize mistakes. Same thing with building solid foundations from day one, maybe you do it, but more likely is that the person that comes in to make sure velocity can keep up is different from the core group that was just iterating to find PMF.<p>The other two points are more relevant, but I feel like half of this advice is not really useful. Way more to learn from descriptions of turning around a codebase of CI&#x2F;CD pipelines that were struggling with slowness, flakeyness, contention and how to dig yourself out. Those stories at least you can learn from and adapt to your situation.<p>If &quot;hire the best engineers&quot; is your advice for anything, that is only a tenable strategy for VC backed startups willing to burn 200k&#x2F;person from day 0, but I guess this is on a VC blog, so what can you expect. More useful advice is &quot;how to do X with normal people&quot;.
评论 #33335714 未加载
评论 #33334719 未加载
评论 #33334650 未加载
评论 #33335154 未加载
评论 #33334690 未加载
评论 #33335510 未加载
评论 #33334722 未加载
评论 #33335682 未加载
评论 #33334525 未加载
jahewson超过 2 年前
&gt; From the beginning, we built a simple but solid foundation that allowed us to maintain both velocity and quality. When we found product-market fit later that year and started bringing on lots of new customers, instead of spending engineering resources on re-architecturing our platform to scale, we were able to double down on product engineering to accelerate the growth.<p>This is the gold standard. It takes exceptional talent to put together an organization like this while searching for product-market fit. Bravo!
thedudeabides5超过 2 年前
Step 1. Set up data pipelines that feed into a data warehouse<i>.<p>Amendment if you are using financial data...<p></i>Step 1a. Rather then building this stuff yourself, go to rose.ai and use our financial data warehouse, pipelines*, and pre-built models to save yourself months.<p>*If you are in tradfi, we have Bloomberg, Refinitiv, FRED, CapIQ, FactSet etc.<p>If you are in crypto, we have integrations with the blockchain, Dune, coinmarketcap, coingecko etc.