1,237 karma · joined April 1, 2015
* CamelCaseMotion, allowing select/delete/change of just one or a number of segments of a camel case or snake case name
* surround.vim, allowing single commands to (for example) change the () surrounding a text to [] or “ to ‘
* a simple one-liner to change a literal Python string to a f-string and back without losing the current edit position
And in general the power of the motion + action vocabulary that lets you compose edits on the fly once you have the motions and actions under your fingers. You don’t even have to think to type ysiw” to put “ around the current word, for example, or vt)~ to change the case of everything up to the next ).
I do seem to recall a very large cohort of programmers (LOCALE=en_us) finding themselves dumped through a rabbithole of wonder which turned the black-and-white scenery of the Land of ASCII to the kaliedoscopic technicolor of Unicode. We did, in fact, discover that there were extra bits on those characters that we had been pretending weren't there all along :)
Sure, you can get an easy car share 95% of the time, but the 5% of the time that you actually need one is also the same 5% of the time that everyone else in the city needs one -- the long weekend when everybody wants to head out to the countryside. Likewise hotel rooms and the facilities in parks. So you may need to plan waaaaaaaaay ahead if you depend on access to these shared resources.
shrug
I wish I had a magic blog-post-length formula for how that happened. I don't. I know I personally talk about it in interviews, and we hire for developers who think about development as a team sport rather than a solo FPS rampage, and we talk about code review sort of a lot in onboarding.
The way I explain it to noobs is that a collegial review culture is a question of trust. When we all believe that we are all on the same team with the same goals, we feel safe, and we can trust that (1) critical feedback we receive from others is intended just to improve the code, not to score points on us personally, and (2) if we give feedback that is critical, it will be received in that spirit as well. And it's our responsibility to give critical feedback where the code under review doesn't meet our standards of efficiency, readability, and maintainability.
Grandstanding or mean-spirited reviews break down the team-wide spirit of trust and the feeling of safety; they are a far greater danger to the integrity of the code base than a badly-coded method or spotty test suite.
* just plain jerks
* serial harassers, misogynists and the like
* supporters of various evil/hateful politics
* white-collar criminal/fraudster types
* straight-up mob, american, russian, or other
* nation-state actors with very dirty hands like KSA
Making ethical decisions about who you are willing to work for is a routine part of working in startup world... and you're never done, because surprise! You may have an even harder decision to make after that Series B closes with new investors!
I live in NYC and in the startup scene here (in my experience) young superstars get (demand!) a lot of attention but hiring managers are always stoked to find someone with some seasoning who is not averse to working in a startup environment. I try to be very upfront that I place a high priority on my family and I will not be spending 60-hour weeks in the office. As long as expectations are set properly nobody has had a problem with that.
* Do meaningful work, whatever that means to you. Maybe it's picking a domain that helps people or society, or maybe it's some other criterion. Ask yourself what meaningful work is to you.
* Be mindful about your craftsmanship and always work to improve it. Try to write solid, expressive, readable code that works, and be critical about your own code. Read other people's code closely and see what you can learn from it. Explore new technologies, not just for "variety" but for what you can learn from what led to their development and how they were implemented.
* Engage in mentorship of younger developers. Mentorship can really do a lot to renew your love of coding. If your employer doesn't have an established mentorship program try to help set one up. If that doesn't work, there are coding bootcamps that will let you work as little as an hour a week mentoring new developers as a consultant.
* Try to be that person within your organization that others want to come to with their thorny technical problems. Listen deeply and respond compassionately.
* Work on side projects. They don't have to change the world or "go somewhere". A side project can remind you why you love programming when the daily becomes a grind.
The qualifications of the people developing the code are somewhere down in the process-stack; there are no specific requirements [1].
In general, to follow "Current Good Manufacturing Practices" (a term of art in the FDA design controls regulation), qualifications for the people on the team have to be documented and a paper trail kept up-to-date, to be able to answer questions of the nature "was person <X> qualified to be working in this role? How do you know?" with objective evidence.
It's up to the judgment of the engineering management of the project what they state the requirements of the role to be. If you say that it takes a high-school diploma or better to be able to develop life-safety-critical medical device software, you may pass a process audit since you document and track that requirement, but if there is an "adverse incident" I would think whoever signed off on that decision might be exposed to liability.
[1] My specific knowledge about this is ~5 years out of date so this may have changed, but I doubt it
I mean, even "discount" recruiting platforms like Hired and Vettery will cost 5-figures when we make a hire through them, and traditional recruiters often charge 20% or more of the new-hire's first year salary. A few hundred bucks to get some more information about a prospective coworker is cheap.
Actually hand-writing code with a pen has always seemed weird to me. As a programmer, I compose code with a keyboard. So I give candidates a laptop and use an interactive screensharing tool (I like https://codepad.remoteinterview.io) where they can run code in the language of their choice in a browser, and I can watch and talk through the process.
We only do them when we are pretty excited about a candidate but need more information to make a hiring decision.
It's cheap, really, considering the cost of sourcing candidates and the cost of making a bad hiring decision.
You can definitely get really good wine cheap. But! Sometimes it's worth it to bump up.
I drink a lot of whites these days because my wife can't tolerate red. I find that there is a sweet spot at about $25 (NYC retail prices) for whites that are noticeably better than cheaper ones -- French whites like Sancerre, decent Chablis, the less fancy Bourgognes; what I think of as new-style California Chardonnays (not oaky, more like French Chards).
Then there's another sweet spot for whites at about $40, which includes some of my favorite bottles ever, which can change your idea about what good wine can taste like, if you don't usually "go there" pricewise.. I'll call out specifically the Alma Fria and Division Chardonnays, both from California, and in general a $40 bottle of Bourgogne will be very special.
I also love natural (spontaneously fermented) wines as discussed in the article, but that's a whole different drinking experience, more like kombucha in a lot of ways than conventional wine.
To me, it doesn’t matter if the candidate “fits in” with today’s culture, it only matters if I will still want to work at the company after the new person is part of its culture.
If only you could actually predict this from interviews!
As is, all you can do is try to put the candidate in job-like scenarios and evaluate specific “culture” attributes like “is open to criticism” or “listens to collaborators” or “codes with a concern for future readers” or “has a positive attitude toward code reviews”. It’s still much easier to disqualify than to endorse on those criteria. Hiring is hard.
Moreover, when the weight of those comments trends towards 50% being justifications for why you did it that way, it's an excellent sign that your code has gone from "brilliant" to "super-genius", as in "Wile E. Coyote, Super-Genius".
"Completely dumb" code can be read by your future self without comments. Even, sometimes, by other people!
It’s very hard to guarantee that every first-round interview includes a seasoned lie-detector. A coding exercise is an imperfect, flawed, sometimes insulting approach that’s better than the alternatives.
When done right, it can be a nice conversation about coding, algorithms, and how to collaborate. And prove that the candidate can code.
Personally, I don’t mind being interviewed with a coding exercise even though I could be many of my interviewers’ parent. I love programming and talking about programming with programmers! And it gives me a chance to interview my potential future collaborators in a setting that’s less structured than a sit-across-the-table Q&A.
In my experience, someone who refuses or takes offense at a well-framed coding exercise is probably not going to be someone you want on your team. By well-framed, I mean introduced in a way that’s not insulting on the face of it, like a multi-hour takehome exercise before even meeting the candidate and talking about the job and why you are interested in them as a candidate. That’s just lazy interviewing and I wouldn’t want to do that either.
When the more-powerful owes money to the less-powerful, the debt obligation works to ensure that the less-powerful person's choices are limited to "walk away from my money" or "wait around and hope". When someone says they are going to pay you, you really really want to believe.
Funny how the debt obligation always works in the more-powerful party's favor :(
I have had a very similar situation happen twice, once when a VC gave a small startup the "check is in the mail... no wait we have to transfer money.. no wait we have to liquidate an investment" BS while the employees worked without pay for months on end. My first startup job, and the LAST time I will work for any amount of time without getting paid.
The second time (different company) the founder/VC (allegedly) defrauded the other investors by puffing up the startup's prospects, and then when the startup got acquired by ${BIGCO} for a very very low valuation only the founder walked away with any money... he was indicted, I think, I had to produce years worth of email for trial discovery and was lucky not to have to testify.
In my experience, working for a messed-up/sketchy startup is just a resume item that most people have, and you hope you only have one of...
Of course, as others have posted, she doesn't appear to have tried hard to cover her tracks at NSA so that doesn't seem too likely. But stating that she accidentally left in the printer dots is assuming several facts not in evidence.