Every time that I read this about remote work, all I can think is how much I miss IRC and the culture that came from it.
We were doing remote work effectively decades ago. Don't have hallway conversations to fix bugs? Easy, just post your problems on the team chat and someone (often one of several people) would love to drop by to help.
I'm not sure exactly all of the forces that have led to this changing so much, but I'm certain that merely blaming "remote work" isn't it.
Somehow we were better at using remote tools while literally in the same office than some teams are at using them now while fully remote.
Also super common to simply forget stuff because you don't use it. We all knows lots of people who we think they know everything all the time, but the truth is that most of them googled that 5 minutes before a meeting.
I love software development but recently I have being doing too much data analysis and nothing too exciting.
I get afraid of getting the basics wrong when I go long streaks like that. I appreciate the fact that you showed that to others. This is healthy for everyone. We are living in a society where faking it is so common that people cannot just bear to be themselves anymore
>Pair programming is less fruitful.
I'm surprised at this statement. My team pair a lot - at least half of the time - and the majority is remote.
We find it much more comfortable to pair remotely on our own setups than crowded around a single desk and keyboard.
I wonder why our experiences are so different.
> You lose ambient awareness of coworkers’ problems, and asking for help is a bigger burden.
When I was in school, I discovered that I studied more effectively and efficiently when I'm surrounded by other students who's also studying.
Then at work, I found I worked much more productively if my coworkers are all doing their work.
It's not just simply peer pressure, it's an atmosphere effect, it tell you "hey, this place is for doing this thing, now you do it too", it makes you concentrate. Sometimes being concentrated is a good thing.
The ability to ask "stupid" questions without feeling embarrassed is a superpower IMO.
I had the sweetest manager once. Someone stared talking about iphone and she [1] casually asked "what is iphone?" (this is after 6-7 months after iPhone was launched). Everyone's jaw dropped ... what? In which world u live in? ... to which she said with a wide smile and not an ounce of embarrassment .. "what? I don't know what iphone is?"
But she was otherwise so good in every other aspect ...
[1] She is/was mother of 4 kids and that left her very little time for anything else.
I think the author is too hard on themselves for not knowing things, probably coming from shame. I can only speak for myself but learning to shrug that off just how to say "I don't know X" or "I forgot X" is very freeing. I say I don't know shit all the time at work, and so do people I work with. We aren't encyclopedias. Just chuckle about it and figure it out and learn.
I much prefer working with people who can just be honest about what they don't know, it's way better than pretending to know or trying to save face, and generally people in the former camp seem to have higher EQ.
I like the vulnerability displayed by the author. I'll share a moment myself:
A few years ago I was the TL on a FAANG Android project, where for a few months I was doing more spreadsheet/TPM work than usual, and didn't have much time for coding. Once we had a meeting where I ended up coding in Kotlin live in front of a dozen younger devs to discuss the implementation of some feature. My work background is Android and Java/Kotlin, but at the time I was mostly coding in C on the side, and in the moment my brain just forgot what the syntax in Kotlin is for a "switch-case" statement, so I wrote "switch", "match", etc, struggling like a first year student, while everyone watched me fumble, until I just gave up and said: "oh my god, I'm forgetting Kotlin. What the hell is the switch keyword in Kotlin called?". Then someone said: "it's when".
I felt old and a little embarrassed, but mostly I was surprised at how quickly I could forget a programming language I used daily.
What does it say about me, that I was SURE his article was going to be admitting out loud that we are engineering ourselves into obsolescence, a lot of us are really enjoying it, and nobody is seriously discussing how afraid we should be for our families and future. I’m afraid to mention it professionally, given we have a literal policy around “AI doomers” (not the exact term) that has the word “separation” in it. Worse, I’m afraid to THINK it, like a cognitive dissonance while Claude writes module after module for me. I am enjoying the hell out of it, I’ve done nothing else for dozens of months, and I feel that hence I am/developers are in a unique position to understand what type of hell - or heaven - our society might experience in the next five years. Shouldn’t we be openly discussing how we can leverage this foreknowledge?
I appreciate the author being vulnerable like this in a public setting. It's easy to see why it would be scary, especially since admitting being wrong or not knowing something can easily be turned into questioning one's overall competence.
I wish we'd be more open about our flaws and knowledge gaps in general. I think we'd all benefit.
My knowledge-gap confession: even after many years with the languages, I can't write a main() in Python or Java without looking up the format.
Really appreciated this. It’s refreshing to see someone be this honest about their gaps and growth. A lot of us quietly deal with the same things, so thanks for putting it into words.
It’s horrifying to learn that someone feels guilty for not fully obeying the commandments of Uncle Bob. It would be more appropriate to feel guilty for taking his advice.
I can relate about OP’s comment about OOP. On a similar note, I had written about re-discovering visitor pattern:
The majority of these hidden truths are due to senior engineering management in their 40s and 50s who have not coded in decades, and yet pick up the latest trend or fashion and impose that on their teams.
The monolith to microservices trend was one great example of this.
The section on cyberharassment is really troubling, although with the current vitriol on AI I'm not surprised. Do wish the author mentioned the name of the site though, if only so I can avoid it (and not in the Always Sunny "oh no terrible! where?" way)
20 years in and I still have to look up basic SQL syntax sometimes. The longer I do this the more I realize how much I don't know. At some point you just accept it and focus on knowing where to find answers fast instead of memorising everything.
I need to figure out how to be as open as the author is - it comes across as fricking amazing!
> left inner join
While I do appreciate this joke (and I do hope this is a joke), I've recently had a project majorly held up because a lead dev didn't understand SQL. It's great to admit gaps but it's equally important to close those gaps.
> As a hiring manager I interviewed software engineers and tried to filter for object-oriented knowledge. Retroactively, it’s clear I was hypocritical.
As some one who has been on the other side of "rejected by an interviewer who didn't understand the thing they've interviewed you about" I, again, appreciate the transparency, but I'm not entirely feeling that the lesson has been learned in the case.
There was a time in my life where I felt ashamed that I didn't know calculus... so I learned calculus and my life has been better for it. While refusing to admit ignorance of a topic is particular problem in tech, confessing that you don't know something and gleefully stopping there is not much better. Holding people up to a standard you do not hold yourself to is a major problem in this field. The technical people I've learned the most from hold you to a high standard and hold themselves to an even higher one.
Of course not every engineer has to hold themselves to a high standard, but if you want to write a blog about a topic, then part of the requirements here is that you do hold yourself to a high standard. Yes, we all have gaps, and we shouldn't let shame get in the way of learning, but we shouldn't let shamelessness about what we don't know limit us either.
I really appreciate public vulnerability.
And I want to offer some contrast—not as a rebuttal, but just as a reminder that there’s lots of different ways to navigate this strange field.
The _majority_ of the paid code delivery I’ve done for a decade+ has been in Ruby. (The balance has been a mix of mostly devops and some TS/JS and Elixir.)
Remote work has been an utter boon. Admittedly, I do feel like it’s got worse since Covid. But I’ve been able to work with people all across the globe without uprooting my family and leaving my community, and conversely can travel without having to leave my job or clientele.
And I do find that some places benefit from thinking hard about their process. Small senior teams do great with Shape Up. Projects where you have a non-negotiable scope (replatforms) and work streams that are more reactive than planned do better with kanban than something involving estimates.
That’s not to say the author’s wrong! Again, just that the world is wide and experiences differ.
Some context here: I’ve consulted full time almost continuously since 2018, which certainly colors my experience.
Like the post overall, but the last section is a bit weird for "confessions" as it's all HIGHLY subjective. For example, I worked at a company where no one worked from home and we paired 100% of the time. When COVID hit, we started pairing over Tuple and I found it to be a superior experience to pairing in person (Tuple's drawing and attention drawing tools are far more accurate than my finger, I can use my own keyboard the odd time I want to control my pair's computer, and there are no office distractions of other pairs in the same room are benefits that come to mind). I continued to enjoy (and prefer) it for the 1.5 years I stayed after lockdown.
Loved your post! I've been feeling the same way (currently feeling crushed by work+master's)... hope to work the courage to break the dam as well.
Here’s a great idea for a good opportunist:
A “Confessions of a Software Developer” website where devs can come in and make anonymous confessions.
> I Didn’t Understand Polymorphism For a Decade
> And yet, my lack of awareness of polymorphism showed me I’ve been writing little more than structured programs. That I could replace conditionals and case staments with specialized classes had never crossed my mind.
> Polymorphism is covered in every college OO course.
Consider yourself blessed then because you're in for one hell of a ride if you pursue that path to its extreme. For me, it was the opposite: been taught OOP, I had to unlearn most of it to be able to better structure my mind and how I think about programs.
You should know what polymorphism is (also, there's static, dynamic, ad hoc, single dispatch, multiple dispatch), but I don't think it's a weakness if you have not been using it that much (the real weakness is over-using it and making a clusterfuck out of your code.)
Which is a long-winded way of saying that you could be doing much worse, if that makes you feel any better, lol.
I think Uncle Bobs advice is mostly bad and am afraid to admit it because it’s like a (cargo) cult now.
Refreshing to read, I bet it was cathartic to write. I hope your fears don't come true. I think they won't. Many people do genuinely appreciate this kind of honesty, even when directed against them, but it is a gamble.
A good reminder that everything we say/hear/write/read exists in the unseen context of all the things we believe we should not say.
Remote work is great (for the reasons you gave and more) and saying it "sucks" made me roll my eyes, and it's reductive in the same way as saying office work "sucks." I wouldn't have had a job if in-office was the only option. It certainly didn't suck for me.
Being bad at problem solving with people far away is just another problem you can solve with practice. Same as being bad at problem solving even when help is right next to you.
I am dumber for having tried to understand what I just read.
> it’s easy to form an enemy image of somebody at the end of video call, but difficult to keep that image when you share a room with them and sense their pain.
I'm honestly so confused by this. Has the author never worked in an office before? Building a grudge for someone that you are forced to work with and sit next to all day is one of the classic office dilemmas. Being forced to be around them all day can really build resentment to people
> Remote work sucks
Work sucks in general. Remote work is of course not perfect, but its problems need to be compared against non-remote work problems..
If you ever feel bad about yourself as a programmer you can go read some Rasmus Lerdorf quotes to cheer up :)
> Remote work eliminates a lot of problems with office work: commutes, inefficient use of real estate, and land value distortion. But software development is better when you breathe the same air as the folks you work with. Even with a camera-on policy, video calls are a low-bandwidth medium. You lose ambient awareness of coworkers’ problems, and asking for help is a bigger burden. Pair programming is less fruitful. Attempts to represent ideas spatially get mutilated by online whiteboard and sticky note software. Even conflict gets worse: it’s easy to form an enemy image of somebody at the end of video call, but difficult to keep that image when you share a room with them and sense their pain.
Every ounce of data proves this statement wrong. If you feel like you work better non-remote then do it. Don’t shill it as a panacea. I’ve been remote for 11 years now and if I wasn’t I wouldn’t have been able to take care of my family, go back to school part time, work on my health with better meals and reasonable gym hours, etc. even IF in office was better for the employer (even though all data says it’s not in terms of productivity) it is unequivocally better for the employees life to work remote as much as humanly possible.
This hot take is just simply insane. Humanity had no problem coordinating massive projects over IRC and mailing lists. It’s clear the author is a “nu-coder”.
> software development is better when you breathe the same air as the folks you work with
Ever heard of flu season? What if you have a family and don't want to bring diseases home?
> Attempts to represent ideas spatially get mutilated by online whiteboard and sticky note software.
Right... like, the Linux kernel team? Or any of the major open source key pieces of technology you use? Built by large teams that worked remotely for decades even when tools where orders of magnitude worse than the current state of the art? Some of them never meeting each other in person?
---
Remote work DOESN'T suck. YOU make it suck.
Remote work is great if you care about shipping.
Want to go for coffee or want to talk about our weekends? No thanks.
Did you see the distracting thing outside the building? No, I didn't because I don't have to go there anymore.
Is the heat too high or too low? It's your own home, just adjust it to YOUR convenience.
Worried about your pets being alone? Just be next to them. I care more about my pets than some stranger from work.
Want to be loud and flex about random stuff? Log into LinkedIn and talk to the other geniuses like you while I focus on doing my job.
Most people SUCK at drawing, suck at calligraphy and their whiteboard diagrams SUCK. Therefore, whiteboards SUCK. Unless you have great calligraphy and drawing skills, whiteboards are not helpful. You are just sad because you are not getting attention by being in front of other people looking at you.
[dead]
[dead]
My confession is that I actually love torturing people in coding interviews. Sick I know, but these are 6 figure jobs they are applying for.
Well written article full of humility and vulnerability? I love it. My reaction: you don't need to feel ashamed of not knowing something, there is far too much to know and I'm still learning new techniques and concepts 37 years in, so I would never judge you for it.
I would also not judge you for having your own preferences and opinions. I too prefer working in an office to remote work, but when I say this out loud other developers take it as advocating RTO or saying remote work is worse when it just doesn't suit my personality. I get that it's a touchy subject but there is no need to get up in my face about it.
You mention bullying and brigading and that seems to be an unfortunate reality of this industry. I suspect there is a lot of insecurity and imposter syndrome that causes people to write hyper-confident blog posts about why they are better without AI and how their tests have 100% coverage and how (unfashionable language which half the world uses) is garbage etc. Maybe if we all follow your example and be candid everyone could chill out a bit.
I'll go next: despite trying several times, I have never successfully written anything more complicated than Fibonnacci in Lisp or Haskell. I know it's clean and pure and all that, but my brain just won't work that way.