This was not in a public interface, this was in variable names.
Ignoring that every word in programming is in US English: color, gray, program.
We were deadlocked for weeks, with him refusing to ship working code that fulfilled the business goals over this single issue. Quitting resolved the deadlock, and I learned afterwards that he really did go through the work and change it all to "dialogue".
I spelled it in consistency with everything else in the source code at that time... US English. It was a British company, and I understood that the UI should be UK English, but did not comprehend/believe that variables should be too. Especially as one can't force CSS to stop calling it color.
Particularly given that it's a UK company, the request may be arguably wrong, but it's at least semi-reasonable. Why make such a huge deal over it from either side?
Software engineers are a stubborn bunch. It's kind of necessary given the nature of programming. However, if promoted to an architect, stubbornness is a real problem, with little to no upside.
Architects will usually stick mostly to design and not do a lot of debugging. So that stubbornness is not useful. But it sure can rear its ugly head when it comes to pointless conflicts like this one. And the problem is, all the junior developers are also stubborn.
Welcome to software development. What you want in in a software architect is primarily a diplomat. Not someone who is stubborn.
If there's a disagreement that can't be resolved between the two of them, the architect is the one whose stubbornness I value more. You have managers to be diplomats. You have technical leadership to say, "they pay me more than you because they trust my judgment more than yours. I've heard your argument; I found it not compelling enough to overrule my own experience and judgment, and the decision has been made."
Ideally you have more than one such person to help surface the cases where the architect was wrong, but if you're routinely treating them as though they're no more reliable than junior developers, why are you paying them so much?
I would have done the same thing. If someone is hanging your job over your head over spelling in source code, then the issue is no longer about spelling in source code. It's about dick wagging.
Actually... It's (jokingly) possible :)
What was _your_ reasoning for losing a job over a completely semantic argument?
Did the illogicality of it all really irk you so much that you couldn't stand to change it? What do you mean by saying that you couldn't 'comprehend' why variables should be written in UK English? It seems pretty clear that they should be in UK English because that's what you were told to write them in... at your job...
If this happened as described then I would have loved to be a coworker watching this hilariously petty feud unfold.
I wanted a reasonable work environment that was delivering product to the customers, for the business.
The work in question was 20k lines and involved the whole stack. As it bled into web page stuff that actually had calls to browser open "dialog" commands, no find and replace was going to safely work to now make it comply with the clarification on the coding standards (UK English var names). We would spend weeks changing it and re-testing, weeks in which we were not delivering it.
I felt we were no longer working for either the customer or business, when we were willing to hold back an improvement that would immediately create revenue, for a petty argument.
It wasn't the first time I'd seen this architect do that to others, but I never thought it would happen to me so long as the product was good, the code was good, deadlines were met.
I was no longer convinced it was possible to create work that wouldn't fall foul of some rule or other. And the architect had managed to position himself on the org structure outside of a chain of command, so there was no-one to appeal to.
There are too many good jobs, and good companies, that want to ship product to their customers and build a great business to even consider staying somewhere that doesn't.
It was a very easy decision.
I still would like to see someone that ridiculous operate... Sounds like the most incompetent architect/engineer I have ever heard of.
Sorry for the snark fellow human.
You can get pretty close :)
I don't understand how these guys were "deadlocked" for weeks.
So, the traditional CTRL+F, or :%s/dialog/dialogue/g would have resulted in at least some instances of 'dialoguegue' as a result. Yeah, the obvious remedy there is :%s/guegue/gue/g, but that too could lead to unintended results, etc.
Not that I don't agree with the intent of your statement, search and replace across 20k lines of code, over however many files, is likely a more involved process than it sounds like.
Or use variable renaming in an IDE that actually parses the code.
dialog\>
...in other regex systems: dialog\b
"dialog" as part of a variable name with underscores: :%s/dialog_/dialogue_/g
"dialog" as part of a variable name with CamelCase: :%s/\([dD]\)ialog\([A-Z][A-z]*\)/\1ialogue\2/g
You don't need to capture every case in a single regex substitution, you can use a handful to cover pretty much every case though. This sort of change should not take more than a few minutes max of developer time.I don't have experience with them, but I imagine an IDE with refactoring support should make these sort of changes trivial.
Quitting because of that is just stupid. In my company CS rules are almost opposite to my preferences (and to common style for that language community of course). I use every opportunity to grumble about it, but it would be much worse if everybody (me included) shaped the code based on personal preferences, not style guide.
Edit: not to imply a reason for the noted situation, just an example to lend some credence/reasoning elsewhere
And yet architects usually originate from promoted engineers. And that means they are stubborn, and the result is all kinds pointless conflicts with all the other developers.
Technical Architecture should be about making the right set of trade offs given the business goals of the system being developed. That involves spending a lot of time talking to people both inside and outside of dev team about what the goals are and how the decisions that devs are making are impacting everyone else in the company. That stuff is time consuming, but if there's any time left you should really be keeping up with the latest frameworks and tools.
If you're spending your time reviewing commits and enforcing coding standards, you're doing it wrong.
The parochialism of the wannabe "hacker" (entreprenerd) here used to be cute.
If any of these people has a disagreement with a co-worker over the co-worker's changes, it's their duty as a fellow employee to explain to the co-worker why they disagree, or at least explain to the manager why they disagree with the change, so that the manager can explain it to the co-worker. But just making the change and then threatening to quit... that is most definitely crazy.
> No, they are crazy.
That may be.
> Reverting someone else's changes without explaining why is crazy.
Not necessarily. There are times when you are so wrong you aren't even wrong.
> If any of these people has a disagreement with a co-worker over the co-worker's changes, it's their duty as a fellow employee to explain to the co-worker why they disagree, or at least explain to the manager why they disagree with the change, so that the manager can explain it to the co-worker.
Let's imagine a scenario where they had done this, and yet nothing had corrected the problem. At that point, it would be quite reasonable to revert someone's changes without explaining why, and threatening to quit if one wasn't allowed to.
Those are pretty big flags that you screwed up.
The person making the threat felt they were immune from backlash, but they were threatened by where I was working in the code base because they lacked the expertise to compete on a technical level. What I found even more interesting was that our mutual manager felt that his position was an even more tenuous political position so he wasn't going to do anything he wasn't told to do by someone above him in the chain of command.
If someone working for me threatens to quit, I first ask them if their issue can be resolved rationally, and if it can't I ask them when will their last day be. But that is because even if my boss then comes to me and says "You told this guy who is friends with <important person> to quit? Your fired!" I am totally ok with that. Not everyone is.
To look at the flip side though as to whether I screwed up or not, I'm reasonably self aware enough to know when I do. And prior to this incident going 'nuclear', as it did, I had come at it from several different directions to try to eliminate bias. Every third party consulted felt my reasoning was pretty sound. But we all know that being "right" doesn't mean you get what you want in a politicized environment. Just ask the Ukrainians living in Crimea, life is what it is. We move past it.
I had assumed as much. Sun seemed to be very political except for a very few areas; I avoided it for that exact reason.
It's always a hard lesson for a junior person to realize that politics exists. I had my introduction to that at a very big company in a very hard way.
And yet it happens everywhere. The question is what narratives can be told about it more than what actually happened.
Wait, they're a ruby shop, they don't even believe in letting the compiler help you avoid making basic mistakes. dons flame-retardant suit