Weeknotes 2024 W20: Birthday
Quick bits:
-
It is my birthday today! I initially had a picnic scheduled for today, but the weather prediction is rain and thunderstorms. I like thunderstorms, but generally only when I’m safely inside somewhere. I will reschedule the picnic to a future date.
-
I missed the aurora borealis. I even missed writing about the aurora borealis last week! Will I ever see one on my life?
-
Whenever a barista asks whether I want “oat milk” or “normal milk,” I have the urge to yell BUT OAT MILK IS ALSO NORMAL MILK!!! Because it is.
Not much of an update on the job search.
I have one open job offer, but it contractually requires me to be on-site in Hamburg. This one’s meant to be a remote job, but I’m not signing such a contract as-is. An updated draft is in the works.
A new job is within reach now. So close!
One of the common components of the job interview process for software developers is the technical task,1 which is something I never look forward to. It involves solving a challenge, and is typically followed by a face-to-face discussion about the solution.
There are plenty of reasons why I dislike technical tasks:
-
I have to prove myself over and over again. This is despite having about fifteen years’ worth of professional software development experience, and having authored several open source products. Anyone should be able to look at my CV and realize that a coding challenge would be nothing but a waste of time.2
-
The technical challenge typically doesn’t teach me anything. For me, it is nothing but a hurdle I need to overcome to progress with the interview process. A good in-person interview, on the other hand, is something I can learn from.
-
Technical tasks take up a gargantuan amount of time. Such tasks can take anywhere from one to six hours — per job opportunity, so it accumulates.
I am fortunate3 to be unemployed right now, and so I have time to perform these tasks. If I were full-time employed, I would have to use my precious spare time, or even take days off. Performing technical tasks is work.4
-
Coding challenges test knowledge rather than skill. The tasks are so simple (yet time-consuming enough) that performing them is fairly straightforward. A coding challenge tests whether you know the programming language and the libraries/frameworks. It does not test skill.
Some coding challenges require you to learn new libraries and frameworks. This takes time, and will yield sub-optimal results: even the most experienced software engineer is going to struggle to produce a good solution if they are requested to use certain libraries or frameworks. If I were to be asked to use Vue.js for a solution (a framework I have no experience with), I would most likely abandon the job application instead.
-
Coding challenges do not test skill. What it does not test: seeing a non-trivial project through to the end, communicating and collaborating with coworkers, planning and prioritization, dealing with setbacks, handling changing requirements, dealing with bugs and handling incidents, and so much more.
-
Coding challenges are so artificial that I struggle to figure out what the reviewers want.
The way I write code differs greatly depending on the purpose. My throw-away prototypes will have giant, badly named functions and no tests, while my production-ready code will be meticulously factored, written with flexibility in mind, with full documentation and an obscene amount of tests. Coding challenge solutions are a bizarre hybrid: I’ll typically skip the tests and documentation — there’s no time for that — but spend a good amount of time to make the code well-factored and extensible.
This occasionally backfires. I have in the past received the feedback that my code is over-engineered.5 Then again, I have also received the feedback that my code is overly simplistic. I suppose there is no winning.
-
There is no guarantee that your solution will pass the test, no matter how good your solution is. You are at the whims of your reviewer. I have submitted coding challenge solutions that I was proud of, and I still got rejected.
Here is an incomplete list of bad technical challenges I’ve seen:
-
Recently, I had to prove that I knew how to create a database in Ruby on Rails. Despite this being an interview for a senior software engineering role. Despite having used Ruby on Rails for over 18 years.
-
A friend, who is a senior software developer in whom I have a great deal of trust, recently failed a coding challenge with the feedback that they are too junior. This is categorically wrong and insulting to boot. (Coincidentally, this was for a job that I was in the running for, too, but I ended up not doing the challenge.)
-
I once handed in a fully functional code challenge solution, and the response was that everything was broken and nothing worked. The problem definitely was on the reviewer’s side.
-
For one technical challenge, I had to use a specific library that I was not familiar with. It was one with a gargantuan amount of documentation and the task was supposed to not take more than an hour — quite the unrealistic expectation.
-
One technical challenge involved making changes to an existing codebase which relied on end-of-life/unsupported versions of Ruby, Node, Python, and OpenSSL, with unsupported Node packages and packages not yet supported on Apple Silicon. I was supposed to limit myself to one hour, but I spent the better part of an hour trying to developer setup going,6 and then gave up.
-
I recently failed a technical challenge, because my solution was too complicated. I purposefully made the code future-proof, as it’d show my ability to write sustainable and maintainable software, but the reviewers did not like that.
Technical challenges reveal a lot about the engineering culture of the company that hand them out. On multiple occasions, I have abandoned the interview process because the technical challenge was a red flag by itself.
So what should companies do? Stop doing technical challenges at all.
I could say that if you absolutely must have a technical challenge in your interview process, limit it to one hour, don’t require any specific dependencies or a non-trivial developer environment setup. But that advice is wrong. The problem is not with how technical challenges are run; the problem is that technical challenges themselves are a waste of time.
I have been suspended from Stack Overflow, initially for a week and now for a full year, for deleting my contributions in protest of the Stack Overflow–OpenAI partnership.
I complained about my suspension, and the email I received in response is interesting:
You have already given SE irrevocable license to use content you posted. You cannot simply remove it.
Fair enough — but why, then, is there a “delete” button for answers at all?
SO7 content has been freely available and has very likely already been used for training LLM even without SO knowledge.
Resistance is futile, then? Bow to our LLM overlords.
If you don’t want your content to be used for training AI you can simply stop posting new posts.
This misses the point, and contradicts the sentence just above.
By removing your content from SO, you are only making it harder for people that don’t want to use AI for finding answers to get the answers they seek directly from the source.
This suggests that Stack Overflow considers themselves the source of truth and a bastion against AI. I am confused.
Anyway, fuck Stack Overflow. It was nice while it lasted.
I’ve been doing my fiction writing8 fairly steadily, but I’ve been thinking about other ways to do storytelling. Writing stories in prose is only one way. I keep being intrigued by other possibilities:
-
Comics: Could I find people who’d be willing to work together on a comic?
-
(Short) films: I’ve done a little bit of screenwriting before. Making short films is certainly still of interest to me.
-
TTRPGs:9 Could I perhaps sketch out a campaign and find friends to play with?
-
Interactive fiction: Way back, I started my adventure in software development creating IF. Sadly, my old work is all lost,10 but I haven’t lost my appetite for writing IF.
-
Board games: This is a bit out there, but board games can definitely have worldbuilding and storytelling aspects.
-
Computer games: These are a perfectly valid storytelling medium, with lots of potential, too. Making computer games is difficult and time consuming, but I would like to have the skill to prototype games quickly.
The best way for me to write fiction is to have a soundtrack running in the background. Here are a couple of games, movies and TV series whose soundtracks I find particularly conducive to helping me focus on writing:
- Roadwarden11
- Sunless Sea12
- Sunless Skies13
- Stranger Things14
- Control15
- Alan Wake16
- Alan Wake II17
- Moon18
There’s plenty more, but that’s been on rotation lately.
Sometimes I wonder: am I doing things the hard way, for no other pleasure than enduring the process?
-
Having written fiction is fun, but the process of figuring out how to write fiction is almost more interesting to me.
-
Same for acting: I’m not so much interested in the outcome as in the process itself.
-
The “fiction writing” topic expanded into the idea of running a TTRPG campaign. I’ve been perusing many resources on how to run something like that.
-
I have also expanded into writing interactive fiction. I’ve been looking into various tools and techniques, and again, the purpose isn’t so much to have an end result that I can share. It’s about the process, about learning and gaining insight. Knowledge and skill are their own reward.
-
I got curious (once again) about creating computer games. I was playing around with LÖVE at first, then figured it would not be a bad idea to learn Godot.
I love how all these things intersect. Fiction writing, role playing, acting, and writing interactive fiction all revolve around storytelling. What I learn in one place feeds into another.
I am in it for the process of acquiring skills, rather than the end result. I like to play around with things I’m not familiar with. I am restless; I can’t stand the status quo.
Entertainment:
-
I have tried picking up H. P. Lovecraft’s writing again, and I just can’t get through it. I conceptually like the stories, but there’s too many things that I find off-putting.
-
In Divinity: Original Sin 2,19 I have arrived in Act II. This game is much harder than I remember. Larian’s later game, Baldur’s Gate 3,20 is definitely more polished, but I’m definitely enjoying Divinity: Original Sin 2.
-
For nostalgia’s sake, I replayed Banished21 for a bit. I thought I was doing well until hit that death spiral — the memories are coming back. There isn’t much to the game: it’s overly simplistic and does not have a lot of variety. Still, it was ahead of its time and pioneered a game genre.
Links:
-
It’s Time for Furries to Stop Using Telegram (Soatok): Relevant for anyone using Telegram, honestly.
-
BOAT MURAL TIMELAPSE (Hanif Panni): I love malicious compliance.
-
Where Do Skyrim’s Rivers Come From? (Any Austin): This whole channel is a roleplaying delight.
-
It’s Easier With Meaning (Christian Tietze)
-
True Facts: Pigeons Aren’t Mindless Peckers (Ze Frank): Pigeons are interesting!
-
Palestinian life under Israeli occupation: An illustrated guide
-
One State: The Only Democratic Future for Palestine-Israel (interview with Ghada Karmi)
-
The Most Misunderstood Philosopher in the World (Philosophy Tube)
Tech links:
-
Microsoft’s AI Push Imperils Climate Goal as Carbon Emissions Jump 30% (Bloomberg): CO₂ emissions are increasing rapidly. Increasing rapidly. Big Tech wants to see the world burn.
-
Curation, search, and the future of the web (Manuel Moreale)
-
Known Purpose and Trusted Potential (Stephen Farrugia): Quote: “What OpenAI have presented with GPT-4o is a fresh paint job on a car with a dangerously corroded chassis.”
-
This goes by other names too, such as “technical challenge,” “code challenge,” “take-home assignment” and the like. ↩︎
-
There is an argument to be made that requiring everyone to go through a technical challenge levels the playing field. But I’d instead rather see the playing field leveled by removing technical challenges in their entirety. ↩︎
-
Being unemployed has its benefits! ↩︎
-
Unpaid, too. ↩︎
-
I typically err on the side of “over-engineering” — though that is because I have a lot of experience and I know that going the extra mile to add more flexibility pays off in the long run. ↩︎
-
This is one of the reasons why I picked up work on my local development environment setup tool again. It certainly would’ve helped — but it should not have been necessary! ↩︎
-
Stack Overflow ↩︎
-
I’ve not got anything new to share yet. It’s been since February since I published anything nontrivial, and it might take a while longer before I publish the next piece. ↩︎
-
I wrote about this last week: Weeknotes 2024 W19: AI slop. ↩︎
-
It‘s probably not a great loss. Most likely just an emotional loss! ↩︎
-
Roadwarden (Moral Anxiety Studio, 2022), published by Assemble Entertainment. ↩︎
-
Sunless Sea (Failbetter Games, 2015), published by Failbetter Games. ↩︎
-
Sunless Skies (Failbetter Games, 2019), published by Failbetter Games. ↩︎
-
Stranger Things, written by Matt Duffer and Ross Duffer (21 Laps Entertainment, Monkey Massacre, Netflix, 2016). ↩︎
-
Control (Remedy Entertainment, 2019), published by 505 Games. ↩︎
-
Alan Wake (Remedy Entertainment, 2010), published by Microsoft Game Studios. ↩︎
-
Alan Wake II (Remedy Entertainment, 2023), published by Epic Games Publishing. ↩︎
-
Moon, directed by Duncan Jones, written by Duncan Jones and Nathan Parker (Sony Pictures Classics, Stage 6 Films, Liberty Films Entertainment, 2009). ↩︎
-
Divinity: Original Sin II (Larian Studios, 2017), published by Larian Studios. ↩︎
-
Baldur’s Gate 3 (Larian Studios, 2023), published by Larian Studios. ↩︎
-
Banished (Shining Rock Software, 2014), published by Shining Rock Software. ↩︎