You run the risk of seeming desperate. In addition, if you're volunteering and are not an employee, the company doesn't have the same level of liability protection against what you do than if you were an employee. (I'm not a lawyer, so I can't speak definitively on that last point, but I'm pretty sure about it.)
Why not, Go for it. In his younger years, my current boss interviewed for a robotics firm that said they didn't have the money to hire him. He convinced them to let him to the work for the project then they could decide if they wanted the output or not. If they wanted the work he had done then they would pay him. He worked for them for years even though they didn't have the money to hire him as an employee. I say go for it!
I suppose the alternative to this would be to volunteer on an open source project. That would improve you undoubtedly and look great on your cv/reusmé.
It sounds like a good idea for your development but i think that you will slow down the development process because every new person in a team slows down the other persons.
I certainly don't want to sound desperate
This sounds desperate. On the other hand, it shows a good amount of initiative and willingness to prove your worth -- I've hired people who have shown less (unfortunately).
One reason why this might not go through (even if the company wants to give you a chance) is liability. Also, I'm not sure how I would feel if I were a client and I knew that my work was being given to somebody who didn't get hired outright, and wasn't currently being compensated. It seems like a pretty big risk for them to assume.
I wouldn't recommend it unless they can offer you some form of compensation (doesn't have to be money) such as paid-for books or something of the like.
This also sets you up to being taken advantage of. From there on out you will likely not have the same bargaining chip. They either want you or they don't.
If you want to volunteer with something to learn it, get involved with an open source project or start something yourself. Use that project to point to other managers and do a show-and-tell type thing. Alternatively, find a non-profit entity which has a greater chance at offering other types of perks.
One think we don't think about much is that they might not have hired us simply because someone else was better. Many places are really looking for one person; they simply don't have the budget to hire two or three. So if 50 CV's have been sent to the job, and 8 are selected for interviewing, and you are the second best, you did better than 96% of the people and worse only than 2%, but still you don't get hired. Manchester United did a very good European Champions League tournament, but they didn't win it anyway. They were second.
If this was your case, volunteering in the hope that they hire you will probably be useless. They already have someone to do the job, and they won't settle for 2 people because they can't afford them or in other words, they just don't have enough profitable work to assign to them.
I wouldn't accept that kind of volunteering at my place if I was a manager. Workers should get their salary. But that's just me. (Note also that, at least in my country, it is illegal to have someone working without a contract, and there is a minimum salary fixed by law.)
Unless this is a tiny business and the potential boss is the owner, hiring an employee as a "volunteer" in a for-profit company can be an HR nightmare. There are issues like liability, contract issues, etc. that are likely to turn the potential boss away from the gift of "free employment".
In addition, if they were interviewing for the position, then they will likely fill it with a paid employee. If it is a small place, there won't be a place for two of you. This isn't a football team with a depth chart :)
My advice: Cut your losses. Look elsewhere. If you succeed elsewhere, try to reapply to this place in a year or two. Some places will be willing to give you a second look.
If you want to volunteer and don't mind not getting paid, either find an unpaid internship (some places may still be looking), build your own thing, or volunteer for an open source project that uses those skills.
As an alternative to volunteering, how about offering a lower salary: e.g. offer to work for whatever the 'minimum wage' is in your country, for some probationary period.
I don't like the idea. Have you thought about asking to take the test again?
Look into open source development projects and see what you can find.
Maybe something on sourceforge?
I would say don't do it. Many companies just aren't equipped to handle a volunteer, and it will likely end in an awkward situation. There are a lot of legal and security issues, and it would probably more hassle than benefit for 3-4 weeks of your time when you have no familiarity with their code.
A better idea may be to really cram, call them back 4-6 weeks after the interview and tell them that you were disappointed with the results so you've done everything you could to improve your skills. They may give you another shot.
I would never volunteer somewhere but you may want to think about asking about taking a lower ranking position. If it was for a Senior position, see if a normal software engineer or even a Junior software engineer position is available.
Perhaps as a better option is to ask them if you can work on an internal project. There is less risk for them, and an opportunity for you to prove your skills.
We have piles of internal projects that we'd be happy to let someone work on if they asked.
Just make sure to agree to a scope so you don't get taken advantage of!
Your situation sounds very similar to mine 5 years ago. I too found a great company. My experience matched their requirements quite well. I had an interview with them, and then sat down and started their little test project in ASP.NET which was supposed to take me an hour. I took a little more than that I think but I came up with a quality solution. Although I met the bare minimum experience requirements, in the owner eyes I was perhaps a little too young.
So he didn't call me back right away. I kept in touch by email though and asked him how interviews were going. And in the meantime I looked all over and couldn't find anything better than this place. Finally I sent him an email suggesting a pay rate that was about 50% below what I deserved. He returned my email right away and offered me a job. So I got my foot in the door.
Some might think it was a mistake to suggest a salary so low. But as it turned out, my instincts were right. This was a good company and it only took 3 months before I got my first raise. And it was a healthy raise. 6 months later I got another raise and suddenly my salary was fair.
I don't know if what I did will work for you, as their hiring situation may be a little different. But it certainly worked out for me.
Don't do it.
The time can be better spent. Think of a hobby project and go with it. You're likely to learn more things in a month than in a boring business environment in a year.
This doesn't answer your question, but (if you can afford it) an alternative to consider (instead of volunteering at this place) is to study for a Microsoft certification/test:
The kind of test you say you were asked to do in the interview is about the same kind of topic that's covered in (and which you'd study for) the certification curriculum.
Having a certification might help to get your resume past HR so that you can get that interview.
To be honest, I would cut my losses and move on. You'll find it less depressing in the long run.
It's like trying to chase after a girl when you've already blown it with her on your first date. No matter how hard you try, it won't feel like the first time again for either of you (you've already formed your first impressions)...and you can come across as needy and desperate, even if you're not.
You've had your opportunity, you've learned a lesson from it. Now direct your focus to whatever comes next.
Something you might want to try, which would also have a CASH bonus, is to sign up for a project or two on contracting websites (Rentacoder.com, Getafreelancer.com, etc...). That way, you'll be getting back in the groove of programming, and earning cash while you're at it. Doing complete websites would not be a good idea since you are rusty, but you can do smaller jobs (fixing admin sections, cosmetic changes, etc...). You would not make a whole lot on these sites but it is good experience that you can put on your resume.
Also, I suggest looking for work on craigslist.com. There are many programming-related jobs available there (local and telecommute).
Best of luck!
I believe that the best course of action is to practice, practice, and then practice more for the second chance that you were offered. You should take advantage of all that you have learned from the first attempt to devise a lesson plan till the day of your second practical test. From what you have provided I gathered the following topics that you need to work on:
- Database developmet: Stored Procedures and SQL
- ASP.Net with some ADO.Net (assuming they don't let you use the DataSet Designer or LINQ)
- Validation
What I would recommend is that you take each piece individually and work on honing your skills there. Once you feel comfortable with the components individually you can work on putting it all together. Lastly, you can work on coding within a time frame.
Without knowing the specifics of the practical test - like what tools you were limited to - I can't really provide a detailed plan, but that is something that you can do on your own. For example, if I take database development, I would assume that they have a number of tables created and you need to create stored procedures to insert, delete, update, and select data. I would practice creating a number of stored procedures with the database engine that they used in your practical test until you feel comfortable writing stored procedures quickly.
As for the volunteering question, I would hold off on that till you make your second attempt, because hopefully you won't need it. If after the second attempt you are not successful, and assuming that not finishing the code in 1 hour is the only thing that is stopping you from getting the job, I don't see any harm in asking the manager if there is anything that can at least get your foot in the door like volunteering or interning in the company.
While there are numerous suggestions to work on an open source project, something I've not seen on here is to do volunteer work for a non-profit organization. Often small groups (churches, women's shelters, community theaters, etc.) will have work that they can't afford to pay for.