Why aren't there more startups based on programming languages and software analysis?
There's definitely a need for SOMETHING, as developers have so much pain.
I was recently on a panel where someone asked this question. I didn't have time to answer then, so here's a thread. 1/
There's often a gap between the creators of "principled" programming tools and the needs of working developers.
There are two common technical assumptions: 1) code correctness is a top priority and 2) it's possible to understand the whole system.
Often, neither hold. 2/
In programming languages and formal methods there's the dream of "soundness:" if there's a bug, the tool will find it.
People don't want to know all of their problems. They want a prioritized list of problems that matter. This technical goal is often at odds with user needs. 3/
Developer may want perfection, but what they need is something that fits with their everyday lives.
A big part of this is fitting in with existing work flows. Asking someone to switch over their tools, or use a language or tool disconnected from other tools, is a nonstarter. 4/
I also often see programming tools people ignore design.
Design isn't about increasing prettiness, it's about reducing friction to solving valuable problems.
Today, there's a design gap in between many cool programming technologies and the tools they could become. 5/
tl;dr to get wider adoption, programming tools need:
+ meeting developer work flows where they are
+ interoperability with existing dev tools
+ incremental improvements
+ design that fits developer priorities
- focus on 100% guarantees
- focus on building a new universe
6/
Obviously this is easier said than done! I've been on a multi-year journey of this at @AkitaSoftware and we're still figuring a lot of stuff out.
But the more we talk about this, the more we have hope of making developers' lives better with what is technologically possible! end/
• • •
Missing some Tweet in this thread? You can try to
force a refresh
@kaifulee Jeannette Wing, who co-developed the Liskov Substitution Principle. Leader in formal methods research. Head of @SCSatCMU 2004-2007 and 2010-2012.
My answer: figuring out how to build a team that balances user-focused product thinking with the deep technical expertise required to power it (in our case).
Thread. 🧵
@the_prion@AkitaSoftware At Akita, we're making it easier to detect the API regressions that matter. We want to do this as non-invasively as possible, with the highest information content possible.
This means keeping code changes/perf overhead as minimal as possible, while keeping false positives low.
@the_prion@AkitaSoftware Keeping code changes and perf overhead as low as possible is not easy, and constantly requires balancing software architecture decisions with user-facing tradeoffs.
Keeping false positives low is also a really hard trace analysis problem that also has many user-facing tradeoffs.
A professor friend told me that some female students in her dept asked her how she dealt with being in a male-dominated field. She told them she was an internalized misogynist and didn't have any female friends, but then I taught her to be friends with women again.
Thread. 👇
It's a very human phenomenon to distance yourself from the traits that other people don't respect in you! Think about all the high school movies where the nerd ditches their nerd friends to be cool. 🥸
For any woman who needs to hear it: befriend and champion other women.
Related: I was recently talking to a group of younger female CS alums from my university and they said it was rare for them to have such a technical conversation with a woman.
I was taken aback, but realized that I also felt that way before I found other technical woman friends.
When we talk about "developer experience," we really need to separate dev tools into two categories: ones that simplify things away and ones that help developers engage with complexity. DX needs are different for simplification tools vs complexity-embracing tools!
Thread. 👇
In the "simplification" category of dev tools are all kinds of automation tools: APIs like Stripe and Twilio; SaaS products like Netlify; domain-specific languages like GraphQL.
You want these tools to be as one-click as possible and shield the developer from most details.
The most classic example of a dev tool in the "complexity-embracing" category is a debugger: it shows you your stack trace; it shows you a call graph. It lets you get where you need to go by giving you tools to explore a complex system.
Something I've been thinking about: "bonus skills," the skills that don't necessarily get advertised, but are often the most transferable across life stages.
Here's a thread of the bonus skills I learned at different stages of my education and career. Curious to hear yours.
In undergrad, I learned how to:
📚 Skim hundreds of pages in one hour and have something intelligent to say.
🙇🏻♀️ Be okay with not being the smartest or the most interesting person in the room.
🤝 Be okay relying on other people when working under high pressure.
In grad school, I learned how to:
⏲ Be okay working like crazy right up until the minute of a deadline.
⏳ Be able to wait months and sometimes years for results.
🧘🏻♀️ Decouple my identity from work outcomes.
💖 Lean on my friends for support and sanity.
Thought about this Tweet a lot today. Yes, I agree that Parler will come back, but I have yet to see people talking about just how powerful it is that the major players in the build-yourself-an-app starter kit have decided not to support Parler.
Back in "the day", you had to run your own servers and build most of your app by hand. You needed a small army of technical talent to scale your site, and even then it was still slow going.
Today, you can build and scale an app like Parler user mostly off-the-shelf components.
By denying Parler their services, companies like AWS and Twilio have deplatformed the platform.
It will now take an app like Parler years, if ever, to support the kind of viral adoption it has been seeing.
Second-order deplatforming is a MUCH more powerful tool.