striglia
"In the product environments Sean describes, where goals pivot quarterly and features are often experimental, speed is the ultimate currency. You need to ship, iterate, and often move on before the market shifts." -- I disagree that speed is the ultimate currency! A great product org also respects long term leverage, it's just _always_ harder to argue for. But it's best to build a strong portfolio of going fast (where needed), going slow (where high leverage), and if everyone agrees your "going slow" led to huge returns you get the best of all worlds. Frankly it's a sign of a relatively junior product engineer if they are myopically focused on speed at the cost of all else.
"But the more powerful return is systemic innovation. If you rotate teams every year, you are limited to solving acute bugs that are visible right now. Some problems, however, only reveal their shape over long horizons." -- Extremely true, and this is _equally or more true_ in product domains. My most valuable contributions have come from sitting in a product area long enough to generalize 5 micro optimizations into the macro engineering leverage we needed to drive an order of magnitude more value from the same engineering input.
"For some engineers, navigating this [high visibility driven] chaos is a thrill. For those of us who care about system stability, it feels like a trap." -- my protip for prospective staff engineers is to _never_ say you only care about [speed, stability]. In most cases you must care about both, and it's worth advertising yourself as such. If you self select out of companies that only care about [pure stability/pure ship velocity] there should be a valuable balance to strike and staff engineers are in a unique place to enshrine that balance in engineered systems.
"In a product organization, you often need to impress your manager’s manager. In an infrastructure organization, you need to impress your customers’ managers." -- surely we can agree impressing customer stakeholders is even more important in (healthy) product orgs :) But it's a curious claim!
Great article, wonderful to hear more nuanced and deep discussion of the practice of extremely senior IC engineering. Kudos!
Judging just by the blog post, this might well be the best quality of life improvement of 2019.
In the console, I see at least some services (I care about Step Functions) list as "showing default quotas only". I wonder if this means there will be a long tail of adoption before individual services show actual current values?
It's a shame, I found the editing interface pretty convenient (image embedding in particular) and conceptually the Medium-run publications make a ton of sense.
Luckily I work in a tech company where the fact that nobody knew this code and it took years to effectively ramp up on was argument enough that it should go away.
Actual removal was a much messier story. It had tangled deeply into adjacent systems so you couldn't "just replace it". We are in the later phases of something like the Strangler Pattern (https://docs.microsoft.com/en-us/azure/architecture/patterns...) where we built higher-level interfaces over the top and gradually re-implemented the underlying functionality without using any of these custom frameworks.
That said, it's a long term project that is easy to lose steam on. It's been very important to regularly revisit our goals and how we're attacking them...AWS has released services that fundamentally changed our approach (for the better) in the years since this effort started and we've probably cut off at least a year from the overall effort by adopting those instead of continuing on the original course.
I wrote up some of these ideas about accomplishing big projects that span years at https://medium.com/@scott_triglia/ask-a-tech-lead-i-have-to-.... The parts about regularly re-evaluating the next steps in your course of action were directly inspired by this project I just described.
Making technical decisions when you can't know the right answer
Building self-healing, observable systems with AWS Step Functions
Agree w/ bpicolo (hi Ben!) that the tooling still can come a long way for those who can't use Lambdas directly. This code is interesting, but it misses my major use case for Step Functions -- running a workflow across several services transparently.
If I had to guess the future, I suspect that tools like Step Functions will become more and more crucial as we realize that in a FaaS world the job of coordination is complex and essential.
Interesting video from Tim Bray showing off the variety of Step Function uses in the wild https://www.youtube.com/watch?v=sMaqd5J69Ns. Lots of Lambda, but not solely!
We've seen:
* Systematic flouting of laws in public
* Even further hidden avoiding of laws
* Sexism complaints across the board
* What appears to be a pervasive toxic culture, inspired (if not explicitly encouraged) straight from the CEO's behavior
Are they actually too big to fail?
Particularly interested in composing higher and lower level state machines for better separation of concerns, but haven't yet come up with a compelling use case :)
I think I'm mostly excited to stop locally representing/maintaining/enforcing the state machine -- it's been a huge source of toil for very little benefit. Hoping the cheapness of a new state machine will encourage splitting them when it makes sense instead of inflating/complicating an existing workflow...
How are the latency gains in practice? Specifically the activity -> decision -> activity interstitial latency in SFN vs the old SWF style.
Oddly I love speaking at conferences...maybe because some nonzero audience is more or less guaranteed?
Excellent, deep series on Uber's Ponzi-scheme economics
Elegant n-gram generation in Python
Separately, I do find it curious that his list of "pretty standard machine-learning methods" included Logistic Regression, K-means and....deep neural nets? Sure they're white hot in terms of popularity and the experts have done astounding things, but unless I've missed some major improvements in their off-the-shelf usability they strike me as out of place in this list.
There is no such thing as magic
And while I certainly am looking into the future when I talk about cornering the market, I think it's an interesting question to ask how you compete against a company like Google that starts with this much user context. How can you build better experiences when they have the advantage in data, ML expertise, and the raw computational power? The incremental acquisitions of data and companies are not the issue...it's the web of connections that is valuable. And Google is not only trouncing Apple, their only meaningful competitor, in that race...Google is pulling even further ahead.
Funny how Google is continuing to corner the data market via acquisitions like Nest. Almost feels...anti-competitive, no? I wonder how long until we start talking about Google the way we still talk about 1990s Microsoft.
Is it plausible that a new company, starting from scratch in the Maps/Search/Personal Assistant/etc. field could actually compete with Google? Or would they just get crushed under the personalizing power of Google's raw data and computational advantage?
Sins of the Test
I fully support the idea of discussing a problem, but the key term here is discussion. Sitting around talking about how terrible component Foo is because it's obvious to even the most casual observer that it has not a single redeeming characteristic is strictly demonizing.
For me, it's all about the community. Recognize that every program we criticize almost certainly had someone pour a ton of effort and thought into it, and use that knowledge to temper your criticism. Make it a learning experience for the original author, and strengthen your team/organization while you're at it instead of tearing down people in the name of improving the project.
What experience I've had with those data sources makes me unsurprised that there are misplaced businesses.
That said, your example is pretty shocking considering Apple's historically stringent quality standards.