Fork me on GitHub
#off-topic
<
2017-12-05
>
qqq03:12:14

has any tech company managed to hire by saying: for your CV list your 20 open source commits you're most proud of for your interview, we'll just ask you abut the commits

gonewest81805:12:15

… theRed Hat kernel and compiler teams? 🙂

qqq05:12:47

@gonewest818: did they really do that? would love to read the story

qqq05:12:15

naively, it seems the whole interview process is inefficient -- companies ask algorithms questions; candidates prep for interview questions;

qqq05:12:40

in a alternative world, candidates just take the time they would have otherwise used, contribute to open source projects --- and companies just hire from open source project commit list for relevant positions

qqq05:12:49

who would you rather hire, candidate with 'react' on cv or candidate who made a commit to react? candidate with 'mysql' on cv or candidate who contributed to a popular mysql documentation

gonewest81806:12:50

I didn’t mean literally, but I have to believe that back in the day, when Red Hat hired people like Alan Cox and Uli Drepper, it wasn’t as if someone had them do a bubble sort on the whiteboard. It should have been clear from their well-known contributions to the kernel and the GNU compiler, respectively.

qqq09:12:52

how does touchstart and touchenter differ for js/tablets ?

dominicm09:12:32

I was reading about how this algorithms thing is really new, ever since Google became the hotness. Apparently before that it was Microsoft's interview process that was copied.

schmee09:12:54

what was Microsofts interview process like?

dominicm10:12:24

https://danluu.com/wat/ > Back when Microsoft was ascendant, we copied their interview process and asked brain-teaser interview questions. Now that Google is ascendant, we copy their interview process and ask algorithms questions. If you look around at trendy companies that are younger than Google, most of them basically copy their ranking/leveling system, with some minor tweaks. The good news is that, unlike many companies people previously copied, Google has put a lot of thought into most of their processes and made data driven decisions. The bad news is that Google is unique in a number of ways, which means that their reasoning often doesn’t generalize, and that people often cargo cult practices long after they’ve become deprecated at Google. That whole article is really interesting, the length is an attestation to how much you will learn 😄

dominicm10:12:45

So, brain-teasers were the microsoft interview process?

dominicm10:12:54

I bet Spolsky has some information about the microsoft process.

schmee10:12:48

ahh, interesting. Not a fan of brain teasers as interview questions, unless your job is to write brain teaser books 😛

schmee10:12:58

I’ll give that article a read

dominicm12:12:41

(It's not about interviews at all, it's about lots of things all over the place)

souenzzo12:12:01

Today I saw that they announced "data class" for python. I was curious because I remember that they announced the same for java a few months. So I went searching for "what is data class", then I find: It's a hype from kotlin-lang(2011) that add one more syntax to declare a class. And it's avalible on clojure since defrecord / clojure 1.2 - (2010).

borkdude12:12:55

Is that the same as Value objects in C#? (data classes I mean)

souenzzo12:12:16

Not sure about C# But in kotlin/python/java, it's a class with "dummy" getters/settes. Almost like beans, but with a newer/hype syntax.

Dale Peakall13:12:35

Don ’t think so: there was a feature that didn’t make it into C# 7 known as record types that imitated the Kotlin syntax. https://github.com/dotnet/csharplang/blob/master/proposals/records.md

borkdude13:12:12

More like case classes in Scala maybe then

3Jane16:12:22

@qqq that’s the kind of idea that can cause unexpected side effects. For example it’ll bias your hiring on gender: iirc women for example contribute less to open source.

tbaldridge17:12:02

@lady3janepl yes, sadly that's a problem with almost any interview process, it's biased to a person's ability to conform to a specific view of what a "good" employee should be.

seancorfield17:12:10

@lady3janepl Yes, that's very important to bear in mind about OSS. I will look at a candidate's OSS projects if they list them, but seeing their code is more likely to bias me against them if it's not good code. I don't consider a GitHub repo to be unequivocally a "good thing".

tbaldridge17:12:31

For example, I can hardly talk about, let alone show off what I've done for the past 4+ years of my life as it's all hidden behind NDAs and contracts.

seancorfield17:12:55

I used to say that I considered a GitHub link or similar to be important on a resume, until I had it explained to me how much bias that can introduce.

dpsutton17:12:07

how does it bias?

seancorfield17:12:54

@dpsutton As @lady3janepl said, in general, women are not represented in OSS because it's often a hostile environment -- there's plenty of evidence out there these days.

3Jane17:12:09

@tbaldridge Yep, that’s another problem. The more involved you get in internal projects the less visibility you have.

seancorfield17:12:26

If you look at the gender breakdown in software as a whole, then in OSS projects, it's radically different, unfortunately.

dpsutton17:12:27

ah yeah. that's fair. I thought you were talking about the person with bad code and being biased against them. That's not bias that's just honest assesment

3Jane17:12:41

Same applies to talks, articles etc: not every position allows you to publish on what you’re working on.

3Jane17:12:00

Recruitment: still a hard problem :)

tbaldridge17:12:03

