I have been using Git a long, long time. I have worked on Git clients and libraries. At some places I've worked, I am the person folks go to when they need Git help.

And yet, only today I learned you can pass -m to commit twice (or more) and it will do the right thing of making each successive message a new paragraph (which is useful for the convention of a short summary as a single first line and following paragraphs as a more detailed message).

@halfogre
I also did not know this, despite having worked with Git for the last 9 years or so.

Git, unfortunately, is what happens when developers think about functionality without thinking carefully about usability. It's probably an unpopular opinion on my part, but I'm not a n00b, I've used it a long time, and I still come to this conclusion. It's really capable, but it's truly terrible to work with.

@feoh

@spatula @halfogre @feoh Git is popular but very few people actually know how to use it. It is especially facepalm-worthy when the β€œgit is the best”-types blow away their clone because they don’t know how to fix whatever they did.

FWIW, for all my personal projects I use Mercurial. It is so much saner you use - and the evolve extension is amazing. Going back to git feels like visiting the Stone Age.

@jeffpc I kind of feel like the people who are really enthusiastic about Git are the same people who think that making interview candidates write out the code to rebalance a binary tree offers a good predictor of future success with ordinary business problems.
@spatula You mean unimaginative trend-chasers? :)

@jeffpc Well, yes, that, and people who think that human beings manually moving pointers around is a good use of their time.

I've worked in this industry for 27 years, and I've never once rebalanced a binary tree.

@spatula Whenever I ask something along those lines, the I'm looking for a "I'd use a library or whatever code already exists that is well exercised/tested".

Similarly, when I'm the candidate, that's my answer to questions like that. I've *always* had the interviewer to agree with that statement. After that, the actual balancing feels like a formality. Granted, I still try to get the question right and while I'm writing the code and try to say what I'm thinking...but pointers don't scare me.

@jeffpc Yeah, pointers haven't scared me since 1994, but I am very much opposed to wheel reinvention, especially where very tried and true libraries are concerned. The chances of my making some weird corner-case mistake that someone else has already made AND fixed in their library are quite high.

It's all stuff I certainly CAN deal with, but it's not the class of problem I generally NEED to solve, especially when someone else already has done so on my behalf.

@spatula I'm still trying to figure out a good set of questions to ask during an interview. It's essentially impossible to ask about anything actually practical to the company (especially if the sw is proprietary) and toy problems can be easily pointless or insulting. As an interviewer, I've gotten burned once by not doing a thorough enough "coding ability" check. I do not wish to relive the headaches that resulted from it.

@jeffpc My workaround to this problem has been to leave the coding questions to other people and do more abstract interviews instead. One of my favorite things to do in an interview is to find some technology referenced on the candidates resume that I know nothing about myself, and ask them to explain it to me. It tells me a hell of a lot about a person.

Long ago, I used to like to ask people to randomize a list without repeating any values. Bonus points for knowing abt Collections.shuffle().