|
Since it is a long-term position, rather than a short-term or consultant position, I would choose the candidate that would be the best fit long-term. Not every candidate will know everything, if they did, then they'd probably get bored or want a raise and leave. To be the best long-term, I'd think they'd need to show a history of following through on their goals. Candidate A most likely does not have a B.S. programming degree as he/she does not know anything about algorithms and data structures. Candidate B obviously does and was on a learning path prepared from a university, rather than self study.
The 2 candidates both have a place in the industry, but my pick would be Candidate B, because he/she has proven themselves they follow through with their goals and obviously learned something and will continue to learn in the future. Also, I'd choose a candidate from an average to hard program as they have proven problem solving skills; which is what we do.
|
|
|
|
|
B.S. programming degrees vary a lot according to university, region etc...
Today there are many universities that tell all about OOP, SOLID principles etc and yet the teachers themselves don't know much about algorithms... so you cant assume one is self-taught and the other isn't.
|
|
|
|
|
I would take B. As you need efficiency, it may not be enough to use the common algorithms so he will help you there. As for the OO/SOLID/Unit test things - those are easy (relatively) to learn, while learning the secrets of algorithms can be more complicated and may need some affinity+. Be straight and tell him all your concerns and learn what he have to tell about, if he is convincingly ready to learn you probably have the winning hand...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
Neither, because they are both figments of your imagination. If you ever do have the good fortune to meet such people in the future ensure that you breed with them.
|
|
|
|
|
I'm sorry but you aren't the right candidate at this time but would you care for a marriage with my daughter instead?
|
|
|
|
|
Candidate A appears to fit your requirement more closely. Whilst Candidate B has some great skills but has no proven coding ability. Given what you need B would require a longer learning curve to get up top speed. Further, how much of your work requires intimacy with and or creation of complex algorithms?
In any case, hire the one that fits best with the rest of your coders. Getting a good team culture going takes time and effort - bringing someone in who might disrupt that or not fit can be very damaging.
|
|
|
|
|
This looks to me a bit out reality. Like choice between car mechanic that can take engine apart and put it back blindfolded but has no idea how to drive and a perfect driver that can drift around town all day long but can't change a tire. They are two extremes unlikely to happen without anything in between.
But to answer your question I would hire the one that I enjoyed talking to more. The one that is friendlier and seems more team player as it would go a long farther way than any skill he has already.
--
"My software never has bugs. It just develops random features."
|
|
|
|
|
Candidate A.
You can teach algorithms. You can't teach extremely clean and readable code.
cheers
Chris Maunder
|
|
|
|
|
main(I,Il)
lOL*Il[];
{ FILE *L;
unsigned lO;
int Q,OL[' '^'0'],llO = EOF,
O=1,l=0,lll=O+O+O+l,OQ=056;
lOL*llL="%2x ";
(I != 1<<1&&(O1O(QI[0]),O10(1011-1010))),
((L = QLQ(Il[O],"r"))==0&&(O1O(QI[O],Il[O]),O10(O)));
lO = I-(O<<l<<O);
while (L-l,1)
{ QO0(Q = 0L;((Q &~(0x10-O))== l);
OL[Q++] = OlQ(L));
if (OL[0]==llO) break;
O1O("\0454x: ",lO);
if (I == (1<<1))
{ QO0(Q=Ol0(QI[O<<O<<1]);Q<Ol0(QI[0]);
Q++)O1O((OL[Q]!=llO)?llL:QI[lll],OL[Q]);
O1O(QI[lll]);{}
}
QO0 (Q=0L;Q<1<<1<<1<<1<<1;Q+=Q<0100)
{ (OL[Q]!=llO)?
((D(OL[Q])==0&&(*(OL+O1Q(Q-l))=OQ)),
OlO(OL[Q])):
OlO(1<<(1<<1<<1)<<1);
}
O1O(QI[01^10^9]);
lO+=Q+0+l;}
}
D(l) { return l>=' '&&l<='\~';
}
What are you trying to say?
In this present crisis, government is not the solution to our problem; government is the problem. ~ Ronald Reagan
|
|
|
|
|
cheers
Chris Maunder
|
|
|
|
|
Holy crap - is this your best work
|
|
|
|
|
I'd claim the opposite.
Algorithms require understanding.
Clean code only training.
|
|
|
|
|
Maybe we have different experiences
cheers
Chris Maunder
|
|
|
|
|
Well, they actually depend on each other. If you don't understand what you're doing, the code will certainly appear as unclean
|
|
|
|
|
Agreed, to add to that:
- Algorithms and data structures are topics easy to look up and teach.
- OO and SOLID concepts are somewhat abstract and open to interpretations, some people never get it, others take a long time to really understand how to leverage it. Much harder to teach.
- Clean and understandable code is on of the rarest trait to find. It's a gem and I would surely not waste it.
To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson
Our heads are round so our thoughts can change direction - Francis Picabia
|
|
|
|
|
That's who I'd for, but I'd add that most basic data structures have already got perfectly good implementations. You don't normally need to know how a HashMap works inside, only what circumstances that you should use it for.
|
|
|
|
|
The one with the big t*ts.
Because ...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Because the guy with the big t*ts looks like he spends more time at his desk?
This space for rent
|
|
|
|
|
I can't believe noone asked yet what the product is.
Are you building missile control systems, or a CMS?
I'd say that is quite important for choosing.
|
|
|
|
|
|
Not enough information.
I wanna be a eunuchs developer! Pass me a bread knife!
|
|
|
|
|
TheOnlyRealTodd wrote:
Candidate A...has the software engineering side of things down, but he knows nothing about algorithms or data structures... How is this even remotely possible? Perhaps he is not truly an engineer. I would further postulate that a programmer generally precedes an engineer, and a programmer most assuredly knows about algorithms and data structures.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Actually that's quite possible. Maybe it shouldn't be and they shouldn't be called engineers, but there are lots of self-called "Engineers" that actually barely know how to code, yet they are able to talk a lot on how to write maintainable code, unit tests etc... but somebody else probably needs to write the code for them if they are doing anything more complex than a "Hello world" application.
|
|
|
|
|
TheOnlyRealTodd wrote: You're a hiring manager
If you're one of these then you'd probably wouldnt have a clue as to what the difference is between the two so you'd hire the cheapest!
|
|
|
|
|
Hire the girl, they can be a pleasure to work with and we need some gender balance in our industry. If one is not a girl then throw em back until you get one.
Never underestimate the power of human stupidity
RAH
|
|
|
|