@seancorfield I agree, I use Github simply as a gut check on a person's ability to code. If I go and see some odd paren formatting in Github then I get worried. If I see no code at all, then I'll dig deeper into design questions and the like

seancorfield17:12:15

@dpsutton Right, if you don't have a GitHub repo, I won't hold that against you. If you do and you code is terrible, then I will consider that a black mark.

dpsutton17:12:24

agreed on both counts

tbaldridge17:12:15

The worst sort of interviews is when the person has no GH profile, nothing they can show or talk about, and aren't even known in the industry. Then I have nothing to go on at all, and it makes it really hard hire someone. In those cases coding exercises are about the only tool left.

New To Clojure17:12:47

@seancorfield > a black mark what about code that was written many time ago or is just a throw-away code (say, some elisp hack) but is still stored at Github?

dpsutton17:12:54

yup. hiring at my last job we really struggled with how to do this well

3Jane17:12:59

Terrible code in GitHub repo can also be a question of own code “good enough to work” vs code for others, prepared for reuse. TBH that’s why you can’t see most of my projects: I know people would judge me by their quality, but I don’t have the time to make them pretty, since they were explorations rather than products.

seancorfield17:12:12

@tbaldridge I still find, even in that situation, that getting a candidate talking about their projects, what problems they ran into and how they solved them, what stuff gets them excited, etc... that's always a lot more valuable than a coding exercise. People can always be mentored and their code improved once they're onboard.

3Jane17:12:32

(There was a good article a month ago I think? About how open source code doesn’t necessarily mean open to contributions.)

dpsutton17:12:37

yeah. our best answer was look for passion or enthusiasm

tbaldridge17:12:46

Heh, I can think of a few projects like that @lady3janepl

3Jane17:12:35

Yeah, I think people explaining why and what their values are can be a valuable signal

seancorfield17:12:09

@ghsgd2 If they only have bad code from several years ago and nothing recent, I'd ask them why they hadn't published anything recently. And it's usually easy to tell whether GH repos are "just storage" or actual projects.

3Jane17:12:10

You get to know their priorities; even if they don’t have much experience, you can see if they’re willing to be trained in the direction you want to go

tbaldridge17:12:29

But yes, when I look for black marks in the code, I'm not talking about "you should use reduce instead of apply", I'm talking about looking at some lisp and seeing this:

(foo
  (bar
    (baz 33)
  )
)
That can be fixed, but also says a lot about where the developer is in their learning cycle.

3Jane17:12:41

Definitely :) Bottom line is, github can be informative but also requires a lot of effort to process, so would be useful in a later stage rather than as an initial filter.

seancorfield17:12:45

I think I've shared this before but I have a mind map that covers the areas I drill into in an interview... I don't always get into all of it, but it gives me a reminder of questions and ensures I mostly interview every candidate the same way...

dpsutton17:12:32

i love that mind map

seancorfield17:12:49

I start in the top-right and go down that side, then switch over to the left, and start again at the top (usually -- some times I'll jump around a bit, depending on where the conversation is going with the candidate).

dpsutton17:12:52

very similar to what we would talk about at last job's interviews. you can tell when people don't have any strong opinions about the left half

dpsutton17:12:32

do you mind if i share that @seancorfield

seancorfield17:12:09

Happy to share far and wide 🙂

New To Clojure17:12:26

It's often hostile for men too as well - the latest example is Linus shouting at people I once published a patch for a bug and maintainer had an argument with me trying to prove that nobody ever needs it fixed. After lots of time wasted on discussion and refining minor details he accepted it but required me to sign legal documents and send them via post before merge.

seancorfield17:12:53

It's part of my "mission" to get folks to stop doing those dreadful "coding monkey" challenge interviews 🙂

bronsa17:12:10

that's a really good mind map @seancorfield

dpsutton17:12:13

we hired a lot of interns in school or full timers right out of school. one of our favorite questions was what was your most favorite class and why, and then what was your least favorite class and why

seancorfield17:12:26

@ghsgd2 Linus is a special kind of ass at times tho' (Stallman is worse). And I would challenge that it is "often" hostile to men.

dpsutton17:12:45

also, you wouldn't get any code into clj or cljs without those legal papers. that's a real problem

dpsutton17:12:52

same for any gnu project.

dpsutton17:12:08

by real problem i mean legitimate concerns

bronsa17:12:09

those legal papers are electronic and 40 seconds away now so I don't see how that's a problem anymore

tbaldridge17:12:26

I'd agree with @seancorfield most of the "hostile to men" situations are not male specific, but just "hostile to all".

dpsutton17:12:59

linus yells at people. but i've heard we only hear about him yelling so its kind of a survivor bias

seancorfield17:12:23

Contributor Agreements are pretty standard for projects that are considered critical to companies' businesses. I've never understood why some devs seem so upset about them. But that's probably because I've also been on the corporate side and dragged into license auditing for projects 😐

dpsutton17:12:42

the man == seancorfield

chris17:12:10

they get upset because they don't understand them

chris17:12:02

like the FSF one doesn't give away your copyright, iirc (and I doubt the clojure one does, but I signed it so long ago I don't remember)

