Confessions of a Software Developer: No More Self-Censorship
68 comments
·November 28, 2025jsight
atomicnumber3
Yeah. Random example: I have better "ambient awareness" remotely because with slack I am in every hallway simultaneously, and can skim the conversations and set up highlight words
Kerrick
I wonder how much of that comes down to culture. Since going remote I have come to wonder if a direct-message-first chat culture is harmful to collaboration.
Kerrick
> 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 couldn't agree more. I pushed to get the place I worked for to use Slack when it first launched, moving us off AIM (ha!). Our use of Slack when we shared an office in the twenty-teens was so much better than the use I've seen of Slack/competitors on fully-remote teams.
I wonder if it's because the failure mode was, as you said, to "drop by." Now the failure mode is... just failure.
cogman10
I can't speak for everyone, but I'd say that I've noticed that younger devs simply do not chat.
My team rooms are pretty dead. I'll send stuff there but by and large the team simply doesn't use chat functions.
layer8
Electronic chat is really not the same as face-to-face communication. Neither are video calls.
sodapopcan
For me, electronic chat is better most of the time.
layer8
Everyone is different. I vastly prefer email over chat, but also wouldn't want to live without the occasional face-to-face.
AlotOfReading
Of course it's not the same, that's the point. I personally prefer the async, chat based mediums I've used since I was a child. Some of my coworkers have disabilities that make conversational typing difficult and prefer video calls as a result.
Consider the effort to accommodate those preferences though. Accommodating a video call preference is easy. Same for chat. Accommodating a preference for face-to-face requires spending an hour (2x average US commute) traveling to meet you. That's quite a significant ask of the other person.
seneca
> 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.
This is sort of the point. Remote tools work great when you have spent a lot of time building relationships and rapport with the people involved. That's hard to do in professional settings, and extremely hard to do in remote professional settings.
Letting teams that know each other well work remotely works great. Building teams remotely is very hard.
I'm a diehard for remote work, but we have to be realistic abouts limitations.
fHr
now we do the work of 7 projects in half a team paid 50% less and can't get to help anyone as we all drown in 7 tickets we should do in parallel with agents writing docu on the side and assist and some of the easier code on the side because management drank the koolaid of going full into AI and "the Team now can do 300% more right". I miss the old times where making 100k and still could have few minutes to help each other and now we're in this hypercapitalistic garbage AI age were we have to just output, output, output and fuck quality and else they lay you off and get the next guy from wherever.
crystal_revenge
> 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.
Kerrick
I am indeed learning, working to close those gaps.
For automated testing, I'm in the middle of reading Developer Testing by Alexander Tarlinder, with xUnit Test Patterns by Gerard Meszaros coming close behind. I'm also working through Test-Driven Development: By Example with my wife as we have time.
For SQL, I read Grokking Relational Database Design by Qiang Hao last winter, and I started SQL Queries for Mere Mortals by John Viescas this week. Sadly, my flub with "left inner join" was not a joke.
For OOP, I've been on a whirlwind tour: OOA&D With Applications by Booch et al., Object Thinking by David West, POODR and 99 Bottles of OOP by Sandi Metz, Domain-Driven Design by Eric Evans, IDDD and DDDD by Vaughn Vernon, and Design Patterns in Ruby by Russ Olsen, Clean Architecture by Robert C. Martin, and Smalltalk Best Practice Patterns by Kent Beck. Still on the docket are Design Patterns by the Gang of Four, PoEAA by Martin Fowler, Smalltalk, Objects, and Design by Chamond Liu, and Object Design by Rebecca Wirfs-Brock.
> confessing that you don't know something and gleefully stopping there is not much better [...] we shouldn't let shamelessness about what we don't know limit us either
I promise you, this was not gleeful and this was not shameless. Shame and fear affected me for months on these issues. And I'm not stopping there... From the end of the article: "I’m going to continue to work on skill building, but now I feel free to write about it. If [...] you’d like to help me fill [my knowledge gaps], [...]"
> 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
A high standard of writing, maybe. But plenty of great stories come from those who are striving for a high standard, not just those already in the upper echelon. It's what makes this place different from academic journals.
null
crystal_revenge
This is great to hear and I do appreciate the clarification. Having put lots of content out in public myself (though this account is intentionally pseudonymous) I know it's also equally difficult to comment on content like this without being on either end of the "asshole" <-> "awesome!" spectrum, and sincerely hope my comment to not fall to close the the first part.
el_benhameen
Not exactly your main point, but where’d you go to learn calculus? I did the usual classes in high school but none since, and I’d love to develop a better appreciation for it.
ccapitalK
I find 3blue1brown to be a great resource to build up good intuition about math topics, his videos about calculus and linear algebra are wonderful in particular. https://www.youtube.com/playlist?list=PLZHQObOWTQDMsr9K-rj53... is his essence of calculus series, I found the visualizations made it a lot easier to grok.
zlarin
Check out Mosaic Calculus and see what you think: https://www.mosaic-web.org/MOSAIC-Calculus/. It's a free resource and it takes an interesting perspective on calculus pedagogy.
cogman10
I got mine doing a computer engineering degree.
My suggestion is using Khan Academy if you want to better your math knowledge. It's really quiet good for that sort of thing. It was just starting to take off when I finished my degree. I wish it was available before then.
jihadjihad
Calculus for Dummies is surprisingly not bad.
kens
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.
kbelder
So many things like that!
I don't know if I could tell you with confidence the proper way to get a string length in any language. Is it a global function or an object method or property? Is it length or count or size? I have to look it up or rely on intellisense every time. I do too much bouncing between languages.
Well, I know it in BASIC. Len().
vunderba
I’ve spent so much time in both the .NET and JS worlds that I can't even begin to count how many times I’ve typed `Where` when I meant `filter` or vice versa.
the__alchemist
In python, it's trivial:
def main(): # code
The dunder syntax you see around isn't required.
vjvjvjvjghv
I set up some .NET services years ago. Since then it was just adding new stuff. If I was asked how to set up another service, I would have no idea how to do it
stavros
What, `def main():`? Or do you mean the __name__ == "__main__" thing for distinguishing whether the code was imported?
kens
I can successfully type "def main()" and not "function main()", unless I'm switching between JavaScript and Python and forget which language I'm in :-). It's the if statement with all the underscores that I need to check every time.
mulquin
Continuing the confessions: I do php.net/<function_name> at least twice a day
1718627440
Is that a bad thing? I also call man <libc function> several times per day, most times I think I already know the calling semantics, but there is always some nitpick about the calling semantics or a bug description, that I didn't had in mind.
nicoburns
It's the main benefit of Rust ;)
(obviously it's not but it is super nice that main in Rust is just:)
fn main() {
}NikxDa
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.
sodapopcan
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.
roenxi
All the confessions are highly subjective. If someone tried a refactor like the one at https://refactoring.com/catalog/replaceConditionalWithPolymo... there is a decent chance it should get picked up and reverted on code review.
Taking a switch statement and spreading it out over 3x classes is not a general improvement, it is very context specific. It makes the code difficult to navigate because what used to all be in one spot and easy to read is now spread out who-knows-where and there might be a special case lurking somewhere.
Kerrick
I suppose I included the last section as a "confession" because I spent years pre-pandemic wishing I could go remote, talking loudly about how open office spaces were bad, etc. That, plus it's embarrassing to admit that I dislike remote work even though I am a remote worker. And not just a remote worker, but an enfranchised remote worker living 3 hours away from the nearest city with an international airport. I made the mistake of rebuilding my life around remote work before I had experienced it long-term.
anonymous908213
Awfully nice, isn't it? You get all the privileges of being a remote worker, while "confessing" that remote work sucks to upper management who read your blog, giving them justification to deny other people the same opportunity you have. If you genuinely believe remote work sucks, you should own up to it, sell your property, and move to a city rather than reaping the benefits of it to the extent of your entire life being dependent on it while talking about how bad it is. The fact that you haven't done that indicates to me that you actually quite enjoy the benefits more than you suffer the drawbacks, but aren't acknowledging it, instead choosing to denigrate remote work for having any drawbacks at all.
Trasmatta
> 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
SpecialistK
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)
striking
I was as curious as you were. Turns out there are only so many popular threaded discussion sites in the vein of HN on the Internet, so an educated guess is all it takes.
Without making judgment on the actions of any involved party, I do wonder why the author would choose to bring up this incident and submit it as part of a story to a site where there is a significant overlap in readership.
Kerrick
That incident catalyzed the fear that suppressed my desire to participate online for months. I figured that if I couldn't talk about it now, I might never participate again.
javawizard
Good on you.
Honestly, if there's any chance the content they posted on your profile before locking you out comes close to defamation, I'd consider talking to a lawyer about it. It could be that getting one to send them a cease-and-desist letter on your behalf could take care of the problem.
javawizard
Well that sucks. It's exactly the site that comes to mind when I think "most popular alternative to HN".
I've generally found conversation there to be more respectful than HN, rather than less, when discussions get heated - so I had high hopes it would be a different site, but alas.
This leaves a really bad taste in my mouth.
Edit: you know what, screw it. In the spirit of "no more self censorship", here's the link: https://lobste.rs/~7u026ne9se
anonymous908213
I don't find the conversation to be especially disrespectful. The people in the thread in question attempted to shame him. Shame is a social measure to coerce people who are behaving contrary to society's expectations to change their behaviour. However, while shaming him, they did not especially resort to childish name-calling or ad hominem. They reasoned with him extensively as to why his behaviour was deeply undesirable. He went so far as confessing that he did not even know the language the PR he submitted was in, yet intentionally withheld information about the provenance of the code. Sometimes the shame mechanism is misused for things that should not be shamed, but this seems like a clear case of shameful behaviour that deserves social repercussion.
Sadly, it seems like nothing was learned, since he settles only for diminishing his culpability in anti-social behaviour. He goes so far as to describe, in his blog post, his code as an "AI-assisted patch". When you profess that you don't even know the language of the code that the LLM generated, there is no "assistance" about it, you're at the deepest end of vibe coding. And in submitting it to an open-source project, you're making a maintainer spend more time and effort reviewing it than you did writing it, which is not sustainable. Moreover, if the maintainer wanted a pure-LLM-generated solution, there was nothing stopping them from hopping over and typing in a prompt themselves.
tommica
I need to figure out how to be as open as the author is - it comes across as fricking amazing!
rolandog
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.
null
felipelalli
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.
vunderba
Probably already a subreddit for it like r/programminghorror.
layer8
It would attract the humble-braggers. ;)
akoboldfrying
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.
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.