Live data from Hacker News

If Carpenters Were Hired Like Programmers

dawood.in

141–150 of 164 posts

Re: If Carpenters Were Hired Like Programmers

#141

Earlier quoted context omitted.

Here's my exact train of thought while reading that: GetHash? What the frack? Isn't that on object somewhere? Right, object handles all the common copy semantics and so forth. Use the hash to check for equality; things on the stack instead of the heap, yadda yadda.. Dang, here the guy is going into detail why this is so important. Ah yes, value versus reference semantics. Boxing and so forth. Tiny trivia around how t…

While in the general case I would agree with you and I try very hard to dump as much stuff offline as possible, I would argue that this is one of those things you cannot look up "if you need it", similar to the difference between 'class' and 'struct' in C# or the difference between 'class' and 'case class' in Scala (the C# one being a runtime implementation difference, the latter being a fairly large OO design differ…

I do not think we disagree.

My point was understanding the stack and heap, boxing and unboxing, were great to know general purpose knowledge about how type systems are created and used in modern languages, whether Java or .NET

If you know what it is, and you know why it is important and when it is used, then any detail you might miss or mangle really isn't that important.

In a similar fashion, I can describe in general terms how a virtual lookup table is fashioned, and how method signatures work in OO linkers. I'd probably miss 90% of the details, but I retain enough of an overview to correct myself when required. I can know something in general terms well enough to know where to go when I dive deep. That's the goal.

You have to internalize struct and class. Not so much on the relationship between the built-in hash function and the rest of it. You start using structs and classes, you start extending the type system, badda boom, badda bing -- you end up in the same place. No need to be able to give a lecture on it. Just be able to do the work :)

Re: If Carpenters Were Hired Like Programmers

#142
post #91

Earlier quoted context omitted.

Which would be perfectly valid if software developers spent their entire day solving problems on the whiteboard. But we don't.

At my first job this was very common. Usually it was more related to schema design and class hierarchies. But there were always white boards full of diagrams of whatever we worked on. We had folders full of digital photos of white boards as reference material. I'll never forget how excited the lead dev was one day when he got some markers that would automatically make a digital file from whatever he drew on the white…

Whoa, something like this? https://www.schoolsin.com/qrt-kapture-digital-flipchart-pen/...

I did not realize accelerometers/gyroscopes/whatever were capable of that.

Re: If Carpenters Were Hired Like Programmers

#143
post #127

It's worse than that. The CHAOS study, among others, shows that 80%+ of all software projects are viewed as failures by the people who pay for them. Meanwhile you come onto boards like HN or reddit and instead of talking about how to establish and keep trust with the folks writing the checks, everybody's talking frameworks and tools. So picture a subdivision where 80% of the houses are broken down, priced too high, i…

Also: A) Phew, almost done with this roof. MANAGER) Hey, Mr A! When you're done with the roof, can you build another one on top of it? So we can pick it off and use in our next project? A) But... is it built using same blueprints as this one? MANAGER) Of course not. Just make to roof so we can fit it on another building. That way we will save time. A) But that does not make sense. I can build the other roof much fast…

MANAGER: (Gets out brochure from a construction firm) See this Whiz-O-Matic armor-plated flying roof with squirrel attack system? Just make it like it looks in this picture. Come on, guys. You're professionals, right? This kind of thing must be trivial for you.

Re: If Carpenters Were Hired Like Programmers

#144

"Well, I’m a carpenter, so I’ve worked with all kinds of wood, you know, and there are some differences, but I think if you’re a good carpenter …" In my experience, a good programmer in one language is very likely a good programmer in another language as well. There are a lot more commonalities than some people realize. That's the reason why I'm sceptical of claims such as "the programmer knowledge half-life is X yea…

I think this is generally true, although I think there are a couple of languages that are exceptions just because they're so ridiculously complicated. C++, for example. A very practical language, but there are so many gotchas and traps in that language that most people learn the hard way, when they're debugging a corrupt virtual table jumping into god knows what. The thing is, there's probably like 5 people on the planet that actually completely understand all of C++.

Anyway I think most programming language knowledge transfers well, but for some languages years of expertise actually means a lot.

Re: If Carpenters Were Hired Like Programmers

#145
post #133

Last June I started work with a software engineering company that was using meteorjs heavily for their new product and php and java for their main product. Front end was standard jquery. At the time of joining, I had only ever used java, and that too in university for a project on multi threading/parallel processing. In about half a month I was acquainted with the basics of meteor and node js, and within a month I wa…

I think you have a great point, although some people are able to do what you did and some are not. Even if some people can do fast just-in-time learning there is value in expertise of the sort described in [0].

[0] http://norvig.com/21-days.html

Re: If Carpenters Were Hired Like Programmers

#146

Earlier quoted context omitted.

If they want SAS that is their choice. It's like asking a carpenter to built a cupboard and he answers: "I'd rather build a shelf, it will hold your dishes just as well."

No, it is not like that at all. It is like asking a Carpenter to build a cupboard and thinking he's unqualified for the job if he's only ever used Craftsman screwdrivers because that means he can't use Husky screwdrivers. Its also like deciding to hire an HR guy based on what brands of keyboards or pens he's used.

> It is like asking a Carpenter to build a cupboard and thinking he's unqualified for the job if he's only ever used Craftsman screwdrivers because that means he can't use Husky screwdrivers.

