Reversing the technical interview

Next one
https://aphyr.com/posts/341-hexing-the-technical-interview

> The color has begun to drain from Timโ€™s face. Perhaps winter has come, and his coat is changing.
> (def racer
> (->> [0xca 0xfe 0xba 0xbe
> โ€œWhat are these?โ€
> โ€œMagic numbers.โ€ You are, after all, a witch. โ€œEvery class begins with a babe, in a cafe.โ€

No shit, one of my few favorite things about Java is the magic number for a class file.
#java

Hexing the technical interview

I don't understand enough prolog/minikanren for https://aphyr.com/posts/354-unifying-the-technical-interview
Unifying the Technical Interview

Just remembered an interview I went to. I was mainly Obj-C, willing to do some Python, Java, sysadmin, etc. These are Java drones.

Whiteboard problem is some dispatch thing (not FizzBuzz but same class of problem). I first do it in Python, and they don't get it, so I do some Java reflection to get methods in an array for dispatch. ;-)

Later there's two pairing sessions. One's fine, he's loose and friendly. The other guy's a stiff, gets upset that I use untyped Hashtable, not generics.
#java

There is a Type of Guy who codes in Ada, Java, Haskell, C++, Rust, Swift, etc., who cannot abide the idea that some *filthy dynamic hacker* is coding without <T<Q::Z>> shit all over.

We get the same results, mine in 10% of the time/effort, tests show mine's working, benchmark would show mine's 2-100x faster. What's the goddamned problem? Oh, I didn't do it "right". "THE PROBLEM OF NULL!" they cry. Dude, just check your returns sometimes. It'll be OK.
#programming #functional #types

@mdhughes TBF, it sounds you plan on actively fighting #Java idioms without ensuring everyone else on your team is onboard with your proposals.

#SoftwareDevelopment is often a "team sport". It's fine to have "nonstandard opinions" (I'm quite the #contrarian myself). But I will work on building team consensus non-confrontationally, and if they're not persuaded, fine, I adopt the team's idioms.

Your tech skills may be good, but maybe your #PeopleSkills needs work.

@nebu โ€ฆ Yes, I do not plan to be a drone in some corporate hive, shovelling the same shit every day into different holes.

And when those drones hit anything outside the set (shovel shit hole), they're baffled and helpless, and I'm not.

As for teams, I think the Klingon proverb says it best:
qaStaHvIS wa' ram loSSaD Hugh SIjlaH qetbogh loD (Four thousand throats may be cut in one night by a running man).
#programming
(also: "there's no I in teams, only meats")

@mdhughes

Nice. I like that you're very straightforward with your views here, and I hope you're as straightforward in all your #JobInterviews . No point in joining a team that's going to make you unhappy.

@mdhughes You're using reflection for some FizzBuzz problem. That's what Java drones do. They're smart, but don't know enough to know that using reflection is wrong. And they use reflection everywhere, in the most inappropriate circumstances. As another drone, it's very annoying to work with their code.
@mtae Outside of extremely aware non-drones, nobody codes a simple decision-making problem with reflection in Java, let alone drones who've almost never seen it. This is a bad take and you should feel bad for making it.
@mdhughes I see reflection all the time, and it's never necessary. I'm not sure what you're saying though. That only non drones use reflection, and that drones like me just, like, don't get it, man?

@mtae Right, need to use small words.

Pros and sarcastic ex-Java people (self) will make big stacks of factories, reflection, and objects-reifying-code, or even do JVM bytecode hacking, as a joke or comment, or to show off.

Drones don't use anything more complex than basic classes and accessors, they hit code-complete in Eclipse or copy-paste from stackunderflow.

If you don't understand why reflection is useful but probably not what the drones wanted to see, yeah, you don't get it.

@mdhughes Oh, I get it. What you're describing is the "I am very smart" of Java developers. You're the kind of person who will throw code at a problem thinking everyone is looking at it and sees how smart you are. But I'll come in and delete it all, long after you left to go write Haskell in a Buddhist temple in the Himalayas, that no one will ever pay you for. My commit will have 500 lines removed, 0 lines added. Eventually we'll do a rewrite anyway just to get away from the turd you dropped.
@mtae Go read that aphyr "Hexing" post above. That'sโ€ฆ that's not serious, you know? That's a joke, which a person far, far overqualified for a job would do to make the meaningless problem slightly interesting.

@mdhughes @mtae IMHO, Honoring language-specific idioms is a fun intellectual exercise (e.g., "How would the *language designer* solve this problem?"), improves readability, reduces technical debt, and significantly wards off bite-marks in the backside. ๐Ÿ˜

When the idioms become boring, I know it's time to pick up a new language or learn a new aspect of a known language.

@_slotek_ @mtae The idioms of Java are bullshit. It started as a small, trivial subset of C with some ideas from Objective-C, for TV set-top devices and remotes. Java 1.1 and earlier was fun.

Then enterprise got hold of it, and it turned into hell, the drones and FactoryFactoryFactory types took over. There's no reason to respect those people or their "work".

Adding generics made it uglier. It doesn't affect "technical debt" at all. Someone tries to bite my ass, they're going in a dumpster.

@mdhughes @mtae I was referring to the self-inflected wounds that manifest during maintenance. ๐Ÿ™‚