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.
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
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!
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
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.
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.
I, for one, would like to take a look.
I am very small, utmostly microscopic.
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.
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.
No doubt you will get flamed for that, but there's a lot of truth to that. One of the best engineers I ever hired and worked with had a degree in Ocean Engineering and subsequently dropped out of law school. Ended up working as a gopher for a law firm. One day she walked into my office and asked for a job. Just so happened I needed somebody to be a gopher so we hired her. In three years she was running an engineering office and managing multi-million dollar projects.
She never would have made it past the filters proposed here. Some people just take the scenic route through life, and if you just look at "accomplishments" instead of people you will miss out on some of the gems.
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?
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.
The incompetent need to eat too.
That's what taxes are for.
Why not mentor the moron. Maybe they will turn out to be Einstein.
Hiring someone to help with the workload in your department only to have to mentor them is a terrible outcome.
// MD_Update(&m,buf,j);
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.
The "quiz" questions are good to see if people are lying on their resume. In Java, for example, we ask "What is the class all other classes are derived from?" "What is the difference between == and .equals()?" If you've been coding Java competently for 3 years it would be impossible not to know these things. And many people putting "Java" on their resume do not know them.
You are correct that asking for X number of years in a narrow skillset is a bad idea. And I don't expect someone to know a technology if they didn't put it on their resume. However, if a coder is a master of those things he puts on his resume, that's a good indicator of his future success. This has been our experience.
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?
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?
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.
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.
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
..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?
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.
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?
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.
Companies who think they are only hiring the "elite" are stupid. Most jobs don't require elite, they require a body that can do the work.
I think it's interesting that you said about half of developers will be below average. Isn't that the definition of below average? But it is absolutely correct. We can't all be in the 90th percentile, by definition.
Even worse is putting a 90th percentile person in a 40th percentile job.
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?
$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.
Comment removed based on user account deletion
I'm guessing your lack of capitalization and punctuation skills were involved.
We're talking about engineering,
You ARE NOT an engineer.
Software engineering IS NOT engineering.
They are very good engineers.
NO they are not because they are NOT engineers.
Moron.
Software Engineering is a stupid title for stupid people to bolster their stupid little egos.
Dipshit.
That is just utter bullshit. I work with CS, EE, CE, Mechanical and Systems Engineers, and I can tell you that your statement is nothing but a proxy to bolster your own ego. Projection is a bitch, ain't it. Granted that a lot of people call themselves "software engineers" when they are anything but. But that'd be like saying EE is not engineering because there is a douche bag out there changing lightbulbs and calling what he does engineering.
Or you could move to cities like Austin where there are more dev jobs than can be filled. You can make above average salaries in an incredibly cheap housing market in an area with a high quality of life in one of the consistently top-ranked cities.
Problem is most people don't want to relocate out of their crappy local economy to a better one in their same state, let alone emigrate to another country altogether.
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.
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.
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.
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'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.
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?
This just means your company is not very desirable for the more experienced folks. And everyone who has experience is already busy.
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
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?
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.)
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
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.
My post was to a student ostensibly graduating this year. Experience people have resumes for these sorts of things.
The question posed was how people with no work experience could show they were competent before they were hired.
Helps to RTFA sometimes I guess.
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.
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:
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?
Why? While it's true that adding more people to a late project makes it later, hiring people who need mentoring is not necessarily related. There's nothing wrong with having oodles of experience and still being open to being mentored by someone more experienced ... or with complementary experience.
Likewise, someone with more experience should be open to mentoring others, unless they're "hording" their "special knowledge" because of their own insecurity.
Mentoring is a pleasure; you'll find it hard not to, if you know your field and are enthusiastic about it.. Try it - you'll find that you learn as much while mentoring others as the people you mentor, and it's an opportunity to sharpen your communications skills (the #1 reason for failed projects is sucky communications skills. Think about it ...)
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
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.
NO they are not because they are NOT engineers.
Moron.
Software Engineering is a stupid title for stupid people to bolster their stupid little egos.
A friend of mine is a Chartered Engineer and software engineer.
Maybe you should take a look at that chip on your shoulder.
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
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_
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
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.
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...
Sigh. Why does everyone here always have to deal in absolutes? Either this OR that?
How about: As a general rule, try to find people who've demonstrated some interest in the field *outside* of class projects, or who have something they've done on their own that you can inspect and question?
Now, if you think you've found a "gem" that doesn't fit the "filters", then by all means go with your gut. But know that you've just made an exception to your general policy, and take responsibility for it if and when it doesn't pan out. And, of course, full credit if it does. (grin)
Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
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
I think the chip is because there are thousands that call themselves "software engineers" that would be laughed at if they attempted to join any sort of professional engineering association which has engineers specialising in software among it's members.
I always let it slide unless the person involved tries to make a huge deal about it. In defence of the guy you say has a "chip on his shoulder" it looks like the above AC was making a bit of a big deal about it and including a lot of people under that title that do not belong. I think you are being critical of the wrong person.
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
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"?
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).
> 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.
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);
Because when you hire someone it's usually because you need help, now. Hiring someone and then having more work because you have to train them yourself is not a good outcome unless things are pretty damn cushy.
// MD_Update(&m,buf,j);
Unless you're doing cookie-cutter stuff, you can't just take a new hire, no matter how experienced, and expect them to hit the ground running. They're going to need to learn their new employer's way of doing things- coding style norms, version control, who is responsible for what, the chain of command, who to go see when things go really fubar and the database now looks like google threw up ...
Remove powerpoint from every computer and all of a sudden you'll have the extra time for some training.
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.
I wouldn't call showing someone business specific conventions and procedures "mentoring".
// MD_Update(&m,buf,j);
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);
I wouldn't call showing someone business specific conventions and procedures "mentoring".
Then your definition of "mentoring" is too narrow. It definitely involves imparting both domain-specific and business-specific knowledge, including conventions and procedures, as well as helping navigate the shoals of corporate politics and relationships with coworkers and management.