I get what you're trying to say and I agree 100% it's foolish to make hiring decisions primarily on having X years experience with Y technology but let's not pretend all technologies are as interchangeable as a Craftsman screwdriver vs a Husky one.

Just because someone has a lot of experience working with wood doesn't mean they can do anything with wood well (at least not without sufficient time). You probably wouldn't want Antonio Stradivari to build you a house or Bob Vila to make you a violin.

Re: If Carpenters Were Hired Like Programmers

#148

Man this is the strangest thing to me. I used to be a carpenter. I would show up at your job site with my tools, you might ask me a couple questions, I've had guys ask me to lay out a wall or two off the prints. Call a reference to see if I show up to work. Then I get the job. Usually, doing something myself or my boss never had done before, and we would figure it out off the prints, and build it. I just go turned do…

My explanation:

The people making the hiring decisions have two problems: (1) Ignorance about software, programming, and the associated technology and (2) resentment for the compensation level of good software developers.

So, who are these hiring people? People from CEO to HR to middle managers who know less about the work than the candidate employees do. This fact is like a chicken bone stuck in their throat because it is totally against the 100 year old norm, back to Henry Ford's factory, of an hierarchical organization where the supervisor knew more and the subordinate knew less and was there to add routine labor to the goals of the supervisor.

So, with the resentment of (2), the hiring people expect and very much want any candidates to know basically everything, including absurd details no one should bother to remember. Or the candidate needed five years of experience with Java when the language had been out for only three years and likely only James Gosling had that much experience with Java. Or the hiring people want five years of experience with MySQL and experience with DB/2 and SQL Server don't count. Or they want C# and Visual Basic .NET (different from C# essentially only in syntactic sugar) doesn't count. Or they want C Python and Algol, Fortran, PL/I, C, and assembler for several processors don't count.

And with the ignorance of (1), the hiring people don't know what's important and what's trivial.

So, for

> When did working at your shit company have to be my passion instead of my job?

the hiring people, lacking any better criteria for not making a hiring mistake, basically want the candidate to grab their ankles and swear everlasting, life long fealty and commitment to their six month project.

Moreover, such interview questions are obviously a really bad joke for someone with a lot of significant software experience and/or a good college degree in computing; that is, the hiring people, based on near total ignorance and incompetence, are trying to give oral exams in computer science, to someone obviously long since highly qualified.

Any competent professional or worker of any kind needs to keep in mind that it's super tough to build a good career working for ignorant, resentful people. So, try not to do that.

Keep in mind that only a tiny fraction of jobs provide a stable career with compensation sufficient for a three bedroom, two bath house, wife, kids, college for the kids, and retirement for the parents.

Broadly the solution for someone in computing is just to see the bright side -- how much hard/software can be had for $2000 -- and use that to start and run a successful business.

A good example is the Canadian romantic matchmaking service Plenty of Fish, long just one guy, two old Dell servers, ads just via Google, and $10 million a year in revenue.

Other fields of high specialization have seen and responded to much the same problem: So, they have a profession with, maybe government licensing, legal liability, professional peer-review, meaningful, challenging certification, code of ethics, etc. And, e.g., as I understand, the legal profession says that in a business, a working lawyer can report only to another lawyer, never to a generalist, line manager.

Really, old-line businesses, or any business with old-line attitudes, can be just terrified of software developers and work hard trying to minimize the power of the developers, e.g., use divide and conquer by making sure no one programmer is essential and, instead, the organization has various cases of back-ups.

But the ignorance (1) and resentment (2) go a long way to explain the nonsense.

Finally many VCs like to see technical CEOs -- good.

Re: If Carpenters Were Hired Like Programmers

#149
post #61

Earlier quoted context omitted.

now I want to understand what a framework is I'll short-circuit that one for you right now: you call a library, a framework calls you - it figures out how by some combination of convention and configuration. Libraries put you in control, frameworks make you cede control. You can usually mix and match libraries, whereas you can only use one framework at a time comfortably.

So is jQuery a library or a framework? I've seen it called, and used, both ways. It's not a hard and fast definition, and that's what I mean by "really understanding" something. I want the things I build to be able to be used in any way that it would be useful. It's the fractal landscape at the boundary between the definitions that I'm interested in. I find myself refactoring code a lot, pulling pieces out and puttin…

jQuery is a library. Rails is a framework, but many of the components of Rails are libraries.

Re: If Carpenters Were Hired Like Programmers

#150
post #135
post #54

Earlier quoted context omitted.

What's the default implementation of GetHash() in c#? I actually like this question (not that I've ever asked it before), because it teases out how well someone knows .net and C#. The specific implementation of GetHashCode isn't what's interesting. It's whether you know that .net implements reference vs value equality by default, whether you know you really do need to override GetHashCode if you override Equals, test…

I've been writing apps in C# for about 5 years, and not once have I needed to know how GetHashCode works. I have looked at it at some point (don't remember why, I think it had to do with an entity's identity for NHibernate) but I would fail this question even though most people I've worked with would rate me as a very effective (and efficient) programmer. This is why I feel I would do badly in these kinds of trivia-l…

Have you never written a class that you wanted to use as a key in a dictionary?

You need to know the contract of GetHashCode to do this properly. If you don't know the contract of GetHashCode, well, you simply don't know .NET very well. That's my professional opinion.

Post reply on HN