I deliberately omit C# from my resume because while the language is fine, the kind of programs C# programmers tend to write are an AbstractAggravationFactoryPattern of misery.
This posting is extreme but any time I'm interviewing a Java/C# programmer I'm definitely watching to see if they've been brain damaged by the horrible aesthetics and loopy engineering cultures that those languages seem to have for whatever reason
While this was certainly true for C# that was written a decade ago, that is no longer the case with frameworks like .NET Core. Hate it all you want, but no other language does async/await as well as C#. Its ubiquitous in C# unlike all other languages out there. It's surprisingly easy and concise to write but doesn't come with the performance penalty associated with languages like Python. It also runs without any hiccups on Linux now. The only thing that seems to work against it, is it's reputation.
I work in a primarily C# shop. I am often quite annoyed at some of coworkers code due to it being what I feel is needlessly over abstracted. I don't know if it's my lack of experience with this style of code, or perhaps I don't know the concept of OOP as well as I should. But it is quite aggravating.
Most of my experience is in C++ and C#. I adore C#... but I agree: it’s as though developers have difficulty getting to the task at hand when using it.
Maybe it’s because attempting even simple abstractions in C++ can foot-gun yourself in some esoteric way? In comparison, the cost to build unnecessary abstractions is lower in C# so many live on.
I can't help but feel that this job posting subtly reveals deep-seated ageism in the industry already knee-deep in fashioning and championing latest tech regardless of its merits when in reality these decisions and choices are rooted in tech-bros feeling inadequate and insecure, which also kind of exposes the reason behind a blatant lack of respect for what came before because being a thought-leader is a path way to being a 10x eng-influencer or something.
Not sure you can reach for ageism as the answer when "node" and "Ruby" are on that list. Over the past 5 years those have been two of the hottest bootcamp languages churning out resumes with those keywords on them. I'm shocked to see it, but I would say its more likely they are targeting bootcamp grads than older developers.
Dear god why? They're a fin-tech company for God's sake. It's just a database, and a damn good one at that. Sure it's not trendy like Postgres, but the founders will be in for a shock when they scare off big bank they're trying to sell themselves to, because the bank's CTO won't have any clue what the hell DynamoDB is.
I get that they want to avoid code monkeys who've been stagnating in a big bank writing P/SQL reporting software for the last 5 years. But that's why you read CVs. Obviously you need to holistically look at each candidate.
I work at a startup that uses Oracle just for that reason; banks care about that kind of stuff. Auditors will ask basic questions like, "is their data consistent". If the tech team gives the auditors a spaghetti diagram of how their data might be eventually consistent, they'll face an uphill battle being acquired.
At my current job I'm doing solely Java with vanilla JS to maintain a google maps like product. Heavy stuff. But this year, I also did about 10 hours of Wordpress because our website is on Wordpress and the guy who programmed it barely responded to finish some stuff. And I wrote a Wordpress plugin 10 years ago so I had some experience.
F' me, no? Time to throw my CV in the bin amirite?
"The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense."
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
- Edsger W. Dijkstra
Maybe php and node are the cobol and basic of our generation?
Or maybe even people who have made ungodly contributions to the science of computing (Dikstra, not the Twitter Twat) aren’t immune to being full of shit from time to time also?
COBOL is from a different time and family of what we ( mainstream ) understand today as "programing languages". How many "crimes" are committed today writing business rules in Java or C#, etc?
Dijkstra's statement, like anything else has a time and context and I hope something solid from the COBOL family existed today.
I cant speak to ASP and PHP. I've programmed .NET in Mono a little, back on the Aurora OpenSim client (emphasize a little). I can see that reaction to .NET, I had the same reaction to folks who liked DCOM.
Node and Ruby can be used to create pragmatic programs though, but those are typically created by programmers that came to those language from other, more typed, languages. Once you have three or more languages under your belt you start to look for and find each language's pitfalls and architecture astronautics - every language has them. Every language shapes the mind of someone who learns, none more so than the first language you learn. Some anti-idiom pitfalls are found in multiple languages: monkey patching, everything exposed as getters/setters rather than exposing the behavior, AbstractFactoryServiceClientFactory, etc.
However, I don't consider abstraction a dirty word. It has its place, if not overused. I try though to use what I call the 2-4 principle.
I have either 2 levels of abstraction (interface-implementation), or 3 (Abstract, Logical, Concrete) or 4 (Abstract, Logical, Concrete, Functional), and no more. I also try to use the lowest number of levels that makes sense. The You Ain't Going To Need It (YAGNI) principle goes hand in hand with this. I will go back and look at old code to see what I could have done better. Where I've gone wrong with abstraction is usually due to premature anticipation of future architecture.
I have carefully avoided VB, VBScript, Bash, Perl, JavaScript, and Python. I used to do C/C++ but now refuse to touch either.
If it's trivial, I'll just use PowerShell. If C# isn't fast enough, I can always use Rust. If Rust or C# don't have some library I need, Java probably does. If I want something abstract, I'll get around to learning F# or just roll up my sleeves and get back into Haskell. Worst case, if I need to throw the kitchen sink at a problem I'll get back into writing substantive code in Mathematica.
If your candidate mentions a certain technology that is awful it is hard to not think it's an awful candidate. Especially if this is not central to the problem at hand.
Yes, CVs mentioning ClearCase go to the bottom of my pile
Mentioning CMMI, SAFe, ITIL or other acronym made to take money out of clueless managers also are heavy clues that you'd be not a good fit.
I got started in Ruby by following “Rails Tutorial”. Back then I was a bit arrogant about it and parroted a bunch the DHH bunk.
My charitable reading is they are looking for someone who sees the language as a framework around the OS.
That’s the kind of programmer I feel like I am now. It comes more than anything from learning Objective-C where the fact that the language is a construct is obvious once you encounter an `objc_msgSend()` alongside a [myString uppercaseString]; (or any other message send.)
[+] [-] CoolGuySteve|5 years ago|reply
This posting is extreme but any time I'm interviewing a Java/C# programmer I'm definitely watching to see if they've been brain damaged by the horrible aesthetics and loopy engineering cultures that those languages seem to have for whatever reason
[+] [-] me551ah|5 years ago|reply
[+] [-] ixwt|5 years ago|reply
[+] [-] hk1337|5 years ago|reply
[+] [-] tyleo|5 years ago|reply
Maybe it’s because attempting even simple abstractions in C++ can foot-gun yourself in some esoteric way? In comparison, the cost to build unnecessary abstractions is lower in C# so many live on.
[+] [-] dgellow|5 years ago|reply
[+] [-] ignoramous|5 years ago|reply
[+] [-] labatyd|5 years ago|reply
[+] [-] sonthonax|5 years ago|reply
Dear god why? They're a fin-tech company for God's sake. It's just a database, and a damn good one at that. Sure it's not trendy like Postgres, but the founders will be in for a shock when they scare off big bank they're trying to sell themselves to, because the bank's CTO won't have any clue what the hell DynamoDB is.
I get that they want to avoid code monkeys who've been stagnating in a big bank writing P/SQL reporting software for the last 5 years. But that's why you read CVs. Obviously you need to holistically look at each candidate.
[+] [-] sonthonax|5 years ago|reply
[+] [-] PedroBatista|5 years ago|reply
At this point most people don't even care, just chuckle.
[+] [-] jack_riminton|5 years ago|reply
[+] [-] kioleanu|5 years ago|reply
F' me, no? Time to throw my CV in the bin amirite?
[+] [-] PedroBatista|5 years ago|reply
[+] [-] 1ris|5 years ago|reply
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
- Edsger W. Dijkstra
Maybe php and node are the cobol and basic of our generation?
[+] [-] Hamuko|5 years ago|reply
[+] [-] dogma1138|5 years ago|reply
[+] [-] PedroBatista|5 years ago|reply
COBOL is from a different time and family of what we ( mainstream ) understand today as "programing languages". How many "crimes" are committed today writing business rules in Java or C#, etc?
Dijkstra's statement, like anything else has a time and context and I hope something solid from the COBOL family existed today.
[+] [-] Communitivity|5 years ago|reply
Node and Ruby can be used to create pragmatic programs though, but those are typically created by programmers that came to those language from other, more typed, languages. Once you have three or more languages under your belt you start to look for and find each language's pitfalls and architecture astronautics - every language has them. Every language shapes the mind of someone who learns, none more so than the first language you learn. Some anti-idiom pitfalls are found in multiple languages: monkey patching, everything exposed as getters/setters rather than exposing the behavior, AbstractFactoryServiceClientFactory, etc.
However, I don't consider abstraction a dirty word. It has its place, if not overused. I try though to use what I call the 2-4 principle.
I have either 2 levels of abstraction (interface-implementation), or 3 (Abstract, Logical, Concrete) or 4 (Abstract, Logical, Concrete, Functional), and no more. I also try to use the lowest number of levels that makes sense. The You Ain't Going To Need It (YAGNI) principle goes hand in hand with this. I will go back and look at old code to see what I could have done better. Where I've gone wrong with abstraction is usually due to premature anticipation of future architecture.
[+] [-] caseymarquis|5 years ago|reply
[+] [-] jiggawatts|5 years ago|reply
If it's trivial, I'll just use PowerShell. If C# isn't fast enough, I can always use Rust. If Rust or C# don't have some library I need, Java probably does. If I want something abstract, I'll get around to learning F# or just roll up my sleeves and get back into Haskell. Worst case, if I need to throw the kitchen sink at a problem I'll get back into writing substantive code in Mathematica.
[+] [-] cultyyy123|5 years ago|reply
[deleted]
[+] [-] MattGaiser|5 years ago|reply
Edit: For all the people who upvoted me, you can click the photo and see the whole job description. It wasn't cropped like I (we?) thought.
[+] [-] raverbashing|5 years ago|reply
If your candidate mentions a certain technology that is awful it is hard to not think it's an awful candidate. Especially if this is not central to the problem at hand.
Yes, CVs mentioning ClearCase go to the bottom of my pile
Mentioning CMMI, SAFe, ITIL or other acronym made to take money out of clueless managers also are heavy clues that you'd be not a good fit.
[+] [-] 29athrowaway|5 years ago|reply
[+] [-] sokoloff|5 years ago|reply
“Must not have VB.Net experience in the last 5 years” isn’t nearly as outlandish as “No .Net is the last 5.”
[+] [-] mucholove|5 years ago|reply
I got started in Ruby by following “Rails Tutorial”. Back then I was a bit arrogant about it and parroted a bunch the DHH bunk.
My charitable reading is they are looking for someone who sees the language as a framework around the OS.
That’s the kind of programmer I feel like I am now. It comes more than anything from learning Objective-C where the fact that the language is a construct is obvious once you encounter an `objc_msgSend()` alongside a [myString uppercaseString]; (or any other message send.)
[+] [-] unknown|5 years ago|reply
[deleted]
[+] [-] amelius|5 years ago|reply
[+] [-] sunstone|5 years ago|reply
[+] [-] thinkingemote|5 years ago|reply
[+] [-] inter_netuser|5 years ago|reply
[+] [-] forgotpwd16|5 years ago|reply
[+] [-] jack_riminton|5 years ago|reply