Response to Aaron Gertler's You should write about your job.
I've been working as a frontend web developer for the past 6 years. Not at EA orgs, just regular ones. Impact was part of my considerations when switching from my first to second job, but I didn't quite optimize for it - I merely "satisficed" in the way that I wanted to have a job that felt more useful to the world and not as if I was basically wasting 40 hours of my time each week. So this post is more about my experiences as a "generic" web dev. Web dev roles in EA orgs (which may be very limited in number) most certainly look quite a bit different.
As Aaron already mentioned in the linked post, there surely is a lot of "literature" about programming jobs already. So I tried to bridge the gap to EA as well as possible here, despite my not-so-EA seeming career choices.
Questions are of course welcome.
- always have been interested in math and computer science
- started programming in my youth and spent a lot of time developing small tools, projects & video games in my free time
- after finishing school, I got my B.Sc. in computer science with pretty good grades; didn't go for a master's degree
- spent a few years creating video games and working on other projects with very limited income (I was afraid for a while this "hole" in my resume would look bad, but everything went better than expected and these years weren't considered a bad thing by anybody as far as I'm aware)
- after that in my mid-20s I decided to apply for different programming jobs
- ended up as a web developer, more or less by random because my first job happened to be web development
- side note: before applying for jobs, I had a super negative image of working as a programmer professionally; I assumed it would most likely be very boring uncreative work with boring people and that I just wasn't the right person to do something like that; fortunately these fears turned out to be (mostly) wrong
- First application: I was invited for a week of working at a small local company in order for them to assess my skills and personal match; the people were all nice, but I wasn't paid for the week, the job seemed very close to the negative image of it I had envisioned, and they never even informed me whether I was accepted (which probably meant no). Bad first experience!
- I applied at another company, but for a quality assurance position instead of as a developer, due to imposter syndrome kicking in and me feeling unqualified to do actual development in a professional setting. Didn't work out because I found something else in the meantime:
- Third application: it was for a junior web developer position in a company that developed an interesting looking software vaguely related to photo processing, which I liked as it seemed somewhat close to what I had been doing in my game dev years. 4 people were in the same room with me conducting the ~2h long interview. I mostly failed on the "experience" questions but performed well on anything that required thinking/problem solving/algorithms. As I heard later, the HR person in the meeting thought it was a disaster, but the 3 other people, all developers, thought it was fine as I was surely able to learn the things that were lacking, and had a good foundation. I started there the week after.
- I believe the timeline of all the applications was roughly a month. I didn't send out many applications at once, but usually just one and then waited a few days what happened. The good grades most certainly helped with being invited to interviews and probably with ultimately being accepted as well.
- I assume I was quite lucky in how things turned out, as the company I ended up at was a perfect match at the time; it was a very interesting product, fun work, a great team, they gave me all the time in the world to adjust and learn things. In the end I had 5 great years there that really were nothing like I had imagined. Working on an interesting product with a dedicated team feels great. I remember having weekends where I couldn't wait to get back to work on Monday. I probably enjoyed at least parts of this time more than my solo game dev time the years before.
- After a few years in that job, I got an opportunity I couldn't miss out on, to work for a different company focused on AI translation. I applied there and this time put some more effort (probably 20-30h total) into preparing for the interviews. Read many articles, watched video courses, took notes, created Anki cards, did a mock interview with a friend, really wanted to make sure I could answer all the technical questions perfectly. Interview went well and I started there a few months later. After having experienced a bunch of interviews from both sides, I got the impression that such a moderate degree of preparation isn't as common as I would've thought, and many people leave a lot on the table by studying less for their job applications than for the average exam.
- A pattern I noticed in these interviews, is that a) I was always asked for my salary expectations sooner than I expected (sometimes via phone in the first call after sending in my resume, when I was way too unprepared for that question), b) I always named a range and was ultimately offered the exact bottom end of that range, c) the offer was always done in such a way that it felt very unnatural to enter negotiations of any kind at that point, i.e. an HR person afterwards told me "this is the offer we've crafted for you" where it sounded like a lot of work had been done to set up the contract, it was clear that they didn't have the authority to discuss the terms with me on their own, and also that their offer fell into the range I had already stated to be acceptable for me. So saying something like "I really would like to talk about that salary again" felt rude in a way, and way too risky for me to do. So I started both my jobs with a salary a bit lower than what I would have hoped for.
- Salary when starting as a junior was €38k / year before taxes. After 5 years and with the new job it's almost doubled. I assume the salary growth (~12% per year on average so far) will slow down over the next years. Both companies are from central Europe.
- Not only for job interviews, but also for yearly feedback 1-on-1s with my manager(s), I found it useful to read a few books on negotiation. Am reasonably sure that my salary would be ~15% lower today had I not done so.
What the Job is Like
- As the difference between my first application + trial week and the job I ended up at shows, experiences can differ a great deal; I'll focus on my two actual jobs however instead of that trial week
- I find working on a product highly enjoyable, as you have some ownership, you see a lot of progress happen, and if you're lucky you even get some nice user feedback
- In both companies there are a lot of meetings. Effectively probably around 20% of my work time, but often it feels more like 50% (the 20% number also only includes the net meeting time, and not any preparation etc.). It's really hard (for me) to get much deep work done on a day with three spaced out meetings. At the same time, I still attend most optional meetings as I want to stay on top of things and not miss any important information. I also find these meetings often reasonably enjoyable, so they're not inherently bad, only in the sense that they keep me from doing what seems like my actual job.
- The non-meeting time for me goes mostly into creating new features, fixing bugs, reviewing other people's code, writing unit/end2end tests, creating documentation and at times doing QA work (much more so in my first job, where there was no QA team and we developers had to test everything within our team). I can also spend my time learning relevant things whenever required.
- Both how long we stay at the office (/work remotely) and how we use that time tends to be handled very flexibly and not be controlled too much. 8 hour work days contain a lot of breaks, chatting with colleagues, things like that. In my first job there was some time tracking involved (not for controlling purposes though), and I averaged ~4:30h per day which I actually worked on concrete tickets, plus the estimated ~1:40h in meetings, which leaves about 2 hours per day of breaks, talking and other miscellaneous things. I never saw any other people's numbers, but my impression is that this wasn't very unusual.
- Deadlines and time pressure exist and are present in the background most of the time, but I still find the day to day work relatively relaxed. Deadlines are sometimes missed, but almost never are individual people blamed or punished. It's usually more of a "it would be really great if we got this done this week" type of pressure than "if we don't get this done, there will be consequences".
- It really helps to work in a team of <10 people where you can make decisions mostly independently
- There are times where I have to dig my way into nasty legacy code, sometimes without documentation, and ask my way around until I figure out how to do something; not very fun, but didn't happen too often
- I really enjoy giving talks and presentations, and both jobs had a whole number of opportunities for that. Both companies are/were also very supportive in giving talks at outside events, such as dev meetups and conferences.
- Both jobs have a frequently occuring day (at least once a month) where everyone can work on whatever they want, which is great and actually seems to bring a lot of value to the company too.
- While pair programming (and mob programming) is done here and there, most of the development time happens alone. Quite often one has to ask around for information too, but the actual writing of code is usually done alone. In both companies we often realized "we really should do more pair programming!" (esp. to share knowledge and improve onboarding of new colleagues), but it still rarely happened, probably due to the awkwardness it often entails.
- both companies are pretty open to working remotely, especially since Corona. For the last 1.5 years all my meetings happened in zoom. It's not like sitting in the same room, but works surprisingly well for me.
- My experience is that getting along well with the colleagues in your team is crucial. This not only entails being polite and nice to each other, but also being able to joke around. Banter is great. Colleagues can definitely turn into friends.
- I never had much direct contact with customers, and my impression is that that's mostly a good thing. Even in my current job, where we develop a very well regarded software that's liked by the vast majority of people, I sometimes hear of super angry customers complaining in ways that I really prefer not to be exposed to directly.
Things I Like
- good team chemistry
- working on a good & useful product
- opportunities to give (and hear) talks on interesting (technical or non-technical) topics
- freedom & flexibility
- very decent salary
- extremely developer-friendly job market
- quick feedback loops (agile development and continuous delivery help)
Things I Dislike
- can't really compare to other types of programming jobs, but my impression is that code quality isn't always great in the web sphere, documentation is often missing, tech stacks are volatile and sometimes hard to stay on top of
- in web development, there's always some risk of deploying something to the web that doesn't work properly without anybody noticing, which then causes live issues that need to be resolved quickly; stressful when it happens, and the fear of breaking things is probably bigger than in other programming jobs
- when working on the frontend side of things, one doesn't really get around working on cross-browser issues, which are often a pain, even though things appear to be getting a bit better.
Things that Surprised Me
- among web developers, people who are really good at math appear to be quite rare
- there are many opportunities to engage in things that go beyond my job description
- to me a 40 hour work week feels more relaxed and less stressful than university or even school
- when working together with many others in larger companies, it seems practically impossible to prevent overhead of all sorts from creeping in. I often have the feeling that I spend days working on something that in a perfect world would have taken less than an hour.
- related to that, uneven distribution of knowledge (both object level and the "who can I ask" metalevel) causes a lot of suboptimal code and leads to friction.
Path to Impact
Disclaimer: While I've done some research and talked to many people about the topic, I don't consider myself an expert on how web development relates to EA. If you disagree about anything or have something to add, feel very free obviously!
- by default, most web dev jobs certainly aren't very impactful
- some may be in the sense that widely used products/websites can affect millions of users, so even minor improvements to the service/software could scale to a degree
- if having impact with your career is your goal, web development may not be the best area (although there are definitely some options)
- very few EA orgs seem to have capacity for full time web dev roles; there may be a limited number, maybe at CEA, Ought, Metaculus and others, but my impression is that these are often very much on the full stack side of things, which isn't for everyone. Also the work there would most certainly differ greatly from what I've outlined here (e.g. smaller team, very few if any other web devs (or devs of any kind))
- there may be room for volunteering though, or generally project work rather than full time employment
- a typical web dev job is probably suited well to leave enough room to work on impactful personal projects outside of the actual job
- Would earning to give work? Probably, to a degree. When optimizing for it, 6 figure salaries are certainly possible in well paying countries or as a freelancer. But I would assume other development roles are somewhat better suited for this (say data science or ML engineer).
- Additionally, as a good web dev it's not unrealistic to land a job at Facebook/Amazon/Netflix/Google/Microsoft/Apple, which might not only yield a better salary but also some opportunities to affect these companies from within
- My impression is that it makes little sense for anybody to deliberately move into web development for impact reasons (unless personal fit is great or none of the alternatives make sense), but for those who are already there, who are a good fit for the job and don't want to reorient in any major way, there are still some quite decent ways to use their skills for EA purposes