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.
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.
I get the feeling there are a lot of people who are developers by trade who are following what they feel they should do to progress their career rather than what they should do to work on something that interests them. Sure, the industry isn't what it used to be in terms of job market, but for a good long while there it was relatively easy to find something that interests you if you were competent. But if you're not interested in what you're working on, I find it strange to write a blog about the C#/.NET journey. I'm asking these questions genuinely: Was this a self imposed expectation for career reasons? To have a tech blog? Are you actually interested in programming or is this something you found that you're decent at and knew there were career opportunities?
About SQL knowledge, over the many years in this profession, I've re-learned SQL three times. This is because I'm a generalist, and there were large portions of time where I just didn't need to know it. But surely, in all your years of experience, you must have realized: You will never know or recall everything you learn or even scratch the surface of what you haven't. Even if you did remember everything about SQL when you learned it, you're going to have to relearn it anyway. Everytime I touch Postgres there's loads new features out. That is how any maintained software is. That is just the job, as far as I'm concerned. Very few people have the luxury of being able to hyper specialize and looking things up isn't just important, it is necessary, because being an encyclopedia of product development isn't why you're employed. The knowledge and expertise you are paid for isn't SQL syntax or how well you know C#, it is your ability to apply technology to solve problems and effectively work within a team to do so (a tangent, but this is why in the long wrong AI won't replace you).
I don't mean to preach or give a tome of a message. I am _genuinely_ interested in your perspective. I have bounced around a lot in my career but generally have to mentor folks and I'd love to chat more about this particular struggle because I hear it frequently. Especially from those who seem to have a bit of an identity crisis in their profession.
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.
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.
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.
“Follow Scrum, Lean / Kanban, or eXtreme Programming to the letter” - there are plenty of failed projects and unhappy devs that have done just that. And these methodologies are not tuned for the LLM-generation age and, talking to lots of other devs around the world, I think it is showing.
In regards to remote work, I’ve worked for shops that have been fully remote since before the pandemic and are wonderful experiences. They’ve figured it out. The OP’s feelings on remote work, to me, say “the companies I’ve worked for are really bad at supporting remote work”, but if you believe your experiences are representative then you say “remote work is bad”.
I wonder if I'm an anomaly, or if it's actually more common that one might assume?
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 wish we'd be more open about our flaws and knowledge gaps in general. I think we'd all benefit.
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.
You can get to 100% by having tests that run the code, but have no assertions.
You can run tests that test unimportant code just as much as super critical code. There's no differential between the two. Of course super critical code should have a number of different tests that exercise it. Its not the same as testing every path, its testing different inputs and checking that you get the right results. Also see property testing.
Chasing 100% is like any metric that becomes a goal, it perverts the metric, and moves the meaning away from the metric.
Why is that? Well, we dont really want tests at all, if only people could write perfect software first time, we wouldn't need them. Stupid people!
What we want are reliable systems! So we use feedback loops between deployed systems and code to help us discover those places where we need more tests, or a different type of testing, and then we do that.
Of course if your test coverage is 0%, thats probably bad, but 100% is a non-goal.
You'll also find that if there are no tests in a system, when you need to add them, its really hard, cos its not designed in a way that makes it testable. So maybe the TDDs will help you! You end up with a system that you have high confidence in, and also is testable.. so when you find something that doesn't work how you thought, its easy to add that test right in there.
Reading what he wrote about remote work in particular is so strange to me, even though I am fully aware that I've got colleagues that seemingly mirror his views.
On this anonymous platform I feel comfortable pointing out that this isn't an artifact of remote work whatsoever.
If you weren't like this before, and only noticed yourself becoming like that... I'm afraid you've just changed. Accepting people/coworkers along with their flaws is a conscious decision you need to make. You likely just weren't able to see their shortcomings earlier in your life, likely because you haven't been negatively effected by actions like they're taking.
Let's say you have a colleague that always does as little as they can get away with. Everyone will know such a person. Eventually you get the ability to tell quickly when a person is like that. And then you will either start to see them as a negative or just accept this about them - because it doesn't make them into a bag person and you can still joke with them and learn from each other.
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.
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
Not remembering sql or details of different joins - after looking it up how much time does it take to kick back in?
I don’t remember a lot of stuff by heart but as once I worked with it I can go back rather quick, if you need it just brush it up. If you don’t need it who cares.
Polymorphism I can do stuff with it and it hurts my brain yes when I see switch statements that should be objects - but on the other hand it is much easier to understand switches or ifs for a lot of folks.
> 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.
The monolith to microservices trend was one great example of this.
This is from uncle bob. I hate the argument by people that 100% leads to "bad quality tests". Not doing it leads to bad quality code, people who don't care about quality of code, and hence dont write tests, suddenly start to care about quality of tests.
If they can get away with a query that takes 2s to return a single row, they will be quite content and will not be bothered to look at the query plan.
It's a shame, because everything could be a little better with hardly any effort.
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.
Yet when I look at the conversation itself, I cannot find anything that seems directly hostile towards them:
I do not see personal attacks from either side. I see a normal debate with some snark now and then, which is hardly unusual in online discussions. I may be missing something that happened out of view, but from what is available, the tone does not appear toxic.
It looks like a normal debate, very prolonged, but a normal debate until the author gets banned: https://lobste.rs/~7u026ne9se I don't understand why they get banned though. I see no bad interaction from either side.
A moderator rebukes the OP for starting a fight: https://lobste.rs/s/gkpmli#c_mejg0v I don't understand this either. Both sides were equally forceful in the debate. But the debate was always civil. Yet only one side receives a rebuke. The whole incident seems strange to me.
More weirdness:
A “Confessions of a Software Developer” website where devs can come in and make anonymous confessions.
I’ve been doing this for years and I still have to look up basic SQL syntax or regex patterns if I haven't used them in a month. The skill isn't memorization; it’s knowing what is possible and how to find the solution quickly.
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.
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.
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
0. anti-excellence:
0.a. slobs/jerks who didn't care about system or code entropy, or the effects of their carelessness on other developers, users, or other stakeholders
0.b. uncurious people who lacked knowledge and didn't care about learning because it was "just a job to them"
1. "competitive" egotists who sought to exert force, control, or domination of "their way" rather than collaborative experimentation
Furthermore, environments that reward impact and achievement to maximize credit for performance review seldom reward refactoring, training, or any sort of deep problem solving or presentation of tools, methodology, or experience.
> 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.
Buddy, that's either a you problem or a problem of the software culture around you.
I've thoroughly enjoyed remote work. I thoroughly hate being in the office.
In the office, I can't type out notes nearly as quickly. I can't read people's inquiries two or three times to understand what they were asking in the first place.
Why should I form an "enemy image" at the end of a video call? I don't. But in a conference room? That is easy. I can see their faces, see when they're lying or hiding something, and it only ever builds drama.
Attemps to represent ideas spatially doesn't get mutilated by online whiteboard and sticky note software. Unless you don't know how to use online whiteboard and sticky note software. You need integration, you need training to use the integration, and you need to keep focus on the topic. You need to identify the ancillary information and objects. You can do all of that online while someone else is leading or speaking. Everyone can. It's a hell of a lot harder to do that when everyone is sitting in a conference room staring at the speaker instead of typing in their computer screens.
Asking for help is only a bigger burden if your culture allows information silos. Encourage your team to speak up into a common chat room. Let anyone answer the question instead of just whoever was asked. It's easier to develop empathy and watch someone grow when everyone is given the shared burden of answering questions. It's easier to identify what processes are causing the biggest problems when everyone can see the amount of questions or frustration about it. It's harder when that information silo is real.
Remote work is way better than in-office work. If you disagree then you are a very different person than I am, and/or have very different experience than I have.
Work sucks in general. Remote work is of course not perfect, but its problems need to be compared against non-remote work problems..
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.
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”.
Remote work was total career destruction. I was working remote 2-3 days a week before 2020 because the team I was with was all over the world and so going to the local office was just kind of stupid. I knew a few people there and socialized a bit, but that was pretty much it. Then 2020 hit and I came to a whole new realization. By 2022 my career was destroyed, mainly due to anti-white, anti-male policies (Indian management took over), and generally just no way to present myself in any kind of meaningful and positive light remotely. This was a huge, Fortune 10 company, mind you.
When they began threatening to fire me for not getting the "vaccine" I was already on the way out and that was just the final insult in a long line of insults. I waited until the bonus was in the bank that year and bailed on them.
I followed up with two years of consulting that was very lucrative but also demeaning in a lot of ways and voluntarily left the biz when my wife was diagnosed with cancer mid-2024. I stayed until my contract concluded at the end of 2024 and then just didn't go onto the bench. I was burned out and the whole cancer thing was enormously stressful by itself.
The last few years of my career have been such a huge disappointment, which is why I got out even though the money was still good and actually getting better for me. At some point you just ask yourself "what the hell am I doing?"
Looking back, I can see how US corporate policy towards H1Bs and offshoring limited my options, led to lower salaries for at least 10 years, and generally did damage to domestic workers of all ethnicities. The total shitshow IT has become is a product of many years of bad choices by managerial types and the total sell-out of American workers by our political class. All that needs to stop.
I don't totally blame others, though. I have lots of shortcomings of my own that cause me nightmares still. I don't think I was ever some awesome coder, just decent. I hated a lot of the frameworks and languages I had to use--most of it is just someone's money making scheme inflicted upon the rest of us.
But you know, I rolled with it all. I never complained, I never behaved with the kind of racial bias that was directed towards me. I endured the feminists as well as any man could. I helped anyone who asked even though I knew they would step on me later if they needed to in order to get ahead. Some did, some did not.