sw-yx / README

a readme for people working with me. always a work in progress.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hi, I'm swyx

Why read me?

I'm writing this in the hope that we can fast forward through some getting-to-know-you facets of me that we might miss (of course doing so IRL is better, but not always possible).

I am really keen to do great work with/for you and I can be extremely, extraordinarily creative and productive under the right conditions. I also love mentoring, coaching and brainstorming with people who want to do work they will be proud of.

I am also very imperfect and I hope that my transparency about them here is not treated as an excuse for my flaws but as a guide for you to know how I might fail. Consider this an open invite for you to call me out and prevent bigger pain down the road!

My role

I was previously a Software Engineer at Two Sigma, Senior DX Engineer at Netlify, Senior Developer Advocate at AWS, and Head of Developer Experience at Temporal.

Me in a few words

  • Born and raised in Singapore, family are all still there and I visit at least once a year. My baby sister is the most important person in the world to me and she is now a dentist!
  • Came to the US for college. Spent my first career in finance trading equities, interest rate, currency, and volatility derivatives in investment banks/hedge funds. Made apps for quantitative trading, derivatives pricing, and portfolio management in Python and Haskell as part of the job.
  • Didn't like the trading part, loved the coding part. Decided to change careers and make engineering my fulltime job
  • Went through Fullstack to get up to speed on JS as JS is everywhere. Started being active in Dev Twitter, speaking in the NYC tech meetup scene, and helped grow /r/reactjs from 20k members to >200k. Cofounded Svelte Society from 0 to 15k members and 5 conferences. I also wrote the Coding Career Handbook and manage the book's community on an ongoing basis.
  • My full english + chinese name is Shawn Wang Yue Xian, when I was 13 people started calling me "swyx" and it stuck.

What I believe most

  1. Learn in Public: I prefer to share what I learn and work on, after doing my level best, but before it is perfect. This means I will be wrong more often than most people, but I respond very well to people who correct me because I always reserve the right to be wrong. I do not share everything, in particular my political views.
  2. Systems over Goals: There are things I can control and things I can't. Of the things I can control I focus on the items I can work on more frequently that can compound, and get me tangibly closer toward a goal. But the goal isn't the point. The goal doesn't matter. It is the system that sustainably gets me there that is everything, and I welcome the opportunity to periodically take a step back and work on the system instead of working in the system.
  3. Intrinsic Drive over Extrinsic Motivation: Drive is a wake-up call to me. Your original ideas and motivation are more important than the ones I offer you. I will come up with (too many) ideas and welcome criticism of them, and in return don't take my criticism of your ideas as a criticism of you.

Accountability

