In the last few years, I've talked with hundreds, if not thousands, of software developers.
What I've learned: there's a HUGE gap between what developer-influencers are writing about, versus the daily reality of most developers. BUT PEOPLE DON'T TALK ABOUT THE OTHER STUFF. 1/
Two important lessons I learned in my twenties:
- If you think everyone hates you, you probably need to sleep.
- If you think you hate everyone, you probably need to eat.
Today I discovered an unfortunate consequence of GDPR: once someone hacks into your account, they can request--and potentially access--all of your data. Whoever hacked into my
@spotify
account got all of my streaming, song, etc. history simply by requesting it. 😱
In software engineering, there's what people think of as "docs" and then there's "the information I needed to debug that thing that took to days of my life."
The second thing is different and should be called something other than "documentation." But what should we call it?
To start shedding unattainable software standards, let's:
🛑 Stop thinking of software as homogeneously represented by a small number of unrepresentative companies
🗯 Start being more honest about "real software process"
🛠 Demand more solutions to the real problems!!
end/
Today, I made a curious discovery: Javascript, Typescript, Python, and Java all follow the same cyclical pattern on Google Trends.
Rust, on the other hand, does not.
My theory: weekends. You know a dev tool is primarily used at work when you start seeing the Weekend Drop.
The TAs for the class I'm teaching, Principles of Imperative Computation, got me a "Functions are Pointers" jacket. (These jackets are in opposition to the "Functions are Values" jackets from the functional programming TAs.) I now wear it to point at functions.
When I was and undergrad and junior grad student, I regularly burned myself out on deadlines. I actually work WAY harder now. And I'm able to do it because I learned to manage my energy better. Here are some lessons I learned.
Thread. 👇
But the solutions that engineers at a Netflix or LinkedIn or Facebook come up with aren't for the vast majority of software shops: they're often best for big companies that can afford to set a high engineering bar, that can afford large infrastructure teams and ops teams. 3/
Two important lessons I learned in my twenties:
- If you think everyone hates you, you probably need to sleep.
- If you think you hate everyone, you probably need to eat.
SO MANY of the software teams I've talked to have sheepishly told me that their software practices differ from the recommended standard.
When I listen to why, it makes a lot of sense for their needs: different org size, different eng team makeup, different shipping cadence. 4/
Many assume it's a matter a time before certain practices permeate the entire software industry.
But if you have piles of legacy code and/or limited engineering bandwidth, it absolutely does not make sense to redo your entire system using something that "makes sense." 5/
Here's a good article for the people asking me if data anonymization techniques work in preserving anonymity. Tl;dr: no, especially not when you can link different data sets together.
Taylor Swift as important papers in programming languages, a thread.
"An Axiomatic Basis for Computer Programming," C.A.R. Hoare, 1969. Introduced Hoare Logic for proving program properties.
What programming languages and cars have in common:
🧐 Everyone uses them but few are enthusiasts
✨ Engineering meets design
For a timeline cleanse, here's a thread of programming languages as cars.
First up: Python as the Honda Civic. Practical; ubiquitous; not the fastest.
People sometimes ask me what you learn during a PhD.
One of the main skills is the ability to be okay with massive uncertainty about how things will turn out--for an indefinite period of time. Also a good skill set for this general period of history.
Curious what others think.
Was talking with a massage therapist who worked with several Bay Area sports teams about just how much effort pro athletes put into recovery. Been thinking about what recovery looks like for people whose work involves giving their minds, rather than their bodies, a beating.
Been having many conversations with people in their 20s about the paralysis that can arise from having too many life choices. My advice: commit to something and commit hard. Doesn't matter if you switch later. It's easier to prove yourself if you've had to do it once before.
My Halloween costume: "data anonymization." Because I didn't get a bespoke disguise, you can still tell exactly who I am and what's supposed to be on my shirt. 👹
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. 👇
A disproportionate amount of writing and tooling comes from companies like Facebook, Netflix, LinkedIn, Google, and Amazon. Many people assume there's a trickle-down effect: great engineers at companies with money to burn come up with good solutions to problems everyone has. 2/
Fran Allen became a programmer only to pay off her debts so she could go back to teaching—and then ended up doing such seminal work in compilers that she won the Turing Award in 2006.
RIP to one of the greatest luminaries in our field. 🙏
When I was younger, I thought the most valuable skill I'd learn would be kernel debugging or something else technical.
The most valuable skill I've actually learned: finishing projects. Many people have ideas. Many fewer people are able to define projects they can deliver on!
Met Gala as monitoring and observability solutions, a 🧵.
Kim Kardashian as Datadog.
Requires investment to get into. Takes active upkeep. Generally worth it, but there are gaps (and the occasional malfunction). Not an easy situation to get out of.
The year is 2030. Everybody who is not a founder is now a VC. Companies can no longer hire people to build stuff, so people are just selling their companies to each other. All companies are web4.
My first week of the PhD, a professor told me that he knew my type, the kind of student who always got the As, and that I needed to get comfortable failing to do great things.
That was life-changing advice. There's angst you carry around with you until you're not afraid to fail.
@Spotify
Also, if
@Uber
or
@lyft
is watching I hope your security/privacy engineering teams are being careful with your download-all-data feature!! Would be pretty bad to get hacked and kidnapped in the same day! cc
@44
Jean's Law: no matter how fast of a machine you get, you will begin regularly using a number of browser tabs that exceeds the smooth functioning capacity of the machine.
As I've been recruiting for my startup, I've found that the women, on balance, are more hesitant to join an early-stage startup than the men are.
I'm curious to hear from women: what's your reason for preferring bigger companies, if you've made that choice?
Just had a conversation with an early PhD student thinking about whether they should leave grad school. It made me think about how it must be hard for junior people in general (in academia + industry) to find comfort in work right now.
Here's a thread of what I told this person.
Upon popular request: skincare products as developer tools, a thread.
Starting with CeraVe Facial Moisturizing Lotion with SPF as a linter. One of the highest-leverage, lowest-cost things you could invest in. Prevents headaches and slows down aging.
Been talking to students who are figuring out what they want to do with their lives. My advice: many people rarely know exactly what they want to do. In the meantime, 1) collect as much leverage as possible and 2) leave everything in better shape than when you found it.
I've been thinking about how "rtfm" ("read the f'ing manual") culture creates obstacles to good developer experience.
Not only does it lead tool creators to assume users will read docs and follow rules, but users themselves are often hesitant to ask questions and give feedback.
@Spotify
Companies should really put some multi-factor protections on how a folding containing all of one's personal data, ever could be accessed!! It would have been a lot better, for instance, if Spotify had made this file available only after authenticating via email.
Every now and then, someone asks me what jobs should someone consider if they're interested in programming languages, compilers, and/or programming tools.
"Like" if you'd be interested in a blog post about this!
When ChatGPT came out, I was excited about the ability to prototype with AI. Everyone now has an ML team at their fingertips!
What I underestimated: how much ChatGPT is a *UI* prototyping tool.
Quick thread about how our team prototyped 4+ new capabilities in < 1 week. 1/
Programming and software engineering have become entirely different activities.
Increasingly, creating programs from scratch happens only for fun. But people still think of programming this way.
Software developers instead spend time collaborating, deploying, and maintaining.
At one point in my mid-twenties, a friend observed that we were nearing the end of getting opportunities because of our potential and would soon be evaluated on what we've actually done. This was a real turning point in my thinking on how much space I should take to find myself.
During my nightly stroll down the internet rabbithole, I discovered a fun fact: there was a single point in time when the Google-searching public cared more about data breaches than they did at Taylor Swift, and that was in the aftermath of Equifax, September 2017.
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/
Could people be upset about
#CoPilot
because it's making clear that the harder part of creating software is often choosing the problem and solution strategy, not the algorithms and data structures stuff that people love to judge programmers on? 😼
::ducks and runs::
The year is 2022. All meetings between two people involves each person trying to hire the other. There is a quarterly rematch for meetings that end in a tie.
Someone asked me for a working programmer's guide to static analysis, what you can and can't enforce with mainstream programming languages, etc. There is no such guide that I know of and I've been thinking of writing one.
Is this something that would be interesting to people?
I saved one of the biggest lessons for last: reducing angst overhead. A lot of the time I used to spend working, I was actually angsting. This took energy and did not get me anywhere! This was such a big lesson for me I wrote a blog post about it here:
Every now and then, I see a thread about how functional programming languages are The Way, wondering why they aren't more popular.
A big problem is that people talk about functional programming as The Way for Everything. FP has its place. All tools have their roles. 🧵 1/
Ok I have developed an apparently controversial view on tech debt: it's more like a house mortgage than a student loan. Almost everybody takes it on; the question is on what terms. It can also often be advantageous towards your goals to take one on.
Not addressing your tech debt is like not brushing your teeth; it saves you a tiny bit of time and money up front, but it has a way of catching up to you in the WORST ways down the line.
The most important thing I learned was to recognize if I'm not working productively on something and step away. To make a sports analogy, pushing through fatigue is how you get better but you shouldn't push through injury. Taking a break early can give you a lot more time back.
When I was a first-year PhD student, one of my mentors told me I was never going to do great work until I got over my fear of failure. Great reminder that graceful failure is a skill (and skills take practice)!
Had a great conversation with
@johnregehr
today about how a lot of stuff that seems very much backend-only/hard tech (compilers; security tools) actually requires a ton of UX engineering. Nobody cares about your tool if they can't understand the output!!
When I started Akita, we had an office and people loved coming in.
In 2020, I pivoted almost my entire team. A big part of it: finding people who worked well remotely.
What I learned about remote vs in-office: they require VERY different cultures. You can't just flip a switch!…
Something all work/life balance conversations I've ever heard have missed: what to do if you are an obsessive person.
If you are like me, you do best when you have something all-consuming to channel your energy into. I tried for years to have more balance but that's just not me.
As someone who needs to believe 100% in my work, I've been envious of people who can do something simply because it is their job.
In the age of the Great Resignation, many more people seem to be questioning their relationship with work. Here's how I figured it out for me. 🧵
My PhD advisor liked to say that his favorite kind of problems were the ones where you tell everybody exactly what you're going to do, nobody believes you can do it, and then you do it anyway.
Find differentiation that doesn't require secrecy!
When I started my first company, I was paranoid about sharing information or telling people what I was doing outside of the company
When I started my second company, I was much more open with information to investors, advisors, other founders in the market etc
In my college compilers course we built:
⚒️ A MIPS simulator
⚒️ A tiny C-to-MIPS compiler
⚒️ A tiny Scheme-to-C compiler
⚒️ A basic type-checker for our Scheme language
⚒️ A polymorphic type-checker on top of that
⚒️ A register allocator
This was one of my favorite classes.
Throughout my career, people have kept asking why I don't work on [trendy thing] instead of dev tools.
To me, empowering developers to build better software is just THE thing to work on.
It's cool to see dev tools get more buzz. I hope leads to better software for all!!
When I walked in the door today, my boyfriend, a university professor whose in-person classes have been cancelled, was setting up Twitch for his lectures.