bronsa17:12:24

the clojure one co-assigns the copyright to you and RH

chris17:12:11

on the earlier point though, we deify people like ESR who are just genuinely unkind individuals. it's pretty messed up

chris17:12:52

also, most dudes don't get rape threats when they attempt to commit something or engage in the community, that's the difference

dpsutton18:12:57

Who is ESR?

noisesmith18:12:25

eric s raymond

qqq18:12:14

It's so weird that so much of "figuring out if a candidate is competent" is on the interviewer's side, when instead, if instead of listing keywords on CVs, every candidate just created a small github project demonstrating their use of that library/language, it'd make the interviewer's job much easier.

qqq18:12:06

If you've spent 1000 hrs mastering a language/library, it's only 1% more work to spend 10 hrs setting up an open source code snippet showing how you use the language/library.

dpsutton19:12:38

we discussed something like that. It kinda makes sense when looked at it as one thing to do. however, each job would like to see something current. and then applying for a job takes 10 hours or more, and multiple could easily lead to requiring a weeks worth of unpaid labor outside of normal hours of a candidate. and that's if the person has the time to spare to do this in the first place. we abandoned this requirement and went with a coding challenge that would take 1-2 hours at most and felt a little bad about that but figured it was a good compromise

fellshard20:12:35

What are folks' thoughts on Business Rules Engines? Are they useful? Are they a poor mental model for the logic they usually want to represent?

tbaldridge20:12:12

@fellshard I've used a few, really depends on what you're trying to accomplish and how the engine works

tbaldridge20:12:59

The worst one I've ever used was a pile of OOP gook where everything was controlled with events, and properties. So you'd set the property of an object it'd run a ton of rules and throw an exception if something failed

tbaldridge20:12:13

And that ran on every edit. And some rules had to sum 1000 rows....

tbaldridge20:12:23

And it wasn't thread safe...

tbaldridge20:12:53

That was about the time I watched Rich's "Are we there yet" talk, and I just cried, lol

dpsutton20:12:19

at my last job there was a rules engine built up over 15 years in vb5 (!) that we rewrote. it wasn't super pretty but we cleaned it up well and it processes medical billing to the tune of a couple hundred million a year

dpsutton20:12:39

the business liked it. there would be no way to bill that stuff by hand

fellshard20:12:48

I guess the problem I tend to see when businesses reach for rules engines on reflex is that it doesn't end up being something the 'business experts' end up being able to understand effectively, much less modify. Are there tools to prevent that from becoming an issue as time goes on?

fellshard20:12:48

(Probably specifically addressing forward-chaining rules engines, e.g. Rete-based engines, Drools, etc.)

tbaldridge20:12:21

Right, so we should discriminate between business rules engines and production rules systems

tbaldridge20:12:32

The first are stuff like http://CSLA.net that do runtime assertions.

fellshard20:12:39

The terminology is pretty muddied 😫

tbaldridge20:12:43

The latter is a inverse-query engine and yeah, I'm all for those 😄

tbaldridge20:12:36

Clara for Clojure looks pretty good. I think a GUI+something like Clara, could be pretty awesome, allowing users to do exploratory composition of rules. And they run really fast for streaming data.

tbaldridge20:12:50

For static data the output of the system could simply be a set of queries

fellshard20:12:19

So it ends up being a composable way of increasingly complex facts from a substrate of data. As long as you keep the number and breadth of facts in check - bounded properly by your biz domain - it would probably stay manageable

fellshard20:12:02

A little odd that Clara banks on side-effecting over producing new facts, but I guess the way facts are introduced to the system is up for grabs

fellshard20:12:58

I definitely see the correspondence between Clara and Datomic rules

tbaldridge20:12:26

Yes, but the two are a bit different:

tbaldridge20:12:45

Query engines - your data is relatively static, and you apply arbitrary queries to it

tbaldridge20:12:58

Rules engine- your queries are static and you apply arbitrary data to it

phronmophobic20:12:22

presumably you can add data to the query engine and add queries to a rules engines. is the distinction mostly based off usage? how does it affect the implementation?

tbaldridge20:12:41

Yes, the problem is, that with a query engine adding more data means you have to re-run all your queries. So it's really bad for stuff like airline reward points systems. Don't want to re-run queries whenever anyone buys a ticket.

tbaldridge20:12:14

And for the rules engine you have to re-run almost all your data through the engine whenever you add a new rule. So in production...don't update your rules much, parameterize them.

metasoarous21:12:20

@tbaldridge Unless you have differentially/incrementally maintained query views (query result sets as semi-lattice structures): https://github.com/frankmcsherry/differential-dataflow/blob/master/differentialdataflow.pdf

tbaldridge21:12:45

sure, there's lots of ways to optimize this

tbaldridge21:12:27

I can't tell you the number of times though that I've seen companies try to process data streams by putting them in a DB and executing predicates/queries with every update.