The general thrust of this is: lets agree upon what we need done and why (I'll always have a suggestion), enable me with resources and knowledge, and check in frequently while I throw myself at it.

  1. Start with Why: I generally (but don't literally) believe in asking 5 Whys and will often question why we are doing a thing as it may not be the best way of achieving our ultimate intended goal.
  2. Frequent, Specific Deliverables: I work best when I know exactly what is expected of me. I'm also a sprinter and will move heaven and earth to deliver something I've signed up to deliver.
  3. Stretch: I have no problem signing up for things slightly out of my comfort zone and knowledge level, in fact I love the challenge and do my best work on the edge.

How I Work

  • How should people set time with you? I may close Slack when in the flow of things, so I may not always be present there. I check email about once a day. I generally like scheduling video chats with a day's notice. You can also book time on my calendar whenever i'm not free and then send me a note.
  • What's the best way to discuss issues with you? I am extremely open to direct 1 on 1 feedback and don't need a compliment sandwich. Likewise I may not do that with you. I don't appreciate when you complain about me to my manager and don't bring it up with me.
  • How do you define "Done"? My bar for "done" is probably lower than yours (see "Learn in Public", above). But I also expect to work on things after they are "initially done", i.e. I probably see more stages to a task than most. I do not put documentation at the end of my process so much as use it as a planning and support tool while I work, but having good docs are very much part of how I define "Done". Tests are great, but only make sense if there is stability in the API/idea so it is more of a judgment call for me than some who want everything unit tested.
  • When are you available? I generally try to work 9am-5pm PT most of the time, and try not to respond to work stuff outside hours unless urgent for work-life-balance reasons.

How I Manage

  • Our Average Week: We'll have a 1:1 every week for at least 30 minutes.
    • We'll have a running doc where we can pop in topics for discussion - first yours, then mine.
    • Ideally, we spend 10mins on topics you bring up, 10mins on stuff from me, 10mins aligning on future plans - but this is extremely flexible and it is your meeting to define, first and foremost.
    • I just request that you share whatever is top of mind first, not the small talk first - especially if it is awkward and something you wouldn't say in public. Here are 13 other topic ideas we can go through as well.
    • Here are the 8 jobs of management I believe in. Explicitly call on these roles when you need me to
    1. Motivator/Team Builder: Motivating our team both individually and as a group
    2. Role model/Expert: Being someone that has personal credibility on doing the job well (though I hope not to be the best person - that would be you!)
    3. Teacher/Mentor/Coach: Be someone that can teach others to do their job well
    4. Champion/Sponsor: Help my reports advance in their careers (within the company if possible)
    5. Go-between/Shield: Filter external chaos, Say no to overload/bad fit
    6. Process designer/Organizer: Define processes for how things are done, redefine them when it needs to improve. Organize chaos.
    7. Goal setter/Driver: Assign goals to the right people, Hold people accountable to reach them
    8. Recruiter. As much or as little as needed
  • Principles:
    • Do work you'll be proud of. We're here to build your career by doing work you'll be proud of in 10 years. You're the main character here, I'm merely part of your supporting cast. Whenever you have doubt or need to make a choice or feel overwhelmed - ask how you could still be talking about this in 10 years and I'll keep you accountable towards that.
    • Drive over Motivation. Finding things that you are intrinsically driven to do is much more effective. I'll help you work with whatever you come up with to make it make sense for the team, and give you all the ideas, connections and resources you need to do the best job.
    • Let's keep it simple. If we are juggling 10 different priorities equally we may not do as good a job as just doing 3 very well.

Personality quirks

  • I am a friendly introvert; I love meeting people in real life in non noisy environments.
  • I love making work fun and adding in emojis and memes to spice up a core message! This can sometimes involve writing song parodies as an outlet - I will sing them for you if under the influence. If I were actually any good at it I'd be a singer-songwriter.
  • I am not a polished speaker (still working on my ums and ahs) but have generally done well speaking from the heart about great ideas and other things I am passionate about.

Known Failure Modes

  • In 2021 my top feedback was that I wanted things to be done my way or else.
    • I do get very opinionated about some things but I will gladly accept if someone has a better reasoned idea. I don't like when the Highest Paid Person's Opinion just steamrolls over everbody.
  • In 2020 my top feedback was that I am too competitive - I translate everything to numbers and compare myself and my team with them.
    • I feel this was misconstrued by others but I am probably much more comfortable talking numbers than most because of my background
  • In 2018-19 my top feedback was that I don't communicate well or enough in some contexts, and often seem distracted. People report that I:
    • move fast and skip steps
    • dont provide enough context in issues or externally
      • In particular, longer explanations to customers, not imperative: do this, do that
      • provide more context in GH repos
    • am not engaged in calls/dont value others contributions to conversations/dont pay attention when others are speaking
    • working on too many things at once
  • I shut down when people are bikeshedding (spending disproportionate time debating small things that they know well while not discussing bigger things that really matter). Yes, what "really matters" is subjective. But I will pick silence over contributing to what I perceive as noise. If it really does matter and you see me shut off, please tell me why it matters (see 5 Whys). I may respond by pointing to the bigger thing that does matter in my view.
  • I've been accused of being too direct with people without context. I don't like small talk and while I respect that there I things I don't know, I often implicitly assume that people will fill me in on what I need to know if they see me assuming things in error. This can be a bad assumption.
  • Because "my bar for done is probably lower than yours" (see above) it can appear like I don't care about details. I care (watch how rarely I make grammatical/spelling mistakes when in formal communication) but I care -more- about getting things out and iterating on the big picture first rather than debating wording on a button. Obviously, a lot more cases in real life are more ambiguous than that. If I make a judgement error and the detail really does matter, please call me out on it and I will work with you.
  • This is a non-exhaustive list; there are definitely more things I can't think of right now.

Misc

This idea comes from Manager README's and User Manuals. I like the idea of READMEs to accelerate getting-to-know-you phases, especially asynchronously. So I'm trying this out.

This is a living document and I hope to update it as I refine my self-knowledge over time. kick me if you think it needs an update.

About

a readme for people working with me. always a work in progress.