Why the New Guy Can't Code
theodp writes "'We've all lived the nightmare,' writes Jon Evans. 'A new developer shows up at work, and you try to be welcoming, but he can't seem to get up to speed; the questions he asks reveal basic ignorance; and his work, when it finally emerges, is so kludgey that it ultimately must be rewritten from scratch by more competent people.' Evans takes a stab at explaining why the new guy can't code when his interviewers and HR swear that they only hire above-average/A-level/top-1% people. Evans fingers the technical interview as the culprit, saying the skills required to pass today's industry-standard software interview are not those required to be a good software developer. Instead, Evans suggests: 'Don't interview anyone who hasn't accomplished anything. Ever. Certificates and degrees are not accomplishments; I mean real-world projects with real-world users. There is no excuse for software developers who don't have a site, app, or service they can point to and say, 'I did this, all by myself!' in a world where Google App Engine and Amazon Web Services have free service tiers, and it costs all of $25 to register as an Android developer and publish an app on the Android Market."
This reminds me of the old expression "I can't get the job because I don't have any experience, but how can I get experience if they don't give me a job?"
Yes, on your own, but it is still saying "don't hire someone directly out of school" without considering that there are some advantages to this, such as being able to integrate someone into your system, before they have had the chance to develop "bad habits".
Tequila: It's not just for breakfast anymore!
Well that is a good way to kill off the next generation and deplete the job pool ( and destroy the industry eventually )
If you ONLY talk to 'accomplished' candidates and never give the new guy a chance to come in and learn, at some point no one will have any expiration. ALL of us was the 'new guy' at one point in our life, even you..
---- Booth was a patriot ----
Even with a few Open-source projects under your belt for others to check out you might still be a crappy coder but at least they've got more chance to see what they're getting into.
The incompetent need to eat too. Why not mentor the moron. Maybe they will turn out to be Einstein.
If you don't have experience we won't hire you ? I might be naive, but isn't by getting a job you get the experience? Yes I do agree that you don't hire someone who just got out of college to code for the next super secret OS, but you can't expect everyone to be the that good right away.
The idea is that someone should have some sort of working code to present instead of having a certificate or degree.
It makes sense to me.
Firstly, why is this a nightmare? Who wants extra competition?
Secondly, "technical interview" is a misnomer. They're actually "potential colleague" interviews. Who is going to pick someone who is smarter than them, or who is going to give them competition for promotion?
Those who get through technical interviews are either smart enough to bluff to the interviewer that they're not quite as smart as the interviewer, but an ok guy to hang out with; or are genuinely not as smart or talented as the interviewer, but are an ok guy to hang out with.
Quick tip: when you attend a technical interview, answering the questions correctly doesn't get you the job. Being amazed at how much the interviewer knows does.
I usually say that it doesn't matter what you know, what matters is how fast you learn. Someone who you can teach and tell how to do things once, and they actually understand the message and do it right from then on is much more valuable in the long run then someone who has a (short and) static merit list in my opinion.
Life is Reality
Another good way to kill off the next generation is to get rid of all the experience 35+ yo. Remove all the mentors. Except for the indispensible techies who can't communicate well enough to mentor.
There is no excuse for software developers who don't have a site, app, or service they can point to and say, 'I did this, all by myself!' in a world where Google App Engine and Amazon Web Services have free service tiers, and it costs all of $25 to register as an Android developer and publish an app on the Android Market."
There is no excuse for self-proclaimed software authorities who don't know that software development covers much more than just Web-related or mobile apps. I've been developing software since before the Web was invented and I still don't have a website, I don't write apps for Android and there's no service on the Internet that I can point to and say "I did that all by myself!" I'm a systems programmer and I make a nice living writing code for embedded systems that make it possible for this Evan guy to post his ridiculous rants on the Internet.
I've been on interviews for programming jobs where they didn't ask any true technical questions. They only asked you to talk about what you have worked on in the past and questions about team work. Not surprisingly they had many programmers who couldn't develop anything.
Ok. So, I'm an 'A-level' developer and I just registered on Android for $25. Why should I work Jon Evans? I'll just sell my Android app and make a million bucks or at least enough to cover the rent and have enough left over for beer money.
Links
AND, shareware. It allowed me to "sharpen the saw" (as I have heard the term used before) when I wasn't in a job currently, & especially when I started out in Comp. Sci. related work in 1994, professionally, first of all... because I feel that when you're still "professionally 'green'", is when you need it, the most... I say that, because at that point, your toughest opponent is yourself really: You usually don't HAVE much, if any, "professional experience" out of the gate from academia!
Secondly, for what this article's about, in "being able to show something" but MORE IMPORTANTLY, something they could even TRY directly themselves by downloading & installing it!
Just to show something to someone looking to hire me on (even if the program wasn't DIRECTLY related to the job @ hand, which in my case, was usually information systems work (DB)).
Lastly - I don't think it's the "greatest idea" to ONLY be good in a certain area of computing, e.g. - programming ONLY for example. It's MUCH better to have a good all-around jack-of-all-trades in coding feel for it (meaning doing more than just say, website work OR database programming in SQL etc.)...
Yes - that includes knowing the hardware, & how to make it networked (if not inter-operable with other operating systems platforms also, when cross-platform programming via middleware over IP aren't part of it that is).
There have been times that for instance, because I knew the OS @ hand? It was simple work to use ITS FEATURES rather than try to muddle through some bad documentation on an API to make something work (which is, @ first, job #1 - Get it working, polish it up later, because deadline's coming etc.)
Anyhow - Doing more than just what you end up doing coding-wise for a job? Hey - it only adds to your resume & skillset when you learn more about this field as much as you can, in its rather gigantic entirety (so many facets etc.).
So, I suppose, as to what I'm trying to say on that last account here, that's about it.
(Plus, face it: You're probably into computing @ these levels because you enjoy it too... & it's fun knowing you've learned something that made you that little bit more knowledgeable also).
APK
P.S.=> In any event, because I did that? Later, circa 1996-1999, because I did some freeware that did well for a certain company??
I even got lucky & had some of my code "bought out" by companies doing commercially sold wares in the end too (bonus!), & it went to MS-Tech Ed 2000-2002 as a finalist in its hardest category: SQLServer Performance Enhancement!
That, of all things, I think helped the most in my "earlier days" programming (as far as job seeking went & having that "something to show for it" per this article's topic)
... apk
FTFA
We’ve all lived the nightmare. A new developer shows up at work, and you try to be welcoming, but he1 can’t seem to get up to speed; the questions he asks reveal basic ignorance; and his work, when it finally emerges, is so kludgey that it ultimately must be rewritten from scratch by more competent people. And yet his interviewers—and/or the HR department, if your company has been infested by that bureaucratic parasite—swear that they only hire above-average/A-level/top-1% people. ....
1 - Yes, I am being deliberately sexist here, because in my experience those women who write code are consistently good at it.
I know it's socially cool to be anti-male, but come on.
You should be able to point to some project you have completed; I don't think he was talking about 5-6 years of experience. If you haven't actually finished anything of consequence, then you are going to have a large ramp up to actually producing something. In software you can do a small scale project on your own or with a few friends and get it out for next to nothing.
I think coming into a job with at least a little experience is pretty critical. You don't have nearly as long of a ramp-up period, which makes your co-workers and employer happier, and you don't get cast as the "stupid new guy", a role which you may never be able to shake.
I have been lead on several projects and modules. I've even been in the position of being the only one to fully understand a system or module. I've rarely been the only one who ever worked on a system and I would never EVER claim it was all me. There is ALWAYS someone else involved, even if I was the guy who put it all together AND I will actively try to spread the knowledge so that if I'm hit by a bus you don't have to re-write the damn thing.
So if you don't want to hire people who say they did it all by themselves you won't be hiring anyone who's a team player or anyone who wants to share the knowledge. You'll only get arrogant unprofessional jerks who think they're irreplaceable and actively try to make themselves irreplaceable. Good luck with that!
Try hiring people who can say they've been lead on a project, been the guy on the floor on the implementation weekend etc. If their old boss could count on their technical and people skills chances are so can you.
These posts express my own personal views, not those of my employer
A friend of mine was interviewing for a php position was asked the following apparently no brainer question.
"if 1 = 5,
2= 25
3 = 125
4 = 625
what is 5 = ?"
naturally he calculated out the fifth power of 5 as his answer and presented it. The interviewer put on a smug smile and declared the answer was '1' because he already stated that 1=5 (which was supposed to be cumulative or something).
I would have laughed my head off at the interviewer and walked out but my friend was polite enough to complete it.
If someone who's clever enough and can program is still a drag on productivity then it sounds like a problem of technical management in providing appropriate tasks, guidance and training. If you're in need of urgent productive programming (and / or you're a small start-up - *maybe*) then, yes, hire someone with substantial experience so you get returns quickly. Otherwise, it's your job to train them in stuff they might not know. Industry used to be responsible for training and educating workers appropriately beyond their academic career.
New guys do not get senior pay. People with experience usually command higher wages.
You can get people out of school fairly priced to their abilities. That fair price can be significantly under what an accomplished senior engineer will make.
The best question is, "Who are you fishing for and why?"
Hopefully your company is willing to spend the coin for the experience implied by this article.
If not, your company may see the time slow down as worth it. From an investment side, management must consider timing of future cashflows and likelihood they will arrive (risk). Slow and steady can win the race, despite how frustrating it can be to 'bring someone else up to speed.'
So I went to click on the link to get more details--except there's no link. For example, exactly what is wrong with the interview process, and why can't the guy actually code? Instead, I get a lame rant about Johnny can't code because he doesn't have a web site, he went to college, and HR sucks?
Seriously lame.
Hopefully the comments will be better. Imagine that, I actually wanted to read TFA for once!
And what if you have accomplished a lot, but they're not public anywhere?
I think his whole point is that the barrier to entry is now so low that college and even high-school kids can easily have a number of high-quality apps out by the time they're ready to get a job.
This is a good way of filtering out people who're book smart but not really motivated or enthusiastic about it.
Years back we needed people for a project involving formatting documents in Word and some scripting. We started out with requesting for peple that know office and did some programming. these people were more expensive and were mediocre at best. We dropped them all, and requested some random people with 'computer literacy', we requested 3 times as much as needed, with the understanding that we would drop 2 thirds within a week.
We did a day training and let them work on the most simple documents, we sifted through a third within 2 day's, most of them just finished students that were looking for a job, but were not able to find a job in their field (mathematician, chemists), and some high school dropouts. At the end of the week we had 10 people we did the project with, a few of them stuck around after the project for several months or years to become projectleaders, surprising programmers and 'MSWord Wizzards'.
The students were afaik able to get a job in their field of choice after working with us.
And the best part: It was a sound business decision.
If you apply for a job as a graphics designer, then you are expected to bring along a portfolio of your work. For people just starting out, this probably won't include [m]any commercial pieces, but it will include sketches and other things that you've done in your own time. The same is true in most creative professions, and absolutely should be in software development. This isn't a new idea, by the way, this was one of the suggestions for recruiting in PeopleWare, back in the '70s.
If you want to get a job programming, but have never written any software that you've published, then you are probably not worth hiring. There are other people who have written a shareware game, contributed to an open source project, published a mobile phone application, or whatever. The tools required to acquire this experience are free, and if you're not willing to devote some of your time to it then you are probably going to be a waste of everyone else's time if you are hired.
I am TheRaven on Soylent News
Most of the programmers I've interviewed had good CV material - it's easy to manufacture that. About 2% could actually write C++ in a high pressure commercial environment. Some of the just plain crack up on the job ...
The purpose of existence is to make money.
Frankly, I find the macho demands to 'only ever hire the best' to be absolutely laughable. Pretty-much every position demands 'elite' - and, assuming these roles are eventually filled, it stands to reason that not only will most employes not be 'elite' - but a fair proportion -possibly about half- will be below average commercial developers... that is, assuming that it even makes sense to try to order developers by generic capability.
Hiring a developer, as with many hiring conundrums, is very tricky. Quite often, the hiring manager does not have the knowedge him/herself to assess candidates - or, if they think they do, their hands-on experience is so woefully out-of-date, the demanding questions they dream up simply aren't relevant today, so do not feature in the experiences of the most suitable candidates. To make matters worse, I see an over-dependence on 'quiz' style tests... which are preposterous as they raise only a small range of challenges - all of which could, in real life, be best answered in the context of reference material - but for which the test is one of rote learning... This actually swings assessment in favour of those who've spent their time learning the tests rather than enaging on productive challenging work in the past.
Another huge blunder I see over-and-over again is to assume a large number of years' experience with a particular narrow technology is beneficial. In practice, the competent developers are likely to have moved on several times - leaving behind a blinkered minority with little or no interest in keeping their skillset up-to-date. The final blunder I see is in managing developers - which is relevant as it is often the managers who do the hiring. There's a popular perception that technically tallented people lack social skills - and need to be treated 'specially' - which is (IMHO) balloney. The reason that management of developers can be hard is that there's a lack of willingness to enage with developers and to embrace their wider insights. Sure, they might be the only expert in technology X - but that doesn't mean that this need be their exclusive domain. In a healthy environment, new skills are learned and, through collaboration, ideas are effectively communicated and positve reuslts eventually emerge. Sadly, in my experience, this is a rare occurrence... but not one where the main barrier is developer competence.
IT people are no more qualified to select new candidate than HR. Seriously, HR nail the right candidate 5% of the time. The remaining 95% is being filtered by the probation (trial) period. You would be surprised at how many qualified programmers still do crappy code. Or can't pass selection by overzealous HR.
To "Don't interview anyone who hasn't accomplished anything. Ever. Certificates and degrees are not accomplishments"
I answer : "Keep looking and good luck."
It was your job to figure out that he could not code and you are complaining about not doing your job. I have no sympathy.
Isn't this old hat? Doesn't everyone ask for a code sample?
I feel however that 'I did this, all by myself!' isn't the best metric.
I'd rather hire the kid who's code sample consists of fixing 5 memory leaks in 5 different open source libraries. He'll write solid code.
I'd rather not hire as a "coder" the kid who's website took him 40 hours in photoshop, several hours configuring Drupal, and another several hours writing a Drupal extension that should've taken him 20 min. He might be more artist than programmer.
In fact, that's a pretty good interview tactic : Ask them in advance to find & fix a memory leak in some open source C library so they can explain it at the interview. Hint : Find a crap library with many leaks.
The Christian religion has been and still is the principal enemy of moral progress in the world. -- Bertrand Russell
Wow, a footnote devoted to a dig about Hungarian Notation, with a link to Wikipedia, and a display of complete ignorance of the subject. The Wikipedia article that he went to the trouble of linking to, while deriding the inventor of the notation, tells you that there are two forms, Apps Hungarian and Systems Hungarian, and no doubt goes on to tell you that the person that he is deriding invented Apps Hungarian. The point of this notation is to include units in variable names. For example, you might prefix a length with m or ft to indicate the units, or an index with row or col. It's then completely obvious that an expression like mHeight -= ftDistance is wrong. This is a very sensible convention and eliminates some very expensive yet simple to fix bugs. The author of the article calls it 'probably the dumbest widely-promulgated idea in the history of the field', which makes me quite glad that I don't work with him.
He's probably thinking of Systems Hungarian, which is what happened when the systems group at Microsoft got ahold of the idea and started prefixing things with their types (language types, not semantic types), which is completely redundant information.
I am TheRaven on Soylent News
There are definitely some people out there who are annoyingly incapable and inept. Cert chasers and the like don't even realize they are what they are -- they were sold on the belief that if they attend and complete classes, that they will somehow have ability and knowledge. (I think I will take a class on weghtlifting and compete in Mr. Universe. or something...) Worse, I have never seen one of these people "become" a skilled and seasoned professional later on.
Success invariably hinges on a person's ability to think, learn and understand in the ways needed for their profession to be effective. Those are things that are difficult, if not impossible to measure by someone who doesn't have an in-depth understanding of the materials themselves. And yet, all too often, the people who are in charge of hiring such people are the very people who are completely unqualified to make such assessments. (Of course, this idealism ignores that politics can get many people around the requirements of skills, knowledge and understanding.)
Lack of shame is another problem that these unqualified employees display... or is lack of shame OUR perception? I know I would feel shame if I inserted myself into a situation where I was not qualified. But maybe that's just me and a bunch of other like-minded geeks here on slashdot. (Then again, when I insert my opinions here and someone with greater knowledge calls me an idiot, I don't often feel much shame... though some form of hate or anger results at times.)
I guess what I am getting at is that no matter what level you or another are at, someone else will be better or worse. There's a great thing about humans, as it turns out, though -- we are good at teaching each other things -- from what I have learned recently, that seems to be the "one thing" that humans have that other animals don't -- and we have the capacity to build on knowledge from our predecessors. But this knowledge is important for growth -- people with academic backgrounds have their place. ("Relevance" of academic knowledge is another matter though.)
I definitely identify with the problem and the solution(s) depends on the individuals with the problems. Sometimes "giving them enough rope" is the best answer. Other times, coaching them over their deficiencies is the best way. It's always a tough call.
i studied computer programming in high school but because of attitudes like this never got a job and never got experience and have moved on with my life. Enjoy the jolt cola and your every increasing belly fat ya smug jerks.
The barrier to entry hasn't been particularly high for a long time. In the '80s, most computers came with developer tools. If you were interested in programming, you probably wrote a few little games or utilities, and you may have released some as shareware. You might even have kept the cheque from the one person who ever registered it...
I am TheRaven on Soylent News
"Experience" is far too subjective of a measure of a developer's talent.
Let me give you an example that I ran into about a year ago when hiring for a Java web development position. We had one candidate who was an "experienced Ruby on Rails developer", but didn't know Java. He had several years experience developing web sites with Rails, and he said he was willing to learn, so we gave him a chance.
During a technical interview, he offered to show us a Rails web site he'd created earlier. There were three of us interviewing him, so we all loaded up his site in our browsers on our laptops at the same time, and soon enough it started crashing. Instead of wanted to fix it, or at least being embarrassed, he tried to justify why it was okay that his web site was crashing under very minimal load. He blamed Ruby, he blamed Rails, he blamed Linux, he blamed MySQL, he blamed his hosting provider, and he even blamed us for "stressing it too much". He didn't once consider that maybe the problem was due to something he'd done. He was sure that it wasn't his fault.
At that point we knew that he wasn't a suitable candidate for the position. Although he had the experience, his attitude and abilities weren't up to par. Normally, we thank the person at this point, and we go our separate ways. Unbelievably, in this case, this fellow started crying when we told him that we didn't think it'd work out. He was wailing stuff like, "No! It's not my fault! The application is perfect! It's Ruby on Rails! It's Ruby on Rails!"
It was truly absurd. Since then, we rarely consider people who have used Ruby on Rails in the past. They may claim to be "experienced", but it's not experience in any traditional sense, and has no value to those of us doing real work.
Whether they did or not.
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
The North American educational system (US and Canada) has become an expensive failure. Having worked in a major university, I have long agreed with Thiel's assessment (http://www.economist.com/blogs/schumpeter/2011/04/higher-education_bubble_0) that the NA educational system is a catastrophic bubble.
Students aren't learning thinking, reading, writing, and speaking, nevermind technological skills. But there are profound sociological reasons for this.
If companies want skills, they are going to have to invest more in people and provide the training. So my question to the leadership of these companies is, how much do you really intend to invest in your people?
If the computer industry wants happier, more loyal employees, it must start treating people better. And despite the characteristic frustration of Software Manager X and self-indulgent programmers everywhere, the truth is that the senior management of software companies understands the economics of software development very well.
Rich And Stupid is not so bad as Working For Rich And Stupid.
this is a horrible, horrible elitist and unrealistic concept. Instead, find someone with passion and man up as a leader to help mold them to be great. Why is this person even working alone at all? Pair them up and help them learn to be a part of your unique group! Follow the apprentice/journeyman/master model....
I'd rather get a n00b who wants to be great than someone who hacked out a project on his own without ever being an active partner.
It's a strange world -- let's keep it that way
The impression i got was that he wanted you to be established and a proven track record first. Not just that you have done 'something cool'...
When i went to college you did have to do small scale projects on your own, and in groups, ( various disciplines, since I'm an EE and not a CS major ) and i get the feeling that none of that would matter to this guy. He wants you to be out in the field for years and have a bunch of stuff in your portfolio that you can hold up and shout 'this is mine'. Of course, if you happen to work where your projects are proprietary or classified, then you cant show him anything anyway and its back to blind faith that you have skills...
---- Booth was a patriot ----
I am sure that there are many capable software engineers rejected by places like Google and Microsoft. In some ways these places build a type of mono culture by trying to fit the same evaluation technique to everyone. Everybody's different. In the end an interviewer has to go on his/her gut feel.
Some of us are embedded developers, you insensitive clod!
Gee, let me publish my jet engine fuel flow monitoring application on Android Market. Not.
I am very small, utmostly microscopic.
Fantastic! First thing you'll need to do....is emigrate. Emigrate, get naturalized, and when your desperate enough to work for cents on the dollar under hellish conditions, then, maybe, you just MIGHT be employable to corporate employers. THIS is the state of employment in the U.S. at this time.
Good luck.
If you want to get a job programming, but have never written any software that you've published, then you are probably not worth hiring.
"...as a marketroid.", that's what you meant to finish that sentence with, right? There are plenty of geeks out there who write code and build electronic gadgets for the challenge of seeing if they accomplish something very specific or simply to deal with some issue that they were having.
I've written countless little programs, especially when I was in HS and college back in the mid-'90s and there weren't quite as many open source *nix programs to do just about everything available (at least not full-featured such), to solve little problems I've had or just to prove to myself that I could write an implementation of algorithm Foo for a Bar program. None of those little programs were meant to be published, nor were they suitable for publishing. Why not? Was I a bad developer? No, I just cared about writing code, not about "publishing my software for a world-wide market so that I could maximize the profitability of my skill-set while simultaneously building a professional portfolio that would allow me to future-proof my earning potential on the GZZZK! BUZZWORD OVERLOAD! SHUTTING DOWN!"...
I, for one, would like to take a look.
I am very small, utmostly microscopic.
OK. I'm a community college student and I plan on transferring to a UC and getting my Software Engineering degree. I'm pretty lazy and have a busy life, so I don't plan on wasting my time on crap I don't have to. These companies better hire me fresh out of college. Assholes. Oh wait. I'm pretty high right now so I forgot the beginning of the story says they want to change it, not they're going to change it. Ah.... relaxed....now...
It's ridiculously easy to be tricked, as an interviewer, in technical interviews. Tricked in both directions. Some people are stupendous programmers, but they have to look up everything (ever been asked to create a COM+ object from scratch without use of MSDN or the internet? Even a competent programming genius can have problems with this). Others will bring you code samples and say "I wrote this" and explain it in great detail, only to reveal later that someone wrote it for them and coached them through the whole thing (yes, this happened to me, dammit!)(but she was VERY cute). The same goes for "pointing to apps they created." Unscrupulous people would point you to plagiarized stuff. It's WAY too easy to take credit for other people's work, or app storefronts. The only REAL way to hire people and know their skills is to hire by trial. My favorite two ways of hiring are giving the candidates a competition task. I.e., write an app that does this. Then review the code. It's quicker, but a LOT of work for the interviewer reviewing the code if the task is easy enough and everyone completes it. The other way to hire by trial is simply bring them on as a temporary employee (1099) until they prove their worth. This is the method that works out for me the best, although some interviewee's are skeptical, most of the good ones don't seem to have a problem with this.
Hey, I'M not the one claiming to be a super genius! ;-)
I am very small, utmostly microscopic.
Go into art or literature and get laid.
Go into IT or science and watch your cock shrivel.
Simple why people won't bother with IT anymore.
It's free to get sued for software patent infringement. And, your prior employers don't necessarily take it well if you are running around sporting their code during job interviews.
Anyways, it sounds like the same problem that occurs when hiring management. People are really hired because they pump up the ego's of administrators, executives, and managers they bump into as part of competing for the position, not because they actually know what they are doing. They look good and talk a good game. Hell, who wants another dark and whiny neck-beard anyway? He looks and smells funny. He acts like he has some kind of mental problem, like "introversion." (...that's sarcasm guys!) He makes you feel dumb by talking about stuff you don't understand anyway. He works harder, has better results with less resources and effort, and puts in longer hours, and that makes you look bad. Just hire the charismatic guy and you can slap each other's back and talk about normal stuff like sports, cars, boats, and bonuses.
Oh, it's worth pointing out that a lot of the really horrid ones will just fake credentials, like mail order degrees, fake references, and the like. It's not that hard to copy an obscure open source program and slap your name on it. Usually, the more charismatic the person, the less likely the hiring committee will scrutinize the veracity of the claims made, due to impatience and likability (basically, an impulse purchase.)
Any sufficiently advanced influence is indistinguishable from control.
I think this advice is good in most cases, but there are some cases where it might not be applicable.
This might be good advice for people fresh out of school, but I'd like to point out that some companies make it difficult for people to do anything public outside of work.
Also, not everyone is interested in web work. In those cases, I'd expect those people to have blogs where they discuss their projects, show code and relate experiences.
Another issue is that certain school programs are pretty demanding and don't leave much time for work outside. A prospective employee going through one of these schools might be also doing internships at one of the companies that don't allow you to do work outside.
In all these cases, the prospective employee should have code that they can show and explain, a portfolio.
If you find, after interviews, that you're hiring candidates who lack some particular skill X, then the solution is to find a way to test for that skill IN PERSON. Any other means leaves you wide open to the hordes of people who will find some way to fake it the moment it becomes understood that something is required. If your interviewers consistently return duds, you need to hone their techniques or have someone else do the interviews.
It comes down to this:
Are you asking questions that display knowledge or programming techniques, or just obscure language trivia?
Are you relying too heavily on generic (non-programming) problem solving questions?
Hand them a spec for a small code sample. Something that will take 15-20 minutes to write. After you review it, change some part of the spec and ask them how this would alter their approach.
William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
Unfortunately, unlike an artist or musician or copywriter, most programmers' finest work isn't intended to be publicly shown, since it may be regarded as a trade secret. Which puts both employers and coders in a bad position. And while a personal website may be useful to demonstrate certain talent, it won't help showcase work in proprietary languages for which one may be seeking employment.
But my ex-boss told me that I can and should hire 9 highly educated (we'll, highly degree'd) software engineers in China for every guy I laid in the US.
Do we really have to show that they individually accomplished something? Or is some piece of paper with pHd written on it enough?
This is why IT needs apprenticeships not 4 years in school just to get a job.
You don't need a 4 year degree to get into plumbing and even if there is some school it's a lot more hands on that most CS classes.
The Interns system needs changes like Must be payed and must be real work no office office boy / copy boy / janitor type Interns.
apprenticeships can give real IT / tech skill that are not in books / not in the certification test.
The tech schools are better then the old fashioned colleges with being more hands on and more up to date then other colleges but HR does not like them or people who don't have any degrees. Also community college have more of tech school like classes as well. But the apprenticeships system seems to be better for IT.
I'm an Electronic Engineer, ....if I want to go into software ...
You're an engineer who is thinking of going into programming?!
You may be smart, but you sir, are a damn fool!
If you really want to be in software, stick with embedded or any of the low level nuts and bolts programming.
Web, mobile and every other application development is a capricious market and a commodity expertise.
You can do the programming, but programmers/CS people can't do the engineering. And once you become a "software guy" there's no going back.
developing websites and apps is basically free.
For a web site, you need a domain and hosting. Firesheep has made HTTP obsolete for any site that takes contributions from its users, so now you need an SSL certificate. Internet Explorer on Windows XP doesn't support SNI, without which name-based virtual hosting for SSL sites is impossible, so you need an IPv4 address. Those aren't exactly free, especially now that IPv4 addresses have officially run out.
As for an application, not all kinds of applications run on Android, and there isn't a single market that serves both AT&T phones and Archos tablets.
Software is one of those industries which is moving so fast that being anchored in the past is a huge disadvantage. If you're young and have a "mentor" who is over 35 I think you're going to hear a lot of prejudice against the good new ideas, and that they will want you to learn what that they can continue to mentor you in, not what's most relevant or useful.
When it comes to software the only thing you can really trust is your own hard won experience. It'll probably me also resist change when I'm older, but if I don't follow it now I'll just miss out and delay progress.
// MD_Update(&m,buf,j);
go underground...
For justice, we must go to Don Corleone
What metric do you use to determine which candidates will make good junior developers?
You heard that people can completely change their field of work throughout in life? It's like those music elitists saying "if you didn't start learning musical instruments at the age of four, you will never achieve anything". This is bullshit.
This "don't hire anyone without experience" is a pretty smart rule if one employer does it, but a really really dumb rule if every employer does it.
If every employer discriminates against those with professional experience, the labor force will have to become self-employed. Watch software engineering and computer science majors go down and business administration majors go up.
In the '80s, most computers came with developer tools.
And in the 1990s, they did not. Neither Windows nor classic Mac OS came with a compiler; one had to buy a copy of CodeWarrior or Turbo C++ or whatever they called it back then, often at inflated prices comparable to those of modern-day Microsoft Visual Studio Professional unless your school happened to be in a compiler publisher's academic discount program.
why the new guy can't code when his interviewers and HR swear that they only hire above-average/A-level/top-1% people.
Human Resources has nothing to do with filtering candidates, except possibly at the coarsest of levels. HR doesn't make decisions about hiring or firing. All they do is manage payroll and group benefits and stuff like that. What would they know about the skills and experience needed for being able to code well? Hiring and firing decisions are made by the head of the department. If he or she is winding up with people who can't code, then the blame belongs squarely with the interviewers and the interview process, not HR.
When our name is on the back of your car, we're behind you all the way!
When you take a new guy, immediately stick him on your most critical project and then start bitching about his code and re-writing what he does, what's really going on is you're being a bunch of drama queens. I'm not sure how groups of programmers got like this but I see it all the time and it's ridiculous. Management doesn't want to offend you by telling you you're acting like a bunch of stuck up bitches on your periods but that's exactly what you're doing. Knowing the syntax of the language you're coding in is not the only thing going on at work... knowing the ins and outs of the company is at least 1/2 the job and they're not going to know that sort of stuff for months. "OMG Pete is trying to hit the ODBC on the corp server on port 3412! What a rube!!" or "He pulled the employee table down from the exchange server instead of using the Emp_Agent table on oracle3!!!"
Just because you and the rest of your hen house have been working together for 4 long years and have your little click doesn't mean you have to treat the new guy like shit. You were a retard once as well. Put him on non-critical projects for a while, let him figure out how YOU do things, figure out who are the right people to ask questions to so he can avoid the dickheads and after he proves himself let him work on the big stuff.
Well that is a good way to kill off the next generation and deplete the job pool ( and destroy the industry eventually )
Read closer. He's not saying "Don't interview someone who hasn't worked before," he's saying "Don't interview someone who hasn't contributed to FOSS project, posted code to an "app store," or otherwise demonstrated interest in coding beyond solving homework problems. The barriers to releasing code today are absolutely trivial, so he's suggesting that the main reason a prospective employee would _not_ have code is that he just doesn't care. His point is that coding for business is different than coding done in school. They require some similar skills - or at least similar knowledge in the sense of language syntax - but real life isn't CS 101.
CS programs are huge; there are a lot of new graduates. Entry level job searches get lots of applicants, and you have to wade through them somehow. Author is suggesting that GPA is not a good metric. Author is suggesting that "riddle" type questions, that were designed to figure out whether the A student could actually think for himself or if he's just a good memorizer, are not good metrics. Author is suggesting that having taken the interest and time to participate in an actual, real-world programming project is a good metric.
Depending on the job I would say yes, I agree with the article when it comes to high-level programming skills. But if its a low-level "entry" position, I'd say no. I've seen both sides of the issue, both as a person trying to learn the skills and craft, and as the "old-timer" helping HR hire a new person. If the skills needed are basic "idiot proof" skills, then why not hire the kid fresh out of school? It's only when you need the person who has the "mad skilz" when you really have to be careful. More places need to actually test their skills by having the potential employee do some actual code. My last job had set up a computer that was off the network and could only access the internet. I was given a series of tasks to complete in a set amount of time, so that they could actually see my coding skills. Not many of the places I've interviewed at actually tested my abilities. I'd have to say that there is where the problem lies. Not enough HR folks have the sense to bring in the IT group to help Test the potential new hires.
Goran
Carpe Scrotum - The only way to deal with your competition.
There are other people who have written a shareware game, contributed to an open source project, published a mobile phone application, or whatever. The tools required to acquire this experience are free
The mobile phone that I own is an Audiovox 8610, which appears not to take applications that aren't purchased from Virgin Mobile USA's store. Anything more than a flip phone appears to need a contract. How are the tools to test a mobile phone application before publishing it free?
For a Windows application not signed with an Authenticode certificate, Internet Explorer 9's new "SmartScreen application reputation" feature will warn that the application "is not commonly downloaded and could harm your computer" and strongly recommend that the user delete it without opening it. But as far as I know, Authenticode CAs charge $200 per year and do not issue certificates to individuals. How are incorporation papers and the Authenticode certificate free?
I taught a summer session of 'Anatomy and Physiology II' last summer, and the quality of the students was pathetic. None of them knew how to process information. They could memorize (poorly) bits of facts, but they couldn't put the facts together. ABO groupings and their antibodies is not conceptually difficult, yet half of the class missed simple questions (I didn't go into subgroups of ABO. I've seen an A Positive patient that had anti-A. They were an A2 subgroup with anti-A1, which was really interesting!) They only wanted to know exactly what was going to be on the test. They wanted extra credit to allow them to improve their grade. My only concern was that they learn the material (which they didn't do very well). I didn't give extra credit, but I did allow them to take a new examination over the material. Even when questions were re-used, and had been discussed in class, they'd answer incorrectly. And these are the new nurses that are going to be taking care of us.
I'm afraid, very afraid!
If you admin a small software company, as a strategy to survive, is it better to pay according to the average, or a bit lower, of the universe you're working on so that you can have lower prices for your costumers and gain some advantage against your competitors? Or is it smarter to bet on quality, pay above average but also have a more expensive product to balance the budget, have better programmers, have a better product and build an image of quality for the stuff you produce? If you follow the second path, your employees will be earning more than in other companies so i think they wouldn't move jobs as much, so it would make more sense to train them. Is this naive or utopic?
Sig? Heil
What you should ask is 'Show me something you have done before'. period. prior work, shows the guy. even if s/he is someone fresh out of school, s/he will have done things out of his/her school projects.
Read radical news here
"...as a marketroid.", that's what you meant to finish that sentence with, right?
Being a marketroid, or in other words having the skill to make a product more marketable happens to be a skill that employers value.
There are plenty of geeks out there who write code and build electronic gadgets for the challenge of seeing if they accomplish something very specific or simply to deal with some issue that they were having.
Then surely they've shared that code or that schematic on a web site, or why not?
This is so right - like experience told me and at the same time so wrong because the 'new guys' need to be coached before they start to make sense in a existing project.
New guys do not get senior pay.
But do new guys get more than a given country's minimum wage?
From an investment side, management must consider timing of future cashflows
Even when investors are looking for results in 90 days?
Has anyone noticed how the education-to-job system has been setup to fail?
We have an open-ended education system in north america, where you can choose anything you please, but have no prospect of being hired
We have jobs that only look for paper certifications, not experience.
Yet all these places hiring wind up outsourcing because they can't find experienced qualified people? Why is this?
Maybe things need to work in reverse. It could work, but it would probably run afoul of anti-regulation people:
1. In order for a job to be advertised, it must list all REQUIRED certifications, AND where the job recommends getting it from.
2. In order for a education degree/certification program to be advertised, they MUST list their requirements AND jobs (see 1) currently recommending them.
3. If the job then turns down someone who has the REQUIRED certification, particularly from where the job indicated, then the job must indicate something other than "someone better qualified", eg they must explain the exact reason why that certification was not accepted. If the answer is "we hired someone with 4 years more experience than you with the same qualification, who lives here." that would be acceptable. The job must then remove that hiring request from all published sources within 48 hours since they are no longer hiring.
4. If the applicant discovers that the application is still up after 2 weeks, they can request to be re-interviewed, and the job must give them another interview. Maybe they have gained more experience since the last time, or maybe the last interviewer was an asshole, who knows.
In doing so, the job has to put the required certifications, or add/remove requirements to so that re-interviewing over/underqualified applicants will not be necessary. A job can not advertise a requirement and then not say where/how to get it. Likewise a school can not advertise a program is in demand unless it really is.
Too many jobs do this:
1. Advertise the same job, over and over and over on craigslist, monster.com and the like
2. Reject everyone with "sorry someone more qualified was considered", yet the put the job right back up a few days later.
The closest job to me right now, a 7 minute walk away, has been advertising the same job for a good year, and everytime I apply, same "someone more qualified" form letter is sent. It wouldn't annoy me so much if it wasn't for the fact they keep relisting it.
The point is, that if you want someone with experience, you strip off the certification/degree requirement and replace it with experience, and list only the software that you actively use... not the "nice to have" If there is no one person out there with experience in all of those software products, then hire two people at half the price and split the knowledge down between people with experience with most of the products. Like in open source, if you need someone that knows PERL and someone that knows SQL (mySQL) , chances are there are people who know both, but when you throw PHP on top, and html, then you start narrowing things down. This is just an example, but there have been jobs that I looked at and looked no further when I couldn't even figure out what obscure internal application they were using was.
I won't waste your time if you don't waste mine.
The summary suggests that the problem is new people being hired without minimum experience to stay afloat and takes a turn to suggest that it's the new person's fault. Let's look at the whole picture:
1) New person graduated college, student loans require paying off and thus a job. If you won't hire the kid, who will?
2) HR is held to a variety of Key Performance Indicators (KPI) and will typically only report discrete numerical measurable stats because that's all upper management cares about or "has time for". Time employed at company, time to post opening, time to interview, number of candidates interviews, time to hire, and time to start are all the relevant KPIs. There is no common KPI that says, "Sufficiently experienced to work with group" or "number of quality projects verified" because those measure the value of the candidate and not the HR department. So the HR department has to fight for its own funding survival and thus gets things wrong frequently in the corporate world.HR is measured the wrong way and they shift their focus to the measurement.
3) Careers are learning environments. If you hire someone that already knows everything for a position that is not management, he will soon be leaving you for a management or higher paying position.The adequately and overqualified will very frequently just take "jobs" just to stay afloat financially and continue to seek work that pays more and is more challenging. This is where highering "young and dumb" can be an advantage. They are eager to learn, eager to please, and loyal.
Nobody wants to hire a person with less experience and then the employers complain that people lie on their resume. Of course people have to lie about their experience on their resume if they can't find a job for months because every employer wants more number of years of experience than they have.
Back when I was the new guy, I didn't expect anybody to hire me for knowing nothing. Whenever I'm the new guy at something, I try to learn it. In programming, learning is by doing, especially by participating in community projects where you learn team skills as well. Why would any company hire someone who has nothing to show but a fucking degree that his daddy could have bought him?
What the hell did they code that is so pervasive today? Don't dis the "new guy" if you aren't an american coder.
Then surely they've shared that code or that schematic on a web site, or why not?
Why? If they derive joy from coding and building things this does not inherently bring with it that they must also feel the need to share this code. Or maybe they've shared little snippets of code, helped others on some forum or usenet but that doesn't mean they've dumped entire tarballs with a finished piece of software ready for use by others somewhere.
I wonder why did the HTML tags in your post come out quoted?
I mean, instead of:
Who is going to pick someone who is smarter than them, or who is going to give them competition for promotion?
Which is what you get if you write:
<quote><p>Who is going to pick someone who is smarter than them, or who is going to give them competition for promotion?</p></quote>
Your posts shows the html tags, as if the edit box contained:
<quote><p>Who is going to pick someone who is smarter than them, or who is going to give them competition for promotion?</p></quote>
Did you do it on purpose? I'm asking partly because it made me really curious, and partly because I suspect that not everyone else writes their posts with HTML tags.
This post contains no rudeness or derision of any kind. All arguments are friendly. Terms and exclusions may apply.
I think the original article misses the real problem. No one steps into a job knowing everything they need to know, how the system works and how to write code to your standards. You have to teach them that, mentor them and groom them into working the way you want in your environment. This is why internships are so useful and important.
If the new guy on the team is finishing their work and handing it over to you and you realize you have to re-write it all from scratch that's as much the fault of the supervisor as it is of the new guy. There obviously weren't regular check-ins on progress, no testing of small pieces as the project progressed. Hiring experienced people helps, but it's not a substitute for good communication and proper team work.
Author is suggesting that having taken the interest and time to participate in an actual, real-world programming project is a good metric.
The problem is that the author's definition of a "real-world programming project" has an artificial limitation to its scope. How many developers who coded in their pre-teen and teen years can honestly say that they ever published even 5% of the code they wrote for the world to see? How many could honestly say that they consider even 5% of the code they wrote to be suitable for publication? (much like a lot of in-house code most developers end up working on code for personal projects has a tendency to be a lot less general-purpose than code released for sale or as open source).
Not to mention that if most of what you wrote is some kind of back-end code it's probably not that easy to show it off as a website or a smartphone app...
Greylisting is to SMTP as NAT is to IPv4
Why the new guy can't code:
"but he can't seem to get up to speed; the questions he asks reveal basic ignorance; and his work, when it finally emerges, is so kludgey that it ultimately must be rewritten from scratch by more competent people"
Because he's still in the "asking questions" phase, and you're already expecting output and judging him. Intelligence-based jobs require building a (fairly complete and coherent) mental model before new work can be produced based on that model. The more intelligent and diligent the worker, the more questions they will ask, and the more complex the mental model will be.
You might want results sooner. If so, the quality vs. time vs. budget rule applies.
You might want it better and sooner. If so, the you're an ass rule applies.
The number one guideline to learn is: hire a guy based on his track record. But, once you've decided he's good enough, treat him as ALREADY a complete part of the team. He's NO LONGER The new guy. He's experienced, competent, and part of your organisation. If something's not working for him, then give him time to get it working, or ask why the ORGANISATION isn't working -- NOT what's wrong the the guy you already decided was good enough. If you can't do this, don't hire ANYONE.
..as a programmer?
That question is one of the best filtering questions around.
I'm god, but it's a bit of a drag really...
yet there's no shortage of free hosting sites out there
The last time I checked, most of the free hosting sites had problems unique to free hosting:
If you were faced with these problems, which again are unique to free hosting, how would you work around them?
if demand is that high then you can probably get the money to buy some cheap hosting.
Where would you get enough money for (Perl or PHP or Python) + SQL + SSL hosting if you found that nobody would hire you due to lack of a portfolio?
What a dumb article on a dumb topic. Sometimes the news guy is an investment and simply needs
time to gel. Imagine an athlete that gets traded and takes time to be acquainted with his/her new
environment, is that so unreasonable.
Trade Secret? You mean it's a coverup so that noone can be critical of your work. Otherwise pick a program to do and get on sourceforge.
Companies are consciously creating incompatible platforms (Android, iOS, WP7, Flash, Silverlight, ...) in order to make developer skills non-transferable. Nobody should be surprised to hear that it costs more time to train new developers.
If you want to get a job programming, but have never written any software that you've published, then you are probably not worth hiring
This is just plain crap, I've been programming for almost 30yrs, proffesionally for the last 20. I don't have any published code to show anyone at an interview, and never have. The stuff I write in my own time is mainly so I can learn something new, once I have the gist of it I usually throw the code away. I've also interviewed ~100 programmers over the years and if you can't tell if someone knows their stuff just by talking to them for 5-10min, then I suggest you don't know yours.
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
i dont know what you need to be a good plumber, but there are an awful lot of bad plumbers out there.
we had a guy put two new faucets in our bathroom sink, a dead nuts simple job, and left one of the handles loose.
another time, a guy put a new burner in our gas furnace, and left with it turned up dangerously high - the exhaust flue to the chimmney was getting hot enough to cause a fire.
Simple issue here, if you want experienced team you need to hire enough inexperienced.
If all Businesses hired only those with intermediate or higher experience, then there would be no one to fill those positions at the bottom.
Know when hiring, don't hire inexperience to Lead, Direct and Over See a project. Don't hire inexperienced to be Supervisors. Hire them to be the group below those who have experience. Key is hire those Senior who can mentor those Junior. When done correctly with culture which shows positive growth, everyone wins.
On turn over, anticipate it and expect it. It is healthy to renew your staff when they want to go. Remember if you have a quality organization and staff are leaving to pursue their ideas, either they will find other Organizations to be less inviting and come back more loyal else they if treated well be your contacts when your Organization does a "Right Angle Turn" to oblivion.
"Certificates and degrees are not accomplishments"
So says the guy who has neither.
Thank you, yours is the only good comment here!
Not sure if you need a SSL cert to not accept money from your users that don't exist.
If you have "users that don't exist", you don't have a web application; you just have a set of static web pages. If you have users, then you have user accounts. If you have user accounts, you have passwords and session cookies. And unless you have SSL on your hosting, which most hosting providers appear to price as a premium add-on, anybody with Firesheep can forge someone else's session cookie.
I think a lot of comments are lashing out at the "Don't Hire Inexperienced Developers" concept without really thinking about what's being said in the rest of the article.
What the author is really saying is "Don't hire developers fresh out of school who have nothing to show for themselves except coursework."
Why is this so important? It's important because it shows two things:
1) The developer only has theoretical, academic knowledge of programming
2) The developer isn't passionate about developing.
The first is a huge problem for any company hiring said developer. I don't know a single instance where what I have encountered in the working world matched closely at all to how my textbooks or professors told me things "should be". The mental shift required between school and work is large and can be very difficult to overcome for many.
The second point is a critical thing to consider especially if you're a small company or a startup. A-level developers and other IT folks are passionate about what they do. They have side projects. They have little tools and such that they create to help solve whatever task they're focusing on at the moment. Coming out of school with absolutely nothing beyond class assignments is a strong indicator that the developer is only interested in the bare-minimum requirements to get by. That's not to say they're not talented, just that they're looking for a 9-5 job where they're in at 9:00 and out at 5:00 and aren't interested in going the extra mile. These guys are terrific coders for large companies where there's a lot of maintenance type work to be done. They're productivity vampires though for small companies that need every member of the team to be highly efficient and high producing.
The article points out how easy it is to have side projects. To turn out a little app on a website or on a mobile platform that you can point back to and say "I did this."
To those who argue that there's just no time in a 4 year degree to do side projects like that... Where the hell did you go to school? Did you have a full-time 40hr/wk job totally outside of CS/IT during the same period that left you with only enough time outside of class to sleep? If MIT students can get through in 4 years and manage massively complex pranks, contribute to OSS projects and still graduate with high grades, what's everyone elses excuse?
Software is one of those industries which is moving so fast that being anchored in the past is a huge disadvantage
Well, that commonly claimed, but can you actually name 2 serious breakthrough inventions in the last 5 years ?
Software industry is very good at reselling old ideas in new packages.
Seriously.
We have team leads at our company that hate to train or take on new people that don't meet a minimum standard, or can't work semi-autonomously right away. Fools they are, and here's why:
1. I frequently find myself overwhelmed with meetings, little tasks by the bushel, and stuff I just don't plain want to do. Send me the inexperienced guy, and I'll spend a day or a week or a month showing them the bare basics of what they need to know to get "close enough" on the job (like how to take notes/report status in a redundant, low-level meeting or do do a repetetive but necessary task or report). *poof* All the thankless little tasks go away, taken over by someone else, and I get credit for both training the new guys AND for doing work more appropriate for my experience level.
2. If the new guy's competent, he finds a way to make these tasks better -- for him/her. It's a critical thought exercise. Meet enough people, show you are competent/network. At the same time I'm showing the new guy (and sundry others) that I have faith in them. Most times that's paid off as they've moved to other projects/offices as I now have a trust relationship.
3. I train 'em my way. Makes my job easier. If they show competence in technical work, I work with them and bring them up my way, and it makes it easier to work together. If the have project management skills, I try to find them opportunities along those lines. Hate to lose a technical expert, but a technically competent manager is gold at our company. A technically competent manager I've worked well with is completely priceless to me.
4. If they don't work out, they're gone. I'm willing to train folks, but sometimes it doesn't work out, and it's to the company's benefit to identify general incompetence as quick as possible.
Not everyone thinks like I do, that's cool. I'm just willing to make the time to train the next generation 'cause I see some (possibly self-serving) benefit.
"Hey, I know what we're gonna do today." -- Phineas Flynn
I think his whole point is that the barrier to entry is now so low that college and even high-school kids can easily have a number of high-quality apps out by the time they're ready to get a job.
This is a good way of filtering out people who're book smart but not really motivated or enthusiastic about it.
Technologically, the barrier to entry has been low for quite some time. There was nothing stopping you from throwing together something simple in QBASIC or getting your hands on a few floppies worth of Linux and development tools. Software development isn't the kind of thing that requires hundreds of thousands of dollars worth of heavy machinery to get into... Just about any computer will do the job, and you can get your hands on the software for free.
But that doesn't mean there aren't other, non-technical barriers to entry.
The biggest, most obvious barrier to entry that I can see is simply time.
"Work is the curse of the drinking classes." -Oscar Wilde
I have been on both sides of the interview table and the most senseless interview technique is "white board problem solving." If you've interviewed recently, you'll be in a small room with a white board and asked how you'd solve a particular problem. The problem is one of those "non trivial, unless you already know the solution" problems that you are supposed to figure out on an interview, in front of an interviewer. I'm sorry, but I've driven home, and had the typical "Doh!" moment where it becomes obvious. Why didn't it happen during the interview? Because human beings are like that. If you've solved the problem previously (on a similar type of problem) then you look like a start, if you hadn't, well tough luck.
These have nothing to do with coding. NOTHING.
The next type of interview BS is the written test. Given by overly academic management people who have no idea how to code to begin with.
I guess the trick, if there is a trick, is to know the subject matter that the interviewee is supposed to know, and be able to evaluate their ability. You can't have non-technical MBA types trying to quantify qualities they do not understand.
That sure is a lot of silly excuses.
Which is why I'm trying to find answers to the excuses so that people can start building a portfolio.
developing websites and apps is basically free
Developing, yes. Publishing, no. Web applications will get one hired as a programmer, but any session cookie not sent over SSL can be intercepted by anyone using Firesheep. And unless you're already a corporation with its own Authenticode certificate, self-publishing a Windows application on the Internet will run up against Internet Explorer 9's "SmartScreen application reputation" that strongly recommends deleting anything unsigned.
And if you have nothing to show that you've coded
I have something to show; it's just stuck on a USB drive, not on the public web. May I pull out a laptop so that I can show you my portfolio?
On the contrary, I think the barrier to entry has gotten a lot higher.
In the '80s, you had to know C or Pascal and some interface and database libraries. There was no Web to develop applications for, and GUIs were fairly simple to code to. Hard stuff was things like writing serial and parallel I/O functions.
Nowadays, any place you're applying to has an alphabet soup of acronyms they expect you to be familiar with. There are about a thousand tools and languages and frameworks to learn and if you don't have exactly the right combination on your résumé you get "thanks for applying, good luck in your search."
$25/year for a simple hosting deal
Assuming I already have a domain from GANDI or Go Daddy and a free SSL certificate from StartCom, what provider of SSL web hosting at $25 per year do you recommend?
Hiring someone straight out of college is OK. Doing so does not necessarily violate the "accomplished something" rule. When I interview recent grads I always as about their personal projects, things unrelated to work or class assignments. I sometimes have to pry info out from them. They are embarrassed by how trivial the projects look and think they are not worth mentioning. They don't understand that I am not really interested in how involved the project was, rather I am looking for any kind of project they did on their own to satisfy a personal need or curiosity or just to have fun. The mere fact that they got something working for their own amusement, curiosity or need indicates they are part of the minority who went into programming because they have a genuine interest in the field rather than part of the majority who went into programming because someone told them it was a good career path.
Regarding the value of college itself. I certainly agree that someone can be self taught, however the person that will on their own read university level computer science material across a broad range of topics is exceedingly rare. Additionally, completing a degree demonstrates that a person has the temperament to finish what they start, even if it is a long boring bureaucratic process. When a project is long and has unglamorous components such a temperament is valuable.
but that doesn't mean they've dumped entire tarballs with a finished piece of software ready for use by others somewhere.
Taking a project to a usable 0.1, or in other words having "dumped entire tarballs with a finished piece of software ready for use by others", is an indicator of ability to see a project through to completion.
... but even in ancient times I graduated with things I could point to. Prior to college, I wrote games on a PDP-8, caged time on the local college's 360 clone and wrote games on that. In undergrad, I worked with a few others on a chess program and did football scouting programs for the team. I also worked as prime and second shift operators in both cases. So, it could be done when machines were few - it should be way easier when they're as common as lice.
People find the time to do what they want to do. Assuming what you're looking to work in is something you like, you'll have something to back up the resume. If, however, you're posing...
Comment removed based on user account deletion
I did write lot of stuff for my enjoyment. still, the assembly bump mapping demo doesn't really seems to me a good thing ti show off. also, it doesn't run on windows. or linux, for that matter.
You are very mistaken. When interviewing recent grads I explicitly look for things people have written for their own curiosity or amusement. To me that separates those who have a genuine interest in programming from those who only look at it as a good career path. Your mistake is common, I often have to dig these projects out of interviewees. When hired they were shocked to learn they were preferred over a 4.0 student who never wrote anything except for class assignments. FWIW, my year+ project staffed with such individuals was delivered on time with only a few weeks of "crunch time". The product (molecular modeling and visualization) received good reviews and few bugs were discovered when it got into the hands of customers.
i do enjoy coding a lot, as in i cant think of anything i'd rather do for a living. But in my free time, i can think of thousands of things i'd rather spend my time on, so i hardly have any hobby-projects, certainly nothing that i would use to show off at a job interview.
Please rethink this reluctance, see http://developers.slashdot.org/comments.pl?sid=2134962&cid=36063020.
To put it bluntly, HR is unwilling to do what it takes to acquire and retain the "real" developers. They want some kid who will work for peanuts, not someone who actually has weight and worth in the market. They tried hiring that experienced guy; he ran off to a competitor who offered him a better salary and better benefits. Now they've learned their lesson and they're sticking with the kids whom they know will never receive a competing job offer and cannot command a comfortable salary.
The "show me something you wrote independently" tests for:
a) Experience working on your own thing in isolation and a desire to do so.
b) A genuine love of programming, seeing it as trying to get a job in your passion.
c) The ability to use easy tools fluidly.
Now those are good characteristics for a start-up which is who the article is written for. But all of those are negatives in many enterprise jobs.
Isolated opinionated programmers are a definite determent in enterprises quite often. You want enthusiasm but not passion in most workplaces. You often don't want to test for easy tools, but the ability to use hard tools. Complex applications are orders of magnitude more confusing than simple android applets.
And finally the Microsoft brain teaser type problems are basically a computer IQ test. They are testing for:
i) Do you know basic computer science
ii) Are you smart.
You can fix skills deficits in employees. Generally you can't fix (i) or (ii), though with younger programers you can sometimes fix (i). You will fight those problems everyday forever. Quite often in programming you can construct two algorithms to solve a problem with times like: n^2 + 25n + 100, 1000n + 20000. If you hire the Android guy you often get the n^2 solution since it works so much better on test data sets.
Setting up a website costs less than a typical cell phone bill. Get your priorities straight.
The problem I see with this suggestion has to do with I'm not in a web development industry. And asking everyone fresh out of school to have written their own Linux driver might be a bit much (unless they went to CMU or something)
“Common sense is not so common.” — Voltaire
That's because they actually have the luxury of choice.
The flexibility of the few doesn't justify making everyone disposable.
Twitter supports and protects racists - by smearing their critics with the "Hate Speech" label.
Applications you've made because of a school project will not count.
Why not? Because someone else provided the specifications? Isn't that what corporate software development is built around? Not to mention that school projects are done in teams, so your contribution to that team can show how well you will work in a dev team? Soloist codemonkeys do not good employees make.
Neither do people who went into programming because someone said it is a good career path. A certain curiosity and interest in the field is required. These personal projects don't need to be elaborate. Its just that a complete lack of anything written for personal amusement or curiosity also suggests a lack of interest in the field.
Also in team projects those with genuine interest tend to carry those on the career path. So all team projects and nothing personal can be worrisome.
Seriously, work study was the best thing I ever did. It added an extra year to my "4 year" degree, but it was not only got me real world experience, but the company hired me with a 40K salary (back in '01) as a junior developer. It wasn't big bucks, but it was a job when so many other were starting to struggle to find employment. The experience I got at that company took me to where I am today.
Also, open source may or may not help you. When I was looking for work back in '03, I was told by recruiter after recruiter that open source work won't count worth shit with companies. Hopefully that has changed now, but back then I was firmly told it was a waste of time for anything but a hobby.
What metric do you use to determine which candidates will make good junior developers?
Those who have written something for their own amusement or curiosity, something not part of work or a class assignment. Something that suggests a person is part of the minority who have a genuine interest in programming rather than the majority who were told it is a good career path.
What complete bollocks
Where I used to work we had a coding test where you had up to two hours to implement a vending machine. (.Net WinForms)
The machine had to have some products available in pence (20p, £1.20 which is 120p etc). You could put money in and buy a product which then should deduct one product from the machine and return any change if possible (just display the amount of change, or even break it down into correct denominations for extra points).
It could be simple or complex as you liked, hard coded products and prices fine, simple buttons on a dialog fine also!
It did show up some really bad coders. I'd fail them straight away on the following:
1) Using floats for currency. Most used 1.0f to mean 100p. Great until you ended up with 0.13333333p change). None used the decimal type.
2) UI "experts" designing the UI with pink background and green buttons. No, seriously CV says 5 years as an experience UI developer... for the blind perhaps.
3) Completely unstructured code
4) No form of input sanitisation. Enter amount into a text box, enter "DFGFDGDF" and it blows up. Enter 3p and buy something for 50p.
5) Spent all their time navel gazing and thinking how to test something without actually writing *any* code. - Great in theory, but we have a business to run!
And so on.
Thank you for saying what I was thinking. Just because you don't feel like developing some shit app in your free time doesn't mean you're not a great developer in work time. If I was interviewing I would have to wonder what kind of well-rounded person would spend all their free time doing the same stuff they do at work and would worry that they lacked the requisite social skills to work in a team.
Not quite 30 years pro-time, but (bugger me!) it nearly is! And I too have interviewed hundreds of programmers, all on telephone, and some subsequently face-to-face. It's usually obvious who's capable and who's bullshitting. The one guy my boss hired who turned out like the scenario in the OP (yes, that scenario really can happen) was hired before I was senior enough to be involved in the process, and he left to work in a 'Coffee' Bar in Amsterdam. The one guy *I* hired who turned out like the scenario in the OP isn't working here any more - and I'm not sure even now whether he couldn't code, or whether he simply couldn't do it working on his own, offsite.
I have to agree. In my 20+ years of engineering for a small company I wrote a lot of code, but none of it is mine to share.
Also to those suggesting open source - beware - I recently applied for a job and the application asked if you had done anything to disqualify you from working for them - eg: open source or personal software development! (I believe their concern has something to do with their intellectual property policy.)
If you can say you're self taught, that shows initiative. OK, so not yet a great programmer, but you can DO things. You wouldn't believe how many people come to an interview and we see "super-gadget-team at company xyz" and when asked "what did you DO on the super-duper-team?" they just can't really offer anything of substance. We have one guy who interviews by going over the resume and trying to get at what people actually did, and if he can't identify anything, he crosses stuff off the resume (yes, right in front of them). Some resumes get a half their contents removed from this. The problem is that HR screening looks for the buzzwords, not the verbs. My resume is full of verbs - most sentences start with one - and I never had too much trouble finding interesting work.
Learning fast is NOT the same as learning well. If anything, it's the opposite. Baby chimps learn faster, human babies learn slower for a few years, then overtake the competition. In other words, then learn more slowly, but BETTER -- they learn DEEPLY.
Which would you prefer: the guy who quickly learns that "cd /" is "the command to go to the root directory", or the guy who looks dumbfounded, says "I don't get it", and keeps asking questions and being confused until he's figured out that all computers have a concept called a filesystem, that the unix filesystem mounts everything on a tree, and that cd is short for change directory? One knows one command, the other can reliably navigate directories on many platforms, and easily figure out how to navigate on new platforms.
If you want REAL experts in your company, you have to give them the time to learn your systems to THEIR standards, even if it seems simple to YOU.
Summary for people who didn't understand this: if you think something is simple and should be learned quickly, it's probably because YOU'RE simple.
I thought your college degree would be good enough for that part?
University computer science courses teach theory, not practice.
And if the purpose of the project was strictly out of curiosity or because you had a very narrow problem to solve wouldn't it make sense that the software isn't really releasable?
Which brings us to the next buzzword: "productize". Companies value an employee who can look at an internal tool that solves "a very narrow problem" and figure out how to turn it into a revenue stream by offering it for customers to use at a price.
I wouldn't hire someone who throws code away.
I've never had problems getting some free hosting with basic scripting. [...] was the last time you tried to get free hosting in the 90's?
2000, actually, on Freeservers. A couple years later, I moved pineight.com to budget paid hosting on BinaryBlocks, then VirtualCobalts, and now Go Daddy, but I still don't have SSL, and without SSL, one's forum password can be sniffed over the wire.
if you have problems with large files then don't host them on your own site, there's loads of sites like rapidshare, megaupload, filesonic etc which will host large files for free.
I tried RapidShare, but I gave up on RapidShare when I failed to solve its CAPTCHA: "which of these distorted letters have extremely distorted drawings of cats on them, as opposed to extremely distorted drawings of dogs?" Maybe I'm not worthy of a job because I'm not even human. I have since switched to MediaFire.
These articles are popping up at a rate of one per week now. Usually, the author is trying to portray themselves as an expert in the field of software development by relentlessly bashing a strawman army. For instance this guy, John Evans, is complaining about developers, but it appears he is an author trying to do some self promotion.
Before someone starts attacking nameless developers, perhaps they should list their own qualifications. The author is trying to write a controversial piece to drive traffic. He writes "Certificates and degrees are not accomplishments" which is clearly meant to insult 99% of professional developers, 1/3 of whom have advanced degrees. Fellow bloggers need to start demanding credentials whenever one of these articles shows up from someone clearly not working in software. And by working in software, the gold standard is being paid by someone else to produce code over many years.
Actually most employers now won't even interview an experienced programmer that has a non-IT degree such as math or physics. The reason you have retarded devs is because you have retarded HR people. How many jobs out there say "MCSE only, CCNA only, IT degree only, blah blah"? But as soon as you walk in with 10 years of real-world experience building servers and coding vector network analyzers they look at you like you're some kind of piss-ant. You employers get what you deserve and I tell everyone that the reason their commercial software sucks is because the coders suck and all the best coders have left the field because of a.) low pay, b.) poor working conditions, c.) poor treatment, and d.) IT'S BLOODY HARD WORK TO DO IT RIGHT
Setting up a website costs less than a typical cell phone bill.
A domain and a web site without SSL cost about $50 per year on Go Daddy, which indeed is less than the $60 per year (that's year, not month) that I pay Virgin Mobile USA for the occasional voice call. But if you host a web application with user accounts without HTTPS, anybody can snoop passwords over the wire. HTTPS hosting is more expensive because a lot of clients still in use are outdated enough not to support SNI (name-based virtual hosting extension for TLS), meaning the hosting provider has to obtain a dedicated IPv4 address for each certificate, which in practice means for each domain. What hosting provider do you recommend for cheap hosting that includes PHP, MySQL, and SSL?
Amen to this, brother. Maybe the general problem here is that the people who are doing the interviewing aren't the same people who are going to be working with the guy getting interviewed.
Maybe its because the world of programming has changed a lot in the last 20 years, but I fear that, despite my vast experience, I'd fail the HR test mentioned above. I've worked for a lot of small companies in the last 20 years, the vast majority of which have cratered and don't exist any more, so I don't have any existing products or code that I can point to as mine. The few bits that are still around, are covered by NDA, so I'm not at liberty to do more than say "I worked on that." Hardly something that an HR person should simply take my word on. References are also an issue. Do you still have valid contact info for a manager you worked for 7 years ago? For the most part, I don't.
I have contributed to a few open source projects over the years, but its been small patches here and there. Mostly I've been too busy doing paying work to work on stuff for free. This isn't to say that I have an objection to open source work, far from it, but for me being able to put food on the table has always had first priority.
I have my own web server set up at home, on my home PC, and you can access it from the internet.
Which for a lot of people would mean upgrading from the residential SLA to a probably more expensive business SLA that doesn't have a "no servers" clause in its acceptable use policy.
As for IPv4, I've never paid for any of my IPv4 addresses, and I have quite a few.
Frontier Communications, the DSL ILEC in my hometown, charges more per month if a customer wants a static IP. And no, dynamic DNS doesn't always work. I've read that ISPs in some other countries put most customers on a large-scale NAT and charge more per month for even a dynamic IP.
As for SSL, it costs nothing to create your own certificate, again, for free.
That's not the problem. StartCom offers a free SSL certificate to the owner of a domain. But how does the web server, which probably hosts a hundred different customers' web sites on a hundred different domains, know which of a hundred different certificates to serve to a client running Android Browser, or IE on Windows XP, or any other user agent that doesn't support Server Name Indication? The model for SSL without SNI is one certificate per (IPv4 address, port) pair, and end users don't expect to use SSL sites on any port but 443.
If someone like you interviewed with me, I'd cut the interview short
Which is exactly why I'm asking the questions here and now. I want people to know the answers before the interview so that they don't have to make excuses during the interview. Another possibility is that the candidate should plan to bring his own laptop computer on which demonstrate his portfolio and then cut the interview short himself if the employer won't let him bring it; good or bad idea?
Someone over 35 who is prejudiced against *good* new ideas isn't bright. You'll recognize them pretty soon and can then discard their prejudice while making use of their experience.
And with the whole client-server oh no component based development oh no SOA oh no.. new fad coming in... stuff... it really helps if you are experienced to give you some perspective. While someone fresh out of university may *think* webbased services are the greatest thing since sliced bread, people with real world experience can also provide some perspective on the areas where you DON'T want to use it.
In my experience, the people who actually know most about structured environments and development in those, are mainframe COBOL coders. They had too. And they're a treasure trove of experience if you care to listen. Imagine: transaction control, virtual machines, batch control that still makes me jealous, backup/restore that works, version control on everything... these are things that were there in the 70's and 80's and only now begin to become mainstream for other environments.
Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
This whole story is based on someones assumption that their coworkers are idiots. Anyone who thinks like that ought to work alone, far away from other people. And what this guy does: spreads the idea to everyone via slashdot. Now everyone who reads it needs to work alone. How is this helping with building nice working teams where people actually respect the choices other people have made in their life?
I interviewed two people recently, one with over a decade of C experience, the other with twenty years of experience in C, C++ and so forth. The second person's resume was /impeccable/.
Neither one of them could write an implementation of strlen on the whiteboard.
Oh my god. It's like four lines of code. You learn this one in the first week of a course on C. What the hell?
I don't know if these people are lying on their resumes or what. I do know that I have /everyone/ write some code. And that these two people, who made it past initial screening [can't possibly be any good] and who bullshitted their way past HR had their interviews terminated abruptly when I found out they couldn't program something that is in chapter 2 of the basic text on the language they claimed the most expertise in.
Once we establish that there is a /little/ expertise, we can talk about doing "day-length paid internships" and "program with me" assignments or whatever you think is in vogue.
I know that most candidates -- easily 80 percent -- are quite disappointing. Yet they look good on paper.
Sigh.
I agree that "learning by understanding" as opposed to "learning by memorizing" is definitely the way to go. Asking a lot of questions (even about basic stuff) is no problem, as long as the same questions don't pop up again and again.
Life is Reality
I have got more than 15+ years of system programming in main frame system, 11 in my current firm. What sort of portfolio I am supposed to show ? The best I could show is an article mentionning my name. All the stuff you presented are something a student would do today. But us old guy have a lot of experience and don't dab into the mobile app or utility or open source. So what ? All that is for naught because I don't have a fad-du-jour app to show up ? I think you *view* of what a system engineer (or programmer or whatever) should be able to present is limited by, sorry if I am wrong, your young age. But then again, I am not surprised, I have seen so many CS student which thought because they did a jazzed up web page/mobile app/whatever they are the king of the hill, and were unable to remodel and change their thought to adapt themselves to a new system... Or had bad habits, documentation were for later, testing was poor , programmation was trial-and-error,comments for the dogs.
If they did know their stuff, they won't be in HR
CGI scripts don't need user accounts.
They do if they let users post things to anything resembling a blog, forum, or wiki, and you want to let the site's users build up a reputation (unlike on anonymous imageboards). Imagine Slashdot if all posts were by Anonymous Coward and starting at 0, and none could be moderated up or down: it would be flooded with spam.
Sessionless web games don't need user accounts.
If a video game is truly sessionless, it doesn't need CGI at all; it can be written in JavaScript to run entirely on the client side. Even an anonymous session is still a session and can still be hijacked with a tool like Firesheep.
Loan repayment calculators don't need user accounts.
Nor do they need CGI at all; they can be written in JavaScript to run entirely on the client side.
I went for my first job interview with evidence of the MORPG I'd helped write and was helping admin.
Without user accounts, how did you save a character's progress from one play session to the next, and how did you punish griefers?
Which was hosted on its own Sun box, in 1994, despite not charging to play, not advertising, not relying on patronage.
And how did you pay for this Sun box? Or did you pay for it as part of the "information technology fee" to a university?
It makes you look silly.
Which is why I want to know all this before the interview so that I don't have to make excuses.
I was exactly in this position a few years ago. My mentor definitely showed prejudice towards some of my new-fangled ideas. Likewise, I disdained some of his old-fashioned approaches that just seem klunky and unsafe now. Fortunately, he's smart and he knows that what's important is getting shit done, so our technological gaps always boiled down to implementations rather than interfaces. I still learned a lot about the business and operational sides from him, which was probably the biggest win.
Put more bluntly: If your mentor is getting in the way because of the generational technology gap, the problem is the individual and not the industry.
I'm not hands-on programming at the moment, and I've kind of lost touch a little, but in the 90s when I first entered the job market, software engineering progressed enormously, both academically and in industry.
I can't believe everything's now sorted, and I would be very wary of giving specific programming advice to current graduates.
That said, I'd agree completely that mentoring is essential. Even if how you address certain common problems changes, knowing that problem will occur is valuable, sharing decade old best practices is at worse a start point, inviting discussion on how to approach it now gets the right thought processes occurring.
I once ran an employment ad "Send us a thousand lines of C++ that you're proud of". Very few people submitted code. Lots of excuses, though. What I was looking for in code, incidentally, was proper paranoia. This was an embedded project for a large machine, and I wanted to see conservative code that would clearly not do bad things. I actually sent one application back with "Your application has been received. Your first buffer overflow is on line 22. Thank you for your interest."
I once encountered an applicant who claimed to be an experienced C++ programmer, and sounded convincing. I sat him down at a computer, demonstrated how to type in, edit, and compile "Hello World" in that environment, and asked him to code something. Anything. He got stuck at "int main...".
You didn't see some of my early code :)
Figure out how to recognize talent in a developer and hire these
HTML is obsolete. It's time for a new, simpler and richer markup language.
Follow the apprentice/journeyman/master model
From Wikipedia: "Most of their training is done while working for an employer who helps the apprentices learn their trade, in exchange for their continuing labour for an agreed period after they become skilled." But in the era of at-will employment, how does a master set up a binding "exchange for their continuing labour"?
I'd like to point out that some companies make it difficult for people to do anything public outside of work.
If you've been hired by a company, you have that for your resume, and you can give a reference. As I understand the article, it's more about those who have never been hired by a company and thus remain free to rely on a hobby portfolio.
I brought my laptop to my job interview at Google and to three out of four interviewers I demoed a major application that I'd written myself, demonstrating my MySQL, Java, GUI Design skills; I also pointed out how the graph drawn included grounds-up innovation of a new graph untangling algorithm.
I got the job without having to submit to a second round of interviews.
This was Sept. 2004. Dunno if this strategy would work today. You may want to ask if you are even allowed to bring a laptop.
While I worked AT Google I conducted about 20 interviews myself. I was one of the GA experts and whenever someone wrote "GA" on their resume, I got to interview them. Everyone I interviewed clearly had done GA work, but very few actually understood what they were doing.
My final interview question was always "True creativity cannot be turned off. Tell me about two instances where you invented something, no matter how insignificant, to simplify your everyday life". Answers ranged from trivial to Rube Goldberg-like but several people drew a blank. Do people in general just accept the world the way it's given to them?
But surely you remember what you did to solve some of these trivial problems and could explain the algorithm, even if you couldn't produce the code itself. I'm not a professional programmer, but was a computational physicist, and I just started thinking about things I would mention, and came up with a few
1) hybrid recursion formulas/series expansions for the Legendre polynomials that pick up in accuracy where the other method fails, so as to avoid underflow
2) writing my own quadratic interpolation algorithm (just n equations in n unknowns)
3) mapping an 8-dimensional array into a 7-dimensional one, as Fortran-77 doesn't all for arrays with more than 7 dimensions
I have been a manager/director in software development for over 30 years. I have hired mostly inexperienced developers, except when we were in a real time bind. Almost all turned out to be great employees. By carefully selecting during the interview process we hired only the very best. Since no one else hires inexperienced folks we had no problem finding great candidates. They require some handholding and mentoring but they were paid about one third what a senior would get so their productivity was great. We could have a larger staff for the same budget so we had mentoring resources available. We promoted and gave raises quickly as they gained experience. We got hard working and very loyal employees as a result. They felt like they owed the newbies ample mentoring time as they had recieved when they were newbies.
I think many managers are just lazy or are just very inept and just refuse to take time to develop new employees properly. Out of hundreds of developers we had only 2 or 3 failures. This is a much better success rate than in hiring experienced staff.
Hosting : 5-10 dollar a year. Your own VPS can be as little as 3 usd per month.
Can you recommend a provider offering hosting on a dedicated IP address at such prices? (Name-based SSL virtual hosting is incompatible with IE on Windows XP.)
I would suggest a new type of education to feed current industrial needs, whose investors obviously deserve the best of the best in potential employees. What we need is "coding school", and dispose of the classical computer science curriculum. This would be a lot like art school. You'd be admitted on talent, get in a lot of practice "coding" websites, then graduate with a large portfolio of works. Coursework would cover critiques, experimental website and database design, AJAX Theory and Effects, Multi-language Web Stacks, Agile manifesto, etc. No Math, because it's irrelevant to the web. You'd have majors in PhP, RoR, ASP, Tomcat, Javascript, Amazon Web Services and Google App Engine. The goal of the curriculum would be to get you a job where you could "hit the ground running" in any corporate techno-culture's muddled infrastructure. Of course, the success rate of graduates would have to be held synthetically at 1% for achieving employment. After all, that's only fair to give our best to the highly competent people already working in these sweat shops, who are easily 50 times better and more productive than anyone could ever be. The other 99% percent of graduates can look forward to a career as "street programmers" :)
We dont seem to train any programmers. Computer science runs through many languages but never really makes you a programmer. Sysadmin training doesnt really make any programmers. We also dont seem to be doing anything right when it comes to keeping IT pros. The pay is shit, hours are bad, stress is bad, and labour laws dont protect IT people. Most IT people get in entry level see how shit it is and leave the industry forever. Go work in a factory or construction and the hours are bad, stress is bad, labour laws sort of protect them. Except pay is good. Then we wonder why nobody wants to go anywhere near this bullshit and you only get incompetent people.
Very seldom does someone at work, work on a project all by himself.
The problem is HR looks at not certifications and degrees, but years of experience. Someone who is sharp fresh out of school but knows his stuff is filtered out by someone who had 8 years experience but with 15 other developers on his team performance is never evaluated. HR assumes everyone has the same skillset which only increases with years of experience.
I do like the idea of a website, but I can download some php scripts and use a tool to pimp my page ala the Myspace ones a few years ago to look l33t. It doesn't mean I know my stuff.
I guess the old standard of interviewing the applicants yourself rather than HR is the only true and tested way. Do a 2 interview process. HR does the first. The second do a test. Have that person write a function on paper ... to write an object in Javascript. Then put challenging questions next like write a towers of hanoi program. Or here is some SQL that works but is not optimized go fix it in 45 minutes etc.
Do that with 3 final candidates and see who has the most correct answers. One place where I interviewed they did this. They do not have to get all of them correct. But 3 or 4 of them you can tell who was at least on the right track. HR maybe surprised but people with associates degrees maybe able to do this ... the horrors!
http://saveie6.com/
What you do is, you hire the guy who can't code and you make him your VP and maybe even something above that. Clearly, that's the way to go.
You can't handle the truth.
There is no excuse for software developers who don't have a site, app, or service they can point to and say, 'I did this, all by myself!' in a world where Google App Engine and Amazon Web Services have free service tiers, and it costs all of $25 to register as an Android developer and publish an app on the Android Market.
I write enterprise software for a Fortune 500 company, how in the fuck am I supposed to display my skills in this particular arena by publishing an App on the Android Marketplace?
You want to weed out the bullshitters, have your developers conduct the interviews. Managers and developers have completely different skill sets. Managers are supposed to know about keeping a department running, not about the minutia of the work done under them. Let your best developers conduct one of the rounds in your interview process and you'll weed out those guys that can talk a good game but can't code their way out of a wet paper bag.
LK
"Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
I think this kind of attitude is very bad for society.
Telling young people to work for free for a while and live of their savings until they have worked long enough to get a paid job is a terrible idea. Most young people don't have measurable savings anyway, and even if they have, why would they pursue a career as a programmer when they can go do something else and get paid right now?
The result is that we're losing the next generation of programmers. The solution is obvious: good education. Most newbies can't code, because university didn't teach them to code - it's that simple. Killing off career prospects for starting programmers will just make us lose even more ground to India and China, as well as unnecessarily prevent a lot of young people from chasing their dreams.
The best programmers generally start as hobbyists. You don't need a "job" to get experience. When I first started trying to get a job as a programmer I filled my resume largely with my own projects that I had done on my own time. Now it's filled with things I've been paid to do. I still point to one or two hobby projects on occasion depending on what I'm getting into.
There is very little in the programming world that you can't get experience with as a hobbyist. If you want to be paid to develop embedded software there are plenty of neat products out there that let you get experience. If you want to be paid to be a developer then build web sites on your own time first. Want to be a game programmer? Make games as a hobby first. I worked all kinds of part time jobs. I was making pizza for minimum wage when I saved up enough for my first $1300 166Mhz PC.
There are very few professions that you can't get experience simply as a hobbyist first. If you think you have to get paid before you can get experience you simply lack ambition.
Work Safe Porn
As far as resumes are considered, we use them to help guide the flow of the interview a bit, but it ends there. If someone put down AJAX on their resume, it could be that either they set up a simple call through jQuery, they rolled their own AJAX library, or they're just padding their resume with keywords. So what we usually do is one continually building question, that starts out with very basic algorithms and moves through things such as SQL joins and normalization, AJAX, advanced javascript, PHP, SQL injection and input filtering. What seriously bothers me is the very large number of applications who have several years of experience, but can't work out in their head how to find the largest number in a large set of numbers.
Non sequitur: Your facts are uncoordinated.
That or the type of creativity needed to be able to pick a project out of an arbitrarily large number of possible projects, and deciding to do that.
I for example don't have much to show in terms of programming outside of work and school. I have all sorts of odd throwaway projects, but nothing really presentable. Why? Because I try to avoid re-inventing the wheel, so if I feel the need to do something, I'll look around for what is already done, and utilize what is out there, perhaps scripting together a few existing tools. Therefore to have a presentable project would require me to feel the need/desire to do something in an unexplored area, or to arbitrarily chose some unexplored area and work on it, or lastly to chose some area that already has software, and write my own.
The first case does not happen very often. The second requires a kind of creativity that I do not possess. The last would be the most likely, but writing "yet another" program in some existing field with several good programs is very unappealing, so the key would be to find area where none of the existing programs are particularly good, and that I have some particular interest in. I have yet to come across that.
Stylish sheet to fix many problems in Slashdot's D3: https://gist.github.com/801524
You can show them something you work on. True the code is copyrighted but you can show a few hundred lines of code here or there to demonstrate it.
The OP was just saying starting out you need to do this. Unfortunately, that is hard too as many of us have to work 1 to 2 shit jobs non IT related to pay bills while we wait for an IT job and do not have time to do opensource stuff. I guess do it while you are young
http://saveie6.com/
this article is so off the mark, I worked 40+ hours at full time job and went to college at the same time, where would I find time to code an android app or such? today I spend all my coding time for my job - which I can't just take and show other employers. I dont have any content to put on a website. If I did have time to code apps I would be making money off them and not need to work for your company
Managers who want someone who has experience with MFC(YUCK) or experience in Visual Studio 2*** and youve decided either on purpose on your own time or at work, been using Netbeans or Eclipse for that last 5 or 6 years then theres a big question mark that comes into his mind and in once case i didnt even get the time of day since i didnt have recent experience in Visual Studio. Ive used OpenGL, built a gui in Qt but Alas! - i have not been using MFC. Recruiters are worse. one of them saw a problem with my resume because i havent been working on windows for major development, despite the fact that i have a mac and port stuff to windows if i have to on a virtual machine - but then continued to say that it could be a problem.
I would not be very impressed if someone has create Tetris number 14004 to iPhone or Android market. Why you would publish something what thousands of others have published already?
It is actually hard to find original application idea nowadays which would be worth of work. I have been programming since 1980's doing work in small companies and huge corporations. I have done almost everything you can imagine in SW development. I have not ever published any applications I have done for myself. They are not good enough that I could get money from them. And there are similar and better versions available free from some other coders. I have not interest to start maintenance them and communicate with user.
Why would anyone make decision about my competences based on the published free time works? Silly idea.
As other posters point out, the companies with a clue hire directly.
I recently got another unsolicited request for my resume from a wannabe recruiter, so I gave my usual reply:
I will have in next interview my own coding tests with me. When they ask me to do some tests, I ask same from them. I do not want to work with management which does not know what SW development is.
Wow you have a ton of excuses for everything!!!
I prefer to be prepared. This is why I want to get the excuses out of the way here on Slashdot rather than have to make the same excuses to an interviewer when something goes wrong.
linux,gcc,free
If you meant compile on Linux targeting Linux: "System Requirements: Linux. If you use Windows, download VirtualBox here and Ubuntu here and install them." Would that look professional?
If you meant compile on Linux targeting Windows: Cross-compiled executables are likewise marked "not commonly downloaded and could harm your computer" unless they're signed with Authenticode.
Internet Explorer compatibility is usually not on the list of features unless you're writing a commercial website so SNI is entirely unproblematic if you do decide to get a certificate.
I did a quick Google search for sni ssl web hosting, and all the results on the first page were about theory, not a particular hosting service offer. I got similar results for sni ssl web hosting price. It appears commercial web hosts don't appear to offer SNI SSL web hosting yet, and I can think of two reasons. First, CentOS 5.5 uses OpenSSL 0.9.8e, and SNI didn't land in OpenSSL until 0.9.8f. Second, I imagine that SSL web hosts don't want the expense of handling support calls from web hosting customers complaining that visitors using IE on Windows XP can't get there.
Recall me my colleague who can't even keep his code acceptable format (like non 4 spaces in a 4-space indentation source file, or wrong indentation)...not once, but every 4 times of his commits...sigh.
If I had mod points ... I'd mod you up.
I always love "the good new ideas" ... when they aren't actually stupid ideas, or simply a new name for something we've been doing for 15 years.
A prospective employer wants to see some nice layout and server side and client side data and processing.
But who provides the data to be processed on the server side? One needs user accounts to make sure that each user is accessing only the data that he has submitted to be processed, not data that other people have submitted to be processed. Does the prospective employer want to see authentication and authorization or not?
In my opinion, the most important thing for a programmer is to write maintainable, readable code. This means modular design, documentation, unit testing. I've always been surprised at how kids who just graduated from some of the best tech schools in the US don't know how to do this. The ones that aren't incompetent will be productive in the sense that they can bang out some code to a spec fast, but it ends up being useless in the long run because it is impossible for anyone else to modify or debug.
The only way that you can evaluate this is by reading someone's code.
"Don't interview anyone who hasn't accomplished anything. Ever. Certificates and degrees are not accomplishments; I mean real-world projects with real-world users."
Fuck you, nigger.
Hey, programmers have life too, they have kids, they have wife, they don't have time after work everyday to develop free software that won't support their home.
If this guy really believes that then he is an idiot.
The tyrant will always find a pretext for his tyranny - Aesop
This article made me realize my power. ^______^
My company values mid-career hires much more than the 'new guys'.
During my first four years (hired as a 'new guy'), I mastered our ~600k line codebase, solved more than 100 difficult software bugs, . For a new product, I was the main contributor to the feasibility study, successfully proposed radial new engineering design (that avoided many technical issues of the traditional design), and effectively functioned as the lead developer.
I also oversee 4 people, three of which make 30%-50% MORE* income than I do. WTF?!?!
BTW, I'm open to employment offers!
Replace "New Guy" with "applicant" ("experienced" or otherwise) in the title and you will basically have something that tech company interviewers have been noticing for a while:
The article is good reading, and links to the even more controversial supposition: a large percentage of people *cannot* be taught to program. Highly recommended reading; both of those links would make for good slashdot fodder, if they haven't been posted already.
Nathan's blog
I have had twice the bad experience to "get" a team in india.
not only do you end up with a bunch of guys 12h time difference away from you (ie, you have to work a large part of your night, cause they won't), but, despite the fact that they have (supositely) 3-5 years experience, an have been thourouly vetted by the recruiting ssytem/process, you end up with a bunch of gus who have no understanding of codding, manage, in 20 lines of C code to allocate memory, test if the alloction has succedded AFTER first using it, follow on to use more memory that allocated and then conclude by not releasing the memory!
These guys have been through supositely years of SW engineering school (where they often touch a computer for the first time), and years of prpofessional experience... When they finaly deliver something, it's late, barely works, and is not what you asked for!
SW is a task which is part ART, part technique part theory and part Math. Not only does it take years of practice, but it also requires intuition and a n ability to see what is right or wrong (Beautiful or ugly) that you can hardly learn in 3 years of school...
Most degrees don't prepare you to be a programmer (or much of anything else). An education prepares you for more education, or to educate others. Certifications don't make you a programmer either.
You become a programmer by programming. Education can make you a better programmer, certifications can impart a lot of specific facts, but neither will make you a programmer
I got a Ph.D. in Electrical Engineering. I did a lot of programming, but not enough, and I didn't learn a lot of technology and modeling techniques that I could have. My advice to those in school, and those out, is to figure out what kind of job you want, and what the skills required for it are. You develop most of those skills by doing the kind of work the job requires - specifically work in the context of an organization.
Although hardly anyone seems to do it because they think an interview is all about schmoozing, there's no excuse for not asking the interviewee to code in the interview.
It doesn't have to be anything fancy. Even a bubble sort or sorted list insertion is sufficient to weed out most of the candidates. You'd be amazed at how fast the guy who talks a good talk crumbles when you just ask him to write a simple for loop on the spot. You're a c++ 'expert' and you can't even write a for statement, much less get the logic correct? If you can whip out the STL version, fair enough.
Now if s/he tells me 'I wouldn't use a bubble sort here, I'd just call qsort()' that's also a good sign. Okay, here's the qsort() parms in case you've forgotten them (very easy to do) - write me the sort with the attendant comparison function. Now give me some code to print the sorted array (we'll make them write a for loop one way or another). Now, why might you actually use a bubble sort instead of a qsort? There are higher level concerns, but at least the covers the 'can you code?' bit.
"In my opinion, the most important thing for a programmer is to write maintainable, readable code...
The ones that aren't incompetent will be productive in the sense that they can bang out some code to a spec fast, but it ends up being useless in the long run because it is impossible for anyone else to modify or debug."
The most important thing for a programmer is to take care of his career.
As a practical matter, writing maintainable, readable code is often completely unnecessary, and potentially harmful, to your career. Managers don't care. And if your code "just works", and can be easily read, you get replaced by a 20 something code monkey as fast as management can find one.
We'd all rather be working somewhere with a commitment to maintainable, readable code *that rewards coders accordingly*. Most places are not like that. Most places will reward you if you can do things quickly, and do things that other people can't. Like maintain your code. In most places, you want your code maintainable *by you*, but not necessarily by the next guy. If I can maintain my code, and your readable and maintainable code, but you spend longer to write your maintainable code, and can't maintain mine, who do you think will get downsized at the next layoff?
I'm afraid I have to agree. I haven't developed anything open source/created a savvy personal website/got a bunch of awesome projects to show either, but that doesn't mean that I'm bad or incompetent or *not good enough* to program. I taught myself C, have a fair amount of experience in C++ (company internship), know the ins and outs of matlab as a result of my EE major and taught myself some of the basics of writing shell scripts from an old Kernighan textbook that I found lying around once I started experimenting with linux. For instance, as part of a localisation project, I had to grab RSSI values from a bunch of wireless routers and I found that a simple shell script did the trick, rather than figuring out what software to buy and install on a windows system. The point that I'm trying to make is that there are lots of competent programmers (I'm not claiming to be great, simply competent) out there who simply cannot be dismissed purely on the basis of not having anything *great* to their credit.
why?
The article states "...Certificates and degrees are not accomplishments..."
Since when is completing college not an accomplishment?
This guy has his head up his bottom...
Dream host (or many other providers) is less than $5 a month.
According to this page, basic hosting is $8.95 per month (incl. domain), and a unique IP address (required for SSL) is an extra $3.95 per month.
You only need cert if you handle sensitive data; nothing says you couldn't use openid for login.
One's session cookie itself is sensitive data, as any Firesheep user can snoop it and use it.
We hired a couple of IBM guys who had trouble understanding how to hand assemble a relational inventory control system using Clipper's dBase II syntax. Maybe the problem was groupthink. It was certainly lack of imagination, and unwillingness to study the code. This latter fault was also why recent grads failed in our shop. Well, that and bad attitudes. Nothing is so conducive to good atmosphere as two libertarians battling by turning up the volume on their respective radios.
I tanked in my last cubicle, myself. Management had weird notions of shipping schedules. They expected their shrink wrap to leave the building around a box. They had no idea that their deadlines truncated elegance three weeks before the code was ready. Ironically, that shop bought their best products off the street, and didn't need programmers at all. A fact made abundantly clear when we ALL lost our jobs when we got sold out to Broderbund.
``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
If someone is carrying a full course load in a given subject, they should not be expected to spend their spare time working in the same domain. That they pursue other interests in no way detracts from their "passion". It simply helps them avoid developing the cynical, blinkered attitude so common among tech-types.
They literally believe that developers are interchangeable.
A bad programmer gets as much as a good programmer in pay. The good programmer has to fight with bad programmers (and idiot managers) to get their design in. And it's clear that the jobs are being off-shored and outsourced so the really smart people are choosing other fields.
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
Get the guy that built Ramsey kits when young, and then made servo controllers from stamp kits from Ciarcia's Circuit Cellar, who gets into trouble with smart practical jokes, in other words who has an inquiring mind.
Those toads who memorize reams of text and get high scores are next to worthless. HR departments look at marks and hire those toads. If you want a good coder, be prepared to dig into his/her nature and past
Apprenticeship is dead. How dare someone with a degree and a few certs look for a job.
"If your code is so generic that your employer is fine with it being published because it gives them no competitive advantage, then you're probably not worth hiring."
I'm exaggerating, of course, but it cuts both ways. Some of my best work is not open source, and will never be published, precisely because it's substantially better than publicly available tools, and my employer paid me well to write it for that exact reason. I happen to also have some open source and public domain work that I'm very proud of and can point an interviewer to, but it's easy to imagine that someone else might not, especially a more junior person.
Tap onto his other skills then. If he can read code, so much the better. "Listen, we need a guy to jump right in and document all that we've been working on here. I'm glad you came in when you did. You can hit the ground running compared to the last guy." It sort of puts him in his place for acing all the questions, with a dash of tact thrown in for good measure. What he does next determines his future in your company.
1-OMG Sure! I'll get right on it! (He sees it for what it really is, and is eager to thank the gods on this twist of fate. This would make him ideal to face or work with users or deal with customers)
2-He flounders and stalls (Watch him dig into this hole and sweat his way out; gets you off the hook because he will wind up over comitting himself, albeit at great risk to the project.) Give him a quick test like, would you be able to code a DVD player app with what we have. (just an example, could be something that ought to take a page of code or so.) You'd then be forcing his hand to make some sort of admission
3-He might use it as an out e.g. I've found another opportunity someplace else and I'm taking it.
4-You find out he's armed. Just kidding, to see if you were reading through this.
But you get the point.
WARNING: Smartphones have side effects--most of them undocumented.
He's basically saying "Hire entrepreneurs", not "Hire developers". Someone might be a great hacker, and still not have any public projects available. While I agree that hiring someone with proven experience might be better than hiring someone without, people do start out somewhere.
Move sig!
If you're a graphic designer, then chances are.. most of your work is public, or not considered "trade secret" or proprietary. You can take work you've done for clients and show it to other potential clients, without breaking any kind of employment contract. Unless your work was involving things that needed secret security clearances, that's pretty much straight forward.
Programming is not the same thing. I can't show any of the code i've written for previous employers or clients due to confidentiality, trade secret, and other issues. The only work I can show is work i've done on my own, for myself. And for people that don't have much free time to do such tasks, that's pretty hard to do.
What you're saying is that if you don't have lots of free time to do unencumbered work, then you're not worth hiring. That's a stupid statement for so many reasons. My time is valuable, I get paid for it. I can't feed my kids, pay my rent, pay off my student loans, etc.. if I am doing work that is not paying.
If you need web hosting, you could do worse than here
Seriously? Does he really know what he implies he knows about this industry?
Seriously? Charles Simonyi, one of the greatest innovators of Xerox PARC, effectively the inventor of WYSIWYG editors, is unworthy and lacks innovation in comparison to Bill "I wrote a BASIC interpreter once" Gates?
Sure, I get that you don't like Hungarian (probably because you've never used it the way it was originally supposed to be used, but that's an entirely different matter), but do you really think that's all the guy ever did in his entire career?
I can't help think that inept HR is one of the reasons I could never find a job in the past 9 years after graduating from Carnegie Mellon with a BS scientific computing and most of my free time is spent in coding since I was at a young age. I even tried coding a MMORPG knowing how successful they'd be before any MMORPGS were out. I gave up when Ultima Online was released because I am not skilled as an artist and could no longer compete.
Thankfully I found a team of Christian video game developers(tangerinepop.com) on Twitter who helped me learn Flash and we made a game on our own, without any funding. Play it for free here
I only show that I can make a game to show that indeed I am very competent. In the past 9 years, I sent out *thousands* of resumes, and I think I got a grand total of 3 interviews.
PS: If you don't know, AS3 is really similar to C++ with almost exactly the same syntax, but a lot easier. So if you were wondering to pick up Flash and you have a lot of C/C++ experience, pick it up!
Anyway, I'm still with Tangerine Pop for the next year as we make a Facebook presence. Hopefully we can make millions because that would almost make up for the fact I was getting about no income for the past 9 years.
God spoke to me.
In the interviews I've performed I've only been interested in coding experience as a demonstration that they can pick up other languages as needed for a project (yay for having 10+ languages floating around at my work site that i'm aware of). What I more drill them down on are design decisions. In given a problem why do they pick one language, algorithm, or architecture and why they made the decision? Most of the experienced programmers we've turned away we're talking about their major code upgrade projects were to switch to a modern language but couldn't provide a better reason to make the switch than the old language was out of date. DON'T go to an interpretive language for a near real time application if the supporting architecture isn't going to support the added overhead.
My first job out of grad school was doing Mac programming. Never really used at Mac let alone code for it. But they said "No problem, we'll teach you what you need to know." Now granted this job was in BFE Florida and they probably couldn't find anyone desperate enough to move there.
That being said, I have seen people hired as graphic designers in a department where everyone did their work on a computer who had no clue how to drive Photoshop or Illustrator.
Had this rule here for years.
New mgmt have come in.. and they don't want to deal with 'issues' but 'let the system break and deal with issues then'.
No proactive work; no commenting on other people's work; no reviewing other people's work.. just put it in and if it breaks then complain then,
It's going to be a real shocker when they next ask for a major piece of work the answer is likely to be 'factor in 1/2 a year to a year to sort out existing system problems before we start'.
I wonder if we will get a new mgr when this one has a heart attack after that..
"...I mean real-world projects with real-world users. There is no excuse for software developers who don't have a site, app, or service they can point to and say, 'I did this, all by myself!'..."
I found these statements about real-world projects ironic. I have worked as a developer for 10 years and everything I did were in house solutions for 10,000+ intranet users. These are real-world projects with real-world users. I don't have a site to show my work because none of the work I did could be make public.
Let's just say that my Bachelor's Senior Project produced my code samples, which in turn got me my start in the mobile software development industry a month after graduation five years ago. Even then I was still able to produce code that enhanced my skills outside of work (yay for iPhone to Android ports). So far, now that we're trying hire more iPhone and Android devs at work, I'm always asking for and reviewing prospective candidates code samples before we can even consider them for interviews.
I intended to include myself in "people". I phrased the answers in terms of "people" because had I said I wanted the answers just for myself, I thought I might sound selfish.
I just had to tell a client of mine again that in tandem to whatever other tests they want to give new hires they should give them a piece of paper and have them write some code to:
Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".
*DrugCheese rants*
Good interviewers or hiring managers are even harder to find.
HR people just look at your GPA nowadays. The little bootloaders/OS selector that I wrote back in 1999 for all my home computers does not count. Handful of CS:S mods does not count.
I have a friend who showed an aimbot he wrote for a MMO and anti-cheat bypass he wrote for a certain online sports game, the interviewer just show him the door.
These companies obviously can't see the value of "recreational programming" over "school projects".
New Economic Perspectives
"If you're young and have a "mentor" who is over 35 I think you're going to hear a lot of prejudice against the good new ideas, and that they will want you to learn what that they can continue to mentor you in, not what's most relevant or useful."
Well... I'm 54, and have been programming since 1972. COBOL and Fortran. PDF-8 and 11. IBM 360/370 AS. Smalltalk. 6502 and BASIC. 68K and Object Pascal for Mac. 8086 and C++/MFC for Windows. Java. Transact-SQL and ASP and ColdFusion and JavaScript and JQuery for the web. PHP. Objective-C for the iPhone and iPad and Mac OS-X. And that doesn't even begin to count the things I've dabbled in, like Forth and LISP and Ruby.
I think you're painting with too wide a brush. Some people choose to remain stuck in the past. Some people embrace the future. I love programming because the field is continually and constantly changing. There's always something new to be discovered and learned, and that inspires me and encourages me to grow and change and adapt right along with it.
I guess the only point I'm making is that not all mentors "resist change". You just need to find the right one, and also, perhaps, keep an open mind as to what might be "relevant" or "useful". And bear in mind that not all ideas are good simply because they're new.
Of course, you often need "hard won experience" to realize that... (grin)
Have fun, and enjoy the ride.
Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
"If you're young and have a "mentor" who is over 35 I think you're going to hear a lot of prejudice against the good new ideas, and that they will want you to learn what that they can continue to mentor you in, not what's most relevant or useful."
Well... I'm 54, and have been programming since 1972. COBOL and Fortran. PDF-8 and 11. IBM 360/370 AS. Smalltalk. 6502 and BASIC. 68K and Object Pascal for Mac. 8086 and C++/MFC for Windows. Java. Transact-SQL and ASP and ColdFusion and JavaScript and JQuery for the web. PHP. Objective-C for the iPhone and iPad and Mac OS-X. And that doesn't even begin to count the things I've dabbled in, like Forth and LISP and Ruby.
I think you're painting with too wide a brush. Some people choose to remain stuck in the past. Some people embrace the future. I love programming because the field is continually and constantly changing. There's always something new to be discovered and learned, and that inspires me and encourages me to grow and change and adapt right along with it.
I guess the only point I'm making is that not all mentors "resist change". You just need to find the right one, and also, perhaps, keep an open mind as to what might be "relevant" or "useful". And bear in mind that not all ideas are good simply because they're new.
Of course, you often need "hard won experience" to realize that... (grin)
Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
If you're looking for people with factual knowledge in a certain area, technical interviews will work well. For example, groups doing work with MFC often need an expert with MFC because there are ways to do things that work and ways to do things that don't work. Simply asking a few questions will determine if the person knows those things or not.
But if you are looking for general programming ability, it's much harder to ask specific questions. Whether or not an employer should expect it, having a portfolio is a really good idea. It doesn't need to be that much code. It's just a demonstration of what you would do. In my old portfolio I had a link to a software project and then a document containing excerpts of the code that I wrote. I then wrote up explanations for things like why I named my functions the way I did, some key design issues that reflected my programming personality, etc, etc. The whole document was about 4-5 pages. Let's face it, hiring managers aren't going to wade through 10,000 lines of code. They want an annotated overview.
For me the interesting thing was that my code examples were not what attracted the most interest. I had also included examples of how I liked to handle issue tracking and planning. I showed the type of documentation that I liked to write and the kinds of charts and graphs I made to show my progress. Management types eat that stuff up. It also showed that I knew what a good work flow was and that I was an organized programmer (as opposed to a cowboy coder).
I've noticed a lot of people here saying that they don't have time to write up a portfolio. Although different than what TFA suggests, even a portfolio of toy problems will at least give people an idea of who you are if you annotate it well. At the very least it can drive a discussion. I always used to put my portfolio on my web page and write a link at the top of my resume. I would also bring it on a CD ROM to the interview.
I'm out of the software business now (I prefer to write free software in my free time rather than proprietary software in my paid time), but if I were to go back, the first thing I would do is make up a portfolio again. Especially since I've been out for 5 years, I doubt I could get a job without it...
When you compare cheap ass domain and webhosting ($50/yr) to a cheap ass cell phone bill ($60/yr), the hosting is cheaper.
When you compare a full featured domain and webhosting ($7/mo) to a normal cell phone bill ($35/mo), the hosting is cheaper.
What more do you want, other than a tutorial on how to use google to find a fair deal on hosting that supports webapps?
“Common sense is not so common.” — Voltaire
While Evans does have some good points he's asking for what is sometimes impossible. "Have them implement a new feature while your watch." While this sounds like a good practice it would rely more on luck than on actual coding ability. Not everyone has an immediate and crystal clear view of how to implement a new feature, and in many programs it can take weeks and sometimes months to do so, and he wants us to perform this task. What does he intend to have interviews last this long? It would be better to have them implement something simple, useful, and not covered in school, or any books. An example of this might be print out a list of clients sorted alphabetically from a MySQL database as a html document using a CSS style-sheet we provide. This should take only a few hours for them to do and would give a much better example of their coding style. On top of that you can randomize elements, and for harder ones maybe even give them the assignment as a pre-interview exam. (note you can count this as part of their resume, and if they cheat or lie on it of course you have legal avenues you can go down to ensure your companies integrity,) Then never give them a mission critical area to develop in the first year of work, this way you can see how well they will really work out. if they can't meet your standards within the first year then they are probably not suited for your company.
You have to realize that schools have a habit of creating rubber stamp students, that is students that cannot think outside the boundaries they are taught into. It's not that they are incapable of doing so, it's just that they have had little incentive to do so. You need to give them that incentive.
I am currently one of these students, and while i do have my own programs I have created for my own use, but i don't have any of these "android apps" you mention. Heck i don't even have a smart phone, why should i develop for a platform I can't test on? Are you trying to force me to either pay a phone company about half my yearly tuition every year or develop a crappy app that may not work, just so i can get hired by you? I'm sorry but that just does not make sense, there is a reason for entry level positions. I don't mind demonstrating my skill, but you have to make the conditions realistic. After all some features only take one to two lines of code, others require a complete reworking of the program, and if they have not worked on the project in a while they will need to study their code in order to make additions. I mean could you pass your own entry exam? And you should think of as if you had not geared it to yourself.
If you've been working commercially, then your portfolio is a list of companies that you've worked for and the projects that you've worked on for them. You probably won't be able to show the code, but you can show the shipping products that contain your code. The discussion is about fresh graduates. These people won't have large amounts of commercial experience to point to. They'll have their degree, and any projects that they did in their spare time.
I am TheRaven on Soylent News
"don’t interview anyone who hasn’t accomplished anything." -- OK, perhaps it works as a guideline, but not a replacement for a recruitment process. You could as well advise to hire only Stanford graduates or Topcoder champions, they are pretty much guaranteed to solve FizzBuzz in 5 minutes, no need to check that. My strategy is to sift as large pool of candidates as I can, test whether they can write code in the first place (use Codility [http://codility.com], saves me loads of time), then talk to them to verify whether they can think independently, communicate, get along well with the team and so on. Sure, accomplishments may suggest that your are not talking to an average Joe, but whether this Joe can write solid code is another subject. If he can, he won't mind confirming it in the recruitment process, if he cannot, you never ever want to hire him as a programmer.
I have been a software engineer for more than 12 years and a developer for more than 18. I have had jobs writing c/c++ (MSVC, Borland C++ Builder and gcc), Java & J2EE (J2SE RMI to Weblogic + Portal to Apache + Tomcat + JBoss), Perl (Catalyst + Mason) and Python (TurboGears 2.0 + SQLAlchemy). My resume reads like a pro athlete's scoresheet with well over twenty full lifecycle projects under my belt in all of my proficient languages.
All of that, and the simple fact is that it HURTS my job search instead of helping it. My varied career has lead to long term exposure to a language and some related frameworks which was then mostly forgotten as I picked up a new language and framework. I have no trouble at all taking programming challenges even if they are timed provided I have access to google or some API documentation but I simply don't remember the little nuances of any language I'm not currently working on.
This hurts me when some recruiter throws a timed competency test at me that reads exactly like a SCJP exam and expects me to remember the names of specific classes or language rules. Give me a couple of days, perhaps a week of working in the language on a practical project and I'd pick it all back up, but trying to sort it all on a per-question basis with less than 3 minutes to do it in and I choke.
Development is about learning algorithms and techniques, not APIs. Experienced developers know many ways of collecting, retrieving, updating and deleting data, breaking down complex problems into logical steps and then using experience to reduce the number of steps, reduce the number of times the required number of steps must be taken and breaking linear problems down into distributed tasks. A specialist in a given language is capable of coding faster in any given language than a generalist like myself, but then they only know techniques specific to their language of choice which reduces their ability to choose from multiple approaches to real-world problems. In addition, every problem is solved in terms of their language of experience rather than by pulling from the techniques discovered and improved upon by developers in multiple languages, apis and frameworks.
Hiring managers and other developers know this.
Recruiters and HR representatives don't.
Now if only a good business person could figure out how to code a business process that bypasses the filtering process put in place by non-technical recruiters so that hiring managers get presented with the best candidate for the position they need filled instead of the people who the recruiters think has the best chance of making them a pile of money.
For anyone who made it this far and is still reading: my personal technique for getting through this is to self-create projects in any and all languages and frameworks for which I expect to be interviewed and then just start coding the project. This generally means that I spend about a month looking for work while working 60-80 hours per week for free. The upshot is that I get an offer 9/10 interviews.
My $0.02 will always be worth more than your â0.02, so
...to the first interview without having developed something? I got into programming because I loved programming. I was writhing games in BASIC at 10. By 16 I had picked up C. My freshman year of college I was running servers on my machine in the dorm. By my junior year I was coding professionally. (Never did end up graduating come to think of it...)
When employers want to hear about hobbies, they want to hear about hobbies like mine. Writing web registration apps for large non-profits. Building IPhone apps. Programming micro controllers.
Coding is a lifestyle, it's not a major.
"Learning is not compulsory... neither is survival."
--Dr.W.Edwards Deming
This is the problem with tech today. You have to pay for the classes and education ( really pay ) then put up a lot more in the cost of the certifications. Then you try to get a position to be told either A. You are overqualified with your educational background or B. You dont have enough real world experience. Time for either an overhaul of the education system, a change in business models that support older programmers that refuse to train or change, or a apprentice/co op program for the profession.
A few years ago my company had a similar problem. Our department received the budget increase to make two need intermediate developer hires. Before I knew I had two new people sitting in front of me. Our HR department had done the hiring without really consulting with development. In the past we always had a two tier system: HR filtered out the weeds, senior development personnel interviewed and picked the candidates for hire. The two tier system worked well. Let's face it HR people are really qualified to determine who is a qualified developer. :(
The two new "developers" that were hired neither one had a degree in computer science. Both had attended a one year tech course and had a "certification" (see Dilbert for my feels on those). Like story's poster said, any code the new people had created was terrible and not even close to what I'd expect from intermediate developers. My two additional "resources" ended up costing us more time and money.
Since we are one of the largest tech companies on the planet, you'd think we'd have much better hiring practices then we do.
There are quite a few reasons that attitudes like this really really bother me. The biggest problem occurs quite a bit in the area I live in. I live near Wright Patterson Air Force base. A lot of developers around here work for the base at one point or another in their careers, and a lot of graduating coders start out there, but they can't, by law, point at the projects they have worked on and say this is my work. The work is classified. Another issue I have is that some people have lives outside of the workplace and even school, and I don't mean partying. Some people wait until later in life to return to school. You tell your 8 year old that you missed his little league games to work on something that you aren't ever going to get paid for. One point to make before I close, what did your doctor do before their first job. Do you think the hospital said, "Don't hire anyone without experience"? Risk is an important part of the workplace. Who knows who you have on your hands, just because you're too lazy and incompetent to rewrite the mistakes a starting coder makes doesn't mean that a whole group of people should have to pay for it. Oh, and shouldn't you make the coder who screwed up fix the problem with a mentor helping, or is that too complex and difficult for you?
Doing the math (figuratively speaking), the programming field would die if this happen (again figuratively speaking).
Lets use 2 years for this example. If you don't hire anyone with at least 2 years experience, these people would never get any experience because they will never find programming work. So after the people with experience start to retire or take non-programming positions (managers, directors, janitors,etc), who replaces them? You'll never get new talent in.
They will never get the min 2 years experience because they never got hired anywhere, and they will never get hired without the 2 years experience min.
And to point out the "stupidity" of the argument of they need their own website, or some examples out somewhere to show their work, That's what friends are for. [Hey buddy, I'm trying to find a job. Post something up for me and give me a quick highlight of what's going on.] I was at a company where I actually watched these 3 friends sit together and do brain bench tests. Then were posting their scores on resumes and job boards as if they scored well by themselves honestly. I even got suckered by a college kid once. He asked me to help him with a homework assignment. Not thinking much of it, I went through it, pointed out mistakes and made suggestions. Later he told me he got a job, and couldn't have done it without my help, thanks. (Turns out it was something he needed to do to get a job.)
There is no easy answer. And not hiring someone new guy out of school is not going to be it.
Oh yeah, telling someone, "go find an open source app, find memory leaks and fix them...", speaks for itself.
Either I get the clueless HR guy who takes my lack of a degree or certification as a bad thing (at least I can namedrop some big companies instead), or the IT manager who seems to thing that knowing the exact PC boot sequence or being able to memorise how to do specific tasks is important - in my mind if I can google it as a top result its not worth remembering.
Best interview has to be the more open ended theory based questions - how would you explain TCP/IP, DNS, DHCP? How does accessing a website work? How would you troubleshoot a problem, or .
Web applications don't all need to permanently store user input to still be applications.
Permanent as opposed to what? If you mean permanent as opposed to for the duration of a session, a Firesheep user can still break into your session by snooping your cookie.
A good portion of the web apps I use on a regular basis do not require user accounts
Please describe some of them so that I can understand what you are talking about.
Flipping burgers?
So one gets the money for hosting by flipping burgers. Then where does one get money for a place to live and the student loan bill? I've read that a pair of part-time minimum wage jobs doesn't even pay for rent, food, and utilities in large parts of the United States, and as you pointed out, there appears to be a stigma against living with one's parents after graduation from college.
Make all the excuses you like.
How should I phrase my questions in order that they don't sound like excuses? I am trying to collect the best answers to these questions on a web page so that when others make the same excuses, I can direct them to that web page.
And android-app.
Those without a smartphone will have to use one of the other options.
A windows-program.
How should an individual get his Windows program signed so that it doesn't trip the "SmartScreen application reputation" filter in IE 9, which considers unsigned programs to be "not commonly downloaded and may harm your computer"?
In the 80's and 90's I usually hired people that were right out of college, but always with some accomplishment like amateur radio or I built my own computer, something practical. They were bright, focused and hard working. I was at startups and the brutal work schedule was sink or swim so problems solved themselves. By 2000 I had changed my philosophy in hiring to something also simple: the candidate must have had at least 5 years in his most current job and had actually delivered a commercial project.I had to screen more than 1000 resumes to hire the 20 folks I needed. What I found time and time again were bozos (java it always seemed) that had 5 years experience with at least 5 different companies inevitably with titles like VP of blah-blah, architect of blah-blah, and wanted $150K to start. These went straight to the round file. My criteria winnowed the field to about the 60 I phone interviewed. Face to face interviews were about 30 of which I hired 20. All but one is still with my firm after 10 years. The one we lost told us she would only be here for 3 years as her husband got rotated by his firm. Java is just a language, it is neither good or bad. The culture of Java is a fucking disaster. Sun design patterns and EJB's are the quickest way to kill an application. Code usage is very important, code reusage is bullshit as a paradigm.
Is it any wonder why my groups always succeed?
Yeah, everyone hires at least one dud, my mistake was to vote to hire someone who I thought didn't interview well but had been recommended by someone I trusted.
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
I can guarantee you, without fear of contradiction, that no software engineer will ever have to write a binary search after they are hired.
Your guarantee is broken. I once worked on a project that needed to determine how many call center agents would be required to provide a certain level of service given an approximate call volume. We previously had used a third party dll, but when we moved to x64, that dll failed to work and the guy who developed it responded saying he had no interest in upgrading it. So instead, I learned the math behind it and went to work. The calculation for level of service required a check of whether the number of agents would meet the service requirement. I got an exponential speed up by writing it as an unbounded binary search (first doubling to determine the upper bound, then doing a search between n and n-1 to determine the minimum number of agents that meet the service level).
what new guy needs to learn is to rework what is already out there. "new code" is an oxymoron.
> If you want to get a job programming, but have never written any software that you've published, then you are probably not worth hiring.
No, sorry, that's not really true. There are a lot of exceptional people in the industry who have never published a thing, because all of their work has been on internal projects for their employer. I don't see why publishing software is very relevant - a lot of published software is complete crap.
I'm a junior in college majoring in Electrical and Computer Engineering. I haven't "accomplished anything" that Evans would take seriously at this point. The main reason is that I'm extremely busy for most of the year. I work for probably between 55 and 65 hours a week on average. Could I contribute to open source projects or develop Android apps on the side? Sure, if I wanted to regularly stay up for four days at a time and accept a hit to my QPA. (I know people that do this.) Last summer, I wrote a good amount of code for internal use at the company I worked for, but I can't really go sticking that in portfolios. I hope that Evans will forgive me for taking an actual break on my winter break, as opposed to seeking out "real-world projects with real-world users" to contribute to in a way that I can demonstrate pre-interview. (I want to do systems software, so things that I would seek out to work on probably won't have that many direct "users.")
I can buy that a technical interview with no demonstration of coding ability might let through some inept people. I got my last internship with just one technical interview. I hope I turned out OK. The company I'm working for this summer had a more thorough process. The recruiter comes to campus and interviews people whose resumes they liked from the career fair a few weeks prior. I can't remember much about that interview, but I don't think it was very technical. It only lasted about half an hour. Later that day, everyone that interviewed got an email directing them to go to a website and take a timed test with various programming questions. Most or all of it was multiple-choice, and there might have been some short-answer questions. People who they liked on the basis of the interview and test came out for on-site interviews. There, I was given a programming problem and five hours by myself to solve it optimally. There was a guy somewhere else in the building who I think was looking at my code periodically who would come over at various times and ask me if I could do anything to improve performance for a particular input. After I was done coding (actually the next morning), the actual interview occurred. The interviewer had read my code (and maybe talked to the guy who watched me work), and he asked me to explain it and describe my thought process as I designed it. I'm pretty sure that was the most important interview. In the other one, I asked the interviewer how he liked the surrounding city, and he talked about that for 20 minutes.
I haven't started working there yet, so it's possible that I could still show up and be the new guy that can't code. I think I can code. In the last year, I've helped write most of a small OS kernel for ARM, and I've helped implement a basic MIPS processor in Verilog (not real programming, I know). Those were both partner projects, but the commit logs will show that I pulled my weight. Nevertheless, if Evans recruited for this company, he would probably complain that I was working on contrived problems and that nobody actually used my results. I don't think that means that it wasn't freakin' hard or that I didn't do a good job. The interview process seemed pretty solid, though. It also seemed pretty time-consuming. I've never hired or managed anybody, so I don't know how you decide how much time to spend on a candidate.
This space reserved for administrative use.
I worked at a place once who hired a programmer who couldn't copy and paste. They had a degree in programming too.
Perhaps the new guy would be fine if he were writing code on a subject he has some experience with. It is possible to have loads of experience, to be able to pass the technical interview for legitimate reasons, and them be placed in a position that requires a lot of specific subject knowledge that they don't have. For example, you can hire a good embedded engineer into a place like Ford motors, and watch them fail to write anything useful because they don't know the engine control subject matter. Put them on networking issues, developing network routers (where they came from), and they are OK. Same embedded experience you asked for, completely different subject matter.
Words, words, words
And then someone can post or make sports picks or whatever my site does masquerading as someone else?
Yes, post. Posting as someone else can invite trouble with the law if one posts pornography, infringing copies, financial scams, etc. as someone else.
If I'm just running a hobby site for some friends that I can show off why do I care if someone hijacks their session for my podunk site?
For one thing, leaving link spam up can get you penalized.
I had the opposite happen to me. I have been programming for years, but couldn't get a job because I did not have a degree. I got that degree, went in for an interfivew, got the job, but before they would hire me; they wanted their top programmer to interview me. He asked me questions that was clear to me he did not understand programming. Then he said I was pulling it at of my a**. I said "What!?" And ye said "Yeah, you are pulling it out of your a**." WoW! Lost that job and was downtrodden. Wound up wokring at a University for half what I used to make. They get a great deal and I am supposedly building up experience. I think the biggest problem is that no one understands the "programming"problem in the first place. People who say they are experts don't know everything and those coming in just need the experience; we all know that.
I've written for that and gotten published through Seti@home, Linux kernel, gcc, leafnode, the list goes on.
You are telling me that none of your itches ever crossed any of the very public and accessible projects out there. I don't believe it.
Just like you, the vast majority of what I've coded has never been published, but some jewels have been. It is very nice to be able to tell the prospective boss to "just google for xyz@yahoo.com and you'll find my *real* resume".
Good judgement comes from experience, and experience comes from bad judgement.
- W. Wriston, former Citibank CEO
I reject this. I've been working extensive hours job hunting for several years now, with multiple non-programming-related jobs to keep me alive. I'm not a front-end designer - so what code I have done is either part of a system that can't be released, part of my own projects that are missing the final presentation cleanups (because I'm not sure how they should look) - or out and out gone, as several projects I worked on have been entirely wiped - sometimes after a year or more of production use - simply due to the company "moving on".
Hand me a design and I'll make it work.
Hand me a component and some interface guidelines, and I'll make it work within that.
I honestly don't know where to apply myself in open source - 90+% of the projects need a better front-end, and that's not what I can do.
I got a BS in Business Administration, and I could not find a non-sales job for anything back in 2005. EVERY decent paying job (ie, greater than 35k) required 5 years experience. How could you get experience if you can't afford to work for that rate? At least, with coding, you can work on some open source projects.
No single raindrop believes it is to blame for the flood.
Glad to hear you're staying relevant, but it's not really about moving onto new platforms where you have no choice but to learn new languages, rather about new ways of doing things. People who are used to procedural code are going to be very wary if you're sure a functional approach is the best way to model something.
Also I'm sure you have a wide range and lots of experience, but I really doubt anyone who goes back that far could really mentor someone like myself in things like jQuery or PHP (for example) which I got into as I learned and probably have done much more of.
The main thing I don't like about the "mentor" thing isn't that old guys don't have lots to offer (I work with a couple and they definitely do), but because "mentor" implies the mentor knows everything best and that is the one-way source of all knowledge and always the best person to make the call, and that is far from the truth.
// MD_Update(&m,buf,j);
I did mention JQuery above, didn't I? (grin)
Regardless, from my perspective mentoring is largely about passing on some advice, some pointers and perhaps offer a few possible approaches to solving problems. Mostly because we've seen many of them before.
And as I also said before, please bear in mind that not all ideas are good simply because they're new. It's funny you mentioned functional code, because the new darling on the block [sic] is Clojure. Functional languages are great for certain problems, but tend to suck at others, as the LISP guys learned long ago.
Stick around long enough, and you'll watch the fads and "best practices" come and go. Assembly moves on to stack-based which moves on to procedure which moves on to functional which moves on to objects. Object systems morph into component systems (ActiveX), and then into full-blown byte-code VMs (UCSD Pascal, anyone?). Pure object-based systems lose their luster, and the "solution" is XML-driven configuration and binding. The web pops up, and we get ASP and PHP (procedural) which gain objects (C#, PHP5), and the whole thing spins 'round and 'round.
Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
And I suppose your current Windows / Linux / Whatever machine was free?
Sunk cost. It was paid off before iOS 2 and the App Store came out.
Im at city.ac.uk doing a C# evening course and most of the people there have at least 10 years experience coding for aerospace, private sector, mobile handsets, etc and all apart from me are having trouble in Lecture 2 out of 10 implementing bubblesort after being given the algorithm in pseudocode. Coding is a very rare skill, even given the garbage collection and stuff in c#
A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
Slashdot's inability to show deeply nested replies properly tricked me into making a double post. I apologize.
I have a PCI TV-card that's fast enough to use with a Playstation. Show me one USB TV-card that can do that.
Most games for the original PlayStation ran at 320x240 pixels and 30 fps or slower. At 16 bits per pixel (assuming uncompressed 4:2:2 at 8 bits per channel), that's only 37 Mbps, fast enough to fit over high-speed USB 2.
The attitude that things are really just reinvented, and you can just do things like you used to but in a different format, can really hold things back.
// MD_Update(&m,buf,j);