Sigh. I’m at the point where I could honestly care less what language/library someone knows. I’ve been working through a big pile/mess that a recently departed teammate has left me to clean up. I wish I had had more bandwidth to see what was going on.
What I wish I could figure how to reliably measure when we get around to hiring a replacement:
- do they care? They don’t have to agree with my opinions. We can hammer out a compromise with enough laughs. I just want them to care. Because there’s still a lot of things that even the best protocols, procedures, and practices can’t cover.
- can they be responsible? Or have they bought into the fantasy where they offload responsibility to a “decider” while they play the role exclusively of “doer”?
- can they and will they ask questions?? To customers, to teammates, in online forums, wherever. Or does their insecure ego prevent them from feeling the fool so that they can become the wiser?
-can they be critically honest? Admit what they don’t know when debugging, avoid conclusion jumping, candidly self asses? Or do they need some form of myopia to maintain a narrative about their abilities, their contribution, their value, or the environment around them?
If I could reliably convince myself that someone scored strong in these four areas, and had rudimentary programming aptitude we could just skip the rest of these “hiring/new employee” diatribes.
A unexperienced person that cares and has the ability to learn is always better than an experienced guru who does not care and has no grain of professionalism inside them.
For me people that don't take responsibility like that ultimately have an issue with themselves: Yeah they might be wasting my time — but more than that they are wasting their own time. If they are as good as they believe they are, why do they end up in a job where they don't care? Not caring is okay, but where is the ethos of the craft? I might not care about the particular problem of a customer, but I might care about the reliability, quality, extendability, readability and performance of the code I wrote.
Caring costs energy, sure. But not caring can cost you even more, as you are wasting your life.
> I might care about the reliability, quality, extendability, readability and performance of the code I wrote.
This is a brilliant definition of professional ethos.
A further poster asks if companies pay for this. I understand that "do I get paid for it" is the question of the age, but I see that as a reflection of one of the evils of the age (every age has evils and goods).
The money you get paid is a means to an end, not an end. I feel better about myself knowing I have lived up to my standard, money cannot compensate for that.
Money gets you the respect of people who don't know you. Professionalism gets you the respect of the people who do, including the person who knows you best, yourself.
> I feel better about myself knowing I have lived up to my standard, money cannot compensate for that. Money gets you the respect of people who don't know you.
This only applies once you make enough money to be comfortable. Before that point, money directly correlates to quality of living.
Have you considered that this is just you fully internalizing capitalist/protestant propaganda? I'm asking because I agree with you and feel the same way and worried I've just learned to love big brother
I also feel the same way and believe that this is not due to internalising capitalist propaganda.
Caring about quality is above capitalism or communism. Yes, it can be exploited by any political regime and it is necessary to be aware of this exploitation, but regardless of what is the environment I feel proud of doing a great work.
I think it is because we are naturally attracted to beauty and repulsed by ugliness.
Not the parent, but of course this is something to be considered. But for me the will to deliver professional level code exists despite capitalism, not because it. Good designs, fitting elegant solutions that have positive impact on the people who have to use them are not capitalist. What is capitalist is people just churning out code without considering whether that code is reliable, makes the world a better place etc. Thinking about code quality this way is anti-capitalist, because you say: There are things that matter more than monetary capital or short term gain
There is little demand for those craftsmen that care. Company owners want their employees to be passionate about their jobs, but do they want to pay extra for the craft? No. Artists are poor in our society for a reason.
I think most companies are extremely dysfunctional with unhealthy attitudes towards their workers, but if there's one thing they do for programmers, it's pay. Even in Europe where we don't have FAANG salaries programmers are among the highest-paid craftspeople.
If you’re at a company where things are bad and you have limited ability to improve them and can’t just quit then caring about what you do just makes it all the more upsetting and difficult compared to switching off. Recovering from this and going back to being optimistic and caring is difficult.
Do you mean really care or just be good at pretending? The first thing I learned when I started working is the importance of not caring.
Caring can cause innner-team conflicts and burn out. Yes, you need to appear motivated but caring too much will just make you annoying.
Also this is more about the power of influence I get over a project. If I get real ownership and the power and tools to make decisions, yeah I am going to care, if not, not, just no. I am not wasting mental energy on things I can't change.
I will pretend to care about anything you want me to care though, if the pay is right.
Honest question: Are there things privately you care about? I take pride in parts of my work with the same emotional response as I take pride in my family. Not exactly the same magnitude, but the same emotional pathways at work. After 15 years of working I've learned to say "no", manage emotions, etc. to become at least robust in not 'caring' about office politics and such (in the emotional sense). But I do care about my work. It's the main thing I do.
Sure, there is lot's of things I care about privately. In fact I absolutely love programming languages and it took me a while to separate my excitement from my professional work.
Your family comparison is super weird. There is no love and loyalty between employer and employee. The relationship is antagonistic by nature. If I find a better job, I am out. If they don't need me, they will kick me out. They pay me the minimum amount they can get away with and try to squeeze out the maximum value. They don't care about me as a human being and they should not, that is business. (It is the job of labor laws and unions to make the interaction more humane, I don't believe in idealism.)
Of course, I still have professional pride and given the choice will try to do a good job but for me being a professional also means being emotionally detached from it. It is just business. I work for money. The meaningful stuff in my life happens outside of my employment.
"Super weird" /to you/? I just ment to underline that (for me) it's the same type of caring. I'm professional, could do the same job at a dozen employers, etc. I think we feel the same about that.
But I care about my work in a deep way that you don't seem to feel. If I manage to get a junior / medior to properly step up to a task and grow confident I feel pride, connection and sense of doing the right thing. The whole business layer comes second for me at that moment.
Another thought is that I feel that 'in Europe' (generalisation) the antagonistic nature of employment is not felt the same way especially for professional jobs. We have no firing at will. As an manager I understand that I have a multi year relationship with people that should transcend the tasks at hand. The tasks at hand should be done and done well, but a job should be both fulfilling and manageable for the individual. Even if a hiring fails somewhat you have to make it work. The current job market creates an even bigger reason to treat people well.
Are you saying people in Europe care more about their jobs?
That's certainly not my experience. I've met just as many Europeans that hate their jobs and just do it for the money. They spend as little time as possible doing them.
Well, if a given architecture doesn't allow for another solution, that might be the only implementable choice.
Remaking the core architecture to solve an obscure bug which only happens when you've got overlapping leap years and leap seconds is most certainly a bad decision.
For a simple example: Phillips hue movement detectors don't work for a very short time before new years. (My guess is that they're validating the year for the activation signal). I don't know how the bug occurs, but i can imagine several ways in which this could become unfixable if a given architecture was chosen... I still want it to work though, so I'd really like it if they'd just added something like your example.
I think it's more likely you just haven't been in a company with coworkers who write this kind of code chronically, and also opt out of any participation in architecture meetings or design reviews. Just interminable finger-pointing and stop energy any time there's some critique.
How about these implementable choices for a dirty fix:
- make lightbulbs work in these last seconds of the year 2022 and only that year
- make lightbulbs work in the last seconds of years 2023-2036 or more
This is the distinction I've been trying to make: there are sometimes powerful incentives pushing workers into the former, even if the latter could be approximately the same effort.
I was thinking more about solving it at the source vs essentially just catching the error case and overwriting the behavior.
And while the latter is definitely "code smell"/technical debt... Sometimes, there aren't really any good solutions to a given problem
There is much truth in this comment, many people don't wish to see this and are there suprised when their "nice boss or management" fires them without caring how they will support their family.
Yeah I always struggle with the “you just need to care less, you’ll be happier that way” theme.
I spend 8-10 hours on a given day exchanging my work for some revenue. That is (at least) half of my waking day. Day after day. To the tune of ~2000 hours a year. That is a massive part of one’s _life_. I think it’s reasonable to want some sort of satisfaction during at least some of those hours.
Also, I find it takes active effort to actually not care. It is not a minimum energy test state for me. I actually have to work even harder to do the job and NOT care.
If you are a programmer who doesn't care about your user, you are a terrible programmer - period.
Care about the user, programmers. Not the manager, not your fellow work competitors. The USER.
Without a USER, nothing you do has value - at all.
(Note: your manager and your fellow work competitors can be users too. Don't overlook that fact! Hopefully they care enough about the users, too, that they are willing to wear the user hat during your product development cycle. Even managers wearing users hats are users. I hope you still care even then!)
You are right in the sense that thinking from the perspective of the user is a good professional skill to have.
In practice though, you a very privileged if you get to work on any software that is not user-hostile per design. In the end of the day, programmer don't make the decisions.
If you care about the user but management prevents you from acting on it, you are hurting yourself for no reason, like agonizing over all the bad news across the nation and world. Your shoulders can't carry the whole world
You are describing not a problem with caring, but a problem with bad leadership that destroys the benefits of caring and the people who care.
Stopping caring is a coping strategy to help you extract funds (if you aren't getting good funds, leave!) from a company that refuses to let you do good work.
> Sigh. I’m at the point where I could honestly care less what language/library someone knows.
I totally agree, but with the one exception - C++. The language (and its ecosystem) is so complex that I don't see someone without experience being able to be a lead developer of a large C++ project or to be able debug non-trivial bugs in C++ code. Debugging is one of my strongest skills, I can debug code written in many languages including C but when it comes to C++ I often helpless. I don't see myself being confident in C++ without spending years to master the language.
For individuals to care, the institution (represented by leadership) needs to care too. Does it?
The decades of neoliberal dogma ingrained into management that everything should be done as cheaply as possible, and nothing else matters. To me, that is a very definition of organisational not-caring.
MBAs, in principle, cannot build a beautiful cathedral. That is lavish for its own reasons. If everybody chases money, nobody chases anything, really.
That's simply not true, you can care about your own work standards and professionalism even when others don't care about theirs. "They did it first" isn't an attractive excuse, even if they did.
You can, but then you risk burnout. We are social animals, we not only want to do the right thing, but the right thing also has to be supported by others. If it is not supported, most people will just give up.
> - do they care? They don’t have to agree with my opinions. We can hammer out a compromise with enough laughs. I just want them to care. Because there’s still a lot of things that even the best protocols, procedures, and practices can’t cover.
Are their pay and their working conditions the best that the market can offer to them?
> - can they be responsible? Or have they bought into the fantasy where they offload responsibility to a “decider” while they play the role exclusively of “doer”?
Do they have the decision power and the salary that go hand in hand with high responsibility?
I would argue that you have presented a chicken and egg problem.
As a business owner I am reluctant to offer a new entrant the best pay “that the market can offer”. Working conditions - a company can only offer the best within their means.
I know that good faith must comes from both sides, and a company has to offer something worthwile in return. Like any type of relationship, its a two way street.
But a sense of entitlement firstly, and then maybe if the company is lucky that the employee will care and take responsibility - that is a relationship one better not enter from the onset, if it can be detected ahead of time. Its just the wrong value set.
I would also add that a company that displays the same kind of entitlement towards its workers, is also not worth an employee’s further attention.
So do you regularly increase employee salaries to match their demonstrated competency and responsibility? Or are you like most employers, giving new hires better pay than your current top performers, incentivising your top performers to find a better paid job somewhere else?
tbh it's blurry in English too, because you can be abstractly "responsible" / "a responsible person" which is a general virtue, while also being "responsible for" something / "the responsible person" i.e. some formal role which should also come with compensation. But I think the former case is what travisgriggs meant, and it's also something I expect from everyone regardless of level/role/pay.
If someone's answer to "why does clicking 'Save' and then reloading not show the saved data?" is "the product requirements only said there should be a Save button, not that the data should be saved", I don't want to work with them. If you want something like this go work for a body shop, not a product-focused company - and then don't complain when you never get the interesting technical work.
I agree that everyone should feel responsible for fulfilling their part of the contract, not just in the most shallow way.
> "the product requirements only said there should be a Save button, not that the data should be saved"
If these were really the requirements, then the PO's salary should be split and go to the developers, because they would need to do that job anyway and at least do not get distracted by an incompetent PO.
You think a PO is incompetent if they hand over a mockup with a "Save" button and not a 200 page document that among every other detail says "Clicking or otherwise depressing the 'Save' button should persist the information in fields A, B, and C into the database within 500ms" or some such overspecification? We're selling ads, not sending people to the moon.
This kind of culture eventually produces the equivalent stupid formalization on the dev side like "all modules must have at least 99.85% coverage and a three-phase UML diagram review by the architecture team before deployment".
Better to have some slack and people willing to use common sense on both sides.
I think a PO is mostly useless if they do not provide a clear set of acceptance criteria. Low-effort requirement descriptions are just shifting the responsibility to the developers, because they leave too much room for interpretation. Lack of technical understanding is another common source of friction. TBH, the best PO that I worked with has a CS degree.
I agree. I'd expect a huge compensation gap between someone who types up "make a save button" when the user says "I want to save", and some who comes up with "Users wish to persist state between uses of the application, therefore we want to retain the users current balance, brightness setting..."
The former shouldn't be paid more than a front desk receptionist, and I'll keep the difference since I'll be picking up the rest of the role.
I did say "a mockup with a Save button", not "a rock with 'Save plz' carved into it thrown through the devs' office window." Yes, the PO has to care too.
I guess count yourselves lucky you've only had bad POs and not bad POs and bad developers.
I think we are talking about different complexities of projects. In a complex project in a complex environment in a team larger than 2, a mockup often does not cut it. I've seen underspecified requirements leading to misunderstandings countless times. I have never seen a situation where I thought that writing down those 5-15 acceptance criteria upfront was a waste of time. The discussions that follow when a deadline was missed because of misunderstandings feel much more like a waste of time to me.
In a simple project a mockup can be enough, but then what do you need a PO for?
Mockup is great if you are just working on the front end, but what is the save button actually supposed to do? I can figure that out, talk to the users and understand what they want to save, but I feel like that's the product owners job.
Likewise, a programmer who can only code a solution when given a spec like the latter, should only be paid as much as the help desk tech, since the PO will be picking up the rest of the role.
I can get a receptionist to type "make a save button" into a jira ticket when the customer asks for it (that's more than some PO's I've had have done, some would just copy and paste the email from the customer into the ticket providing no additional context or clarification), can you get a help desk person to build the app?
The absolute worst PO I ever worked with had a CS degree, and kept asking stuff like "why aren't you using MVC" and specifying technical details that wouldn't work rather than a product vision.
Deep technical knowledge can help a PO, especially in technical products, but it should not be influencing how they present to the dev team. Otherwise they're just another even-less-accountable architecture astronaut.
> I’ve been working through a big pile/mess that a recently departed teammate has left me to clean up.
I’ve heard some version of this statement for years.
I feel that it is an almost guaranteed result of today’s “mayfly tenure” pattern. With the entire industry and engineering career structure, based around (and rewarding) tenures of two years or less, there’s almost no incentive for engineers to leave a legacy.
Instead, “quick fixes,” and “buzzword bingo” work is rewarded.
Who cares if it goes pear-shaped when the next OS comes out? I won’t be around to clean up the mess.
I’ve spent my career, maintaining my own code, and have learned to leave a legacy[0].
I was just working yesterday, on a new fix release, of an app that has a provenance that goes back ten years (Through two different codebase pivots)[1]. I walk through its history, in this comment[2].
I’ve learned that it’s not a good idea (for me, at least), to be saying “you guys are doing it wrong, and here’s what’s wrong with your approach.” That type of thing tends to get lots of clicks and upvotes. Internet rants go viral, hereabouts, on a regular basis.
Instead, I have learned to say “This is my approach, with the results, and here’s links to the proofs, in my own work.”
When I make general statements, I tend to qualify them with “I feel as if…”, or “It is my opinion that…”, or “In my experience…”, etc.
As you have demonstrated, it often results in downvotes (I suppose, because it is perceived as “arrogance”), but I won’t engage in poo-throwing.
The Internet is already bad enough, without my contribution. In The Days of Yore, I was a highly effective troll, and I have some atonement to perform.
Actually, it doesn't. I'm pretty sure HN links are nofollow. I don't care. I don't do it for SEO, and I'm not looking for work.
I have been linking to my work for as long as I've been posting, here, and will continue to do so, for as long as I participate.
You will also note that I am not anonymous. I make it very easy to find out who I am. You could probably easily find my home address and phone number, from what I post.
Helps me to be accountable for what I write. I spent my entire career, being highly accountable. I feel that it helps me to build my character.
I don't care whether or not I'm some kind of "Internet essay star" (Spoiler alert: I'm not). I write what I write, for my own good, and so that anyone that is interested in finding out more about me, can do so.
I've been at this stuff for a long time. I also spent almost 27 years at one of the most anal corporations on Earth, so my work has a lot of polish. It has nothing to do with trying to be "better than" anyone else. It's just the way I am. I feel it's pretty good.
I've certainly encountered worse. When I do, I take it as a lesson, and don't get too bogged down in nursing a grudge. I also regularly encounter better, and I like to take that as inspiration.
Additionally, 27 years at a Japanese corporation taught me to back up what I say. If I say "I do this," then I'd damn well better be able to prove it; which is a big reason that I keep linking to my work. One advantage of being old in the game, is that I have a lot of track record that I can reference.
I like working with people. I always have. I'm a decent chap. I want to be a contributor to the world. I know that writing positive, contributory stuff is a bit quixotic, but, that's me; tilting at windmills. I won't add to the negativity; even if I can't singlehandedly make things more positive.
I'm retired. I have no interest, whatsoever in ever working for anyone again. I'm not interested in selling a brand. I work for free, for folks that can't afford the kind of talent I have. Whether or not some random, anonymous Internet dude loves me, is of little concern.
Listen, this is the second time (that I know of) that you've insulted me, and I don't remember ever attacking you (or anyone else, here, for that matter) out of the blue.
Would you like to try resetting the relationship? You'll find that I'm actually a kind, generous person, with a very positive outlook on life, and a true desire to Bring Light.
I'm really, really good at some stuff, and really, really bad, at other stuff. I don't hide either.
As an employee, I don't know why I would want to be any of those things, as I am just going to jump to another company the next year as I did not get a raise.
This career is mostly leetcode with a year of cooldown time doing enough passable work to not get terminated. I completely get why employees do not care and are happy to let bad decisions by others go unchallenged.
There is a bug at my job that is costing my company several hundred a day. I could fix it or I could just ignore it and avoid having to write a ticket, deal with feedback, and generally having to speak.
I think the responses are telling, nobody presenting any convincing arguments. For some reason nerds are very unwilling to acknowledge status, power politics, wealth disparity. Maybe they're just all temporarily embarrassed unicorn startup billionaires?
> I am just going to jump to another company the next year as I did not get a raise.
Why would anyone give you a raise if you work with this mindset? People get raises and promotions. If you don't, the responsibility for such situation is very likely at your side.
A raise is not a reward. It is the baseline expectation in a high demand industry.
I can get the raise/promotion for doing little besides interview prep. If you cannot beat the effort to raise ratio, the optimal strategy for me is to do a mediocre job.
What I find fulfilling doesn't pay anywhere near as much as corporate SaaS. I am sure some are passionate about corporate digital security, but very few.
Does the company praise programmer A whose programs run without error, or programmer B whose code crashes in production at night, but the 'hero' (B) is coming in at midnight and fixes it?
A lot of management will praise B (good job, you saved our a..); creating a very very wrong perception.
For ANY JOB this is ALL that matters. Languages/Tools/Frameworks etc. can all be learned as needed. But if you don't have the above character traits nothing can be done. This is also known as having a good attitude. Companies abysmally fail at identifying and nurturing these traits. They go after the secondary noise (easily measured irrelevant parameters) rather than the primary signal (nebulous and hard to measure).
I believe every HR department should be staffed/supported by psychologists from CBT and ABA domains to really nurture their people.
In interviews I usually just ask developers to show me some code (any code) and ask them random questions about it. I’ll ask them what libraries they use and why, or why they wrote some piece of code the way it is, or why did they or didn’t test certain pieces of code.
Their answer will usually show their (reasoning) skill and whether they care. Talking and reasoning about code is an important skill for a developer for me, so that’s what I’ll focus the interview on.
I don’t care whether the library is a good or bad choice. I don’t care about the code itself or whether it’s good or bad. I just want to know if they can tell me why it is the way it is.
> can they be responsible? Or have they bought into the fantasy where they offload responsibility to a “decider” while they play the role exclusively of “doer”?
I do want to care but decisions feel remote even when you ask or provide feedback and it's overlooked only for it to come back later that what you had suggested was plausible and is being done only a few months late when you've already implemented an RMQ integration that was possibly avoidable.
It's demoralizing when your company starts moving in the direction of bug resolution is simple of a legacy system whose original authors are no longer with the company and you need to be pushing out 10 JIRA tickets in two weeks. Clearly trying to turn the engineers into code monkeys how am I supposed to care in this environment?
> If I could reliably convince myself that someone scored strong in these four areas, and had rudimentary programming aptitude we could just skip the rest of these “hiring/new employee” diatribes.
The best way I've found to identify these people is to look for people in existing jobs which require such skills, who now want to move into development. That can be any field where there's similar personal demands to achieve a high level of skill, whether that's technical-related (civil engineer) or not (cook, musician, sport).
These people are also often overlooked by traditional hiring processes so if you can get a process in place to find them, it's a huge competitive advantage when you can't offer FAANG salaries or on-site barbers.
I think this is the main property of seniority, with seniority comes a bit of self-assurance and not really caring if someone thinks you're a fool for not knowing what X is when you know what A - W is.
If I could add one bullet point to that list it would be:
- do they document their thought process behind non-obvious choices in comments?
My code is usually peppered with links to SO, explanations of why I'm doing this or that. You never know, the next maintenance programmer to touch that code might be me. I'd like to know what I was thinking when putting that heap together.
What's very funny to me, is that I can easily imagine every person I've ever worked with writing this same list, and also thinking of themselves as ranking highly. In fact, I think this list mostly boils down to "Do I like this person?". But that might be the most important question of all.
For me, that's number one. Often, really smart programmers are really terrible at communicating about what they're working on. They get into Lone Ranger cowboy mode and write tons of code without telling anyone what they're doing. They may get a lot done on their own, but it makes them nearly impossible to work with as colleagues. If I had to choose between a coworker who wasn't very good at coding and a coworker who wasn't very good at communicating, I'd gladly choose the one who isn't very good at coding.
I'm sympathetic to this perspective, but the other side of this is that the most enjoyable time in my job is headphones on listening to music in a flow state. I've been accused of being a lone wolf on projects. It comes from the selfish place that it's simply more enjoyable. Architecture conversations and code reviews can be fun, but collaborating on a project I could do myself (and especially pairing) often makes my job less enjoyable.
can they be responsible? Or have they bought into the fantasy where they offload responsibility to a “decider” while they play the role exclusively of “doer”?
You just scratched my itch with it.
If you are responsible, but nobody cares to fill you up on project details and latest decisions and news, you can’t make your own decisions, because decisions have to be made in line with something, not in a vacuum. They come naturally if you are aware of the situation, and do not if you aren’t. Constant info starvation leads to this behavior even in those who are fully responsible and autonomous otherwise.
Our management does that a lot. They [re]decide or [re]plan something, sprinkle few-worded contradicting tasks around, as if everyone was in course, and then get too busy to answer. So the whole day turns into an investigation because nobody can decide nothing. This “effective” management saves minutes of explanation for days of doing complete garbage and then brags on what an “effective” team we are at corporate events, while literally everybody sits smiling out of subordination having no clue what the fuck they are babbling about. (It’s not just my guess, I’ve talked to them all.)
Not claiming that you’re a boss who demands to run a business for you blindfolded. But since you’re making a list, please make sure you’re talking about truly indecisive guys and not the lack of communication.
What I wish I could figure how to reliably measure when we get around to hiring a replacement:
- do they care? They don’t have to agree with my opinions. We can hammer out a compromise with enough laughs. I just want them to care. Because there’s still a lot of things that even the best protocols, procedures, and practices can’t cover.
- can they be responsible? Or have they bought into the fantasy where they offload responsibility to a “decider” while they play the role exclusively of “doer”?
- can they and will they ask questions?? To customers, to teammates, in online forums, wherever. Or does their insecure ego prevent them from feeling the fool so that they can become the wiser?
-can they be critically honest? Admit what they don’t know when debugging, avoid conclusion jumping, candidly self asses? Or do they need some form of myopia to maintain a narrative about their abilities, their contribution, their value, or the environment around them?
If I could reliably convince myself that someone scored strong in these four areas, and had rudimentary programming aptitude we could just skip the rest of these “hiring/new employee” diatribes.