Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

For a large software project recently, I was really out of my depth. And I did actually know this; and that the only reason I was employed was mostly a lack of other qualified candidates.

The job was to build a large application on top of PHP/MySQL, a system I had little experience with. (I did advise the employer of this beforehand -- I've been spoiled by C# ASP.NET/MVC and MSSQL Server) The main reason I applied was location, location, location -- on campus jobs which actually have any programming component are relatively rare.

For almost a year and a half I've slogged through this, and I think I can say I know (at least somewhat) what I'm doing now. I've made some mistakes, torn out some hair, and moved on. (I'm still working on this system nowadays, but I no longer feel completely lost)

In the future though, I'd like to keep my personal and professional self a little healthier than what occurred in this case.

So I'm curious -- what's the best way to handle a situation like this?

share|improve this question
1  
+1, have been wondering the same thing –  John Straka Mar 2 '11 at 21:16
    
What would Tim Thomas do? –  Job Jul 9 '11 at 3:42
    
@Job: Who the hell is Tim Thomas? –  Billy ONeal Jul 9 '11 at 3:54

13 Answers 13

up vote 31 down vote accepted

Personally: Study and work like a dog. Not everyone is gonna give you learning materials and say "We'll start the project once you've learned everything."

If you stay in your comfort zone your whole career, you'll get left behind.

share|improve this answer
    
I'm not asking for hand holding lol -- but you don't think I should have said something to my boss about what was going on at least? –  Billy ONeal Mar 2 '11 at 20:48
18  
@Billy: You even say: "I did advise the employer of this beforehand" (with respect to your lack of experience). You disclosed your experience level and they still hired you. You did fine. Take advantage of this learning opportunity! –  FrustratedWithFormsDesigner Mar 2 '11 at 20:51
    
Yup, catch up time. –  Ed S. Mar 2 '11 at 23:39
    
This answer gets a green bent angle thing by popular demand. –  Billy ONeal Mar 3 '11 at 3:54

In your situation I see two options:

Sink or Swim.

And it looks like you chose swim. Having had to struggle to come up to speed on this technology you had not used before I'm sure you have gained some skill in your ability to learn and learn fast. So if it were to happen again you would already be better prepared. Not by knowing more about what you are working on but how to find out.

share|improve this answer
1  
Isn't there a middle ground involving good communication and a slower pace? His employer chose to hire him, knowing his skill level was lower. Presumably, he was not being paid a ton to learn quickly. His health was being impacted. Saying, "This amount of work is unreasonable for my skill level in the given time frame. I can do it, but it will take twice as long because of the learning curve," is a valid third option that merits consideration. –  Ethel Evans Mar 2 '11 at 23:47
    
Communication is very important, I had not mentioned it in my answer but I don't believe the "Swim" to be mutually exclusive with communication. –  Tim Mar 3 '11 at 12:42

Be honest. Tell your employer right up front that it would take you longer to finish than a qualified developer because you need to allow extra time for learning and errors, but that you are confident you are capable of learning what needs to be done in a reasonable amount of time and at the end of it all you will have a suitable product that does what they want.

There are all kinds of arguments you can use in your favor. The cost of hiring you vs outsourcing the project. The fast support and maintenance afterwards since you'll be familiar with the application. The fact that customizations can be easily done in-house instead of waiting on a 3rd party vendor.

If they are fine with that, than get to work learning! It's a great opportunity to expand your current knowledge base and get paid to do so.

share|improve this answer
    
+1. Insisting on more time is the space between giving up and overdoing work. Your career is like a marathon, not a sprint. You need to find a pace for learning that you can maintain long-term, and choose carefully when you will invest more effort to make a push to get ahead of the crowd. –  Ethel Evans Mar 2 '11 at 23:56

Take advantage of the situation by learning something new. Read some articles, pick up a book, even build a starter project to get you going. You'll gain the knowledge you need to get your work done. Once you get going with work, the experience will roll in.

I did this on one of my college co-op placements, and it was very beneficial for me, not just for that job, but later on as well.

share|improve this answer

Show me a developer who hasn't taken on a project that was out of their depth and I'll show you a slacker. Who wants to do the same types of things over and over again? What you do, is work your butt off to learn the new stuff and leverage what you know to apply what you already know to the task at hand. The most important thing is you get the job done so you get to be the one that gets to do the next new technology that comes down the pike.

share|improve this answer
1  
There's a difference between doing something new, and working a project where the entire scope is out of one's depth. In the first case of course it's reasonable to expect that to be a most everyday occurrence. In the second it's unusual. –  Billy ONeal Mar 2 '11 at 22:35

My boss, who is famous in his field, and owns an important SW corp that he built largely with his own brains and hard work says "If I only did things I fully understood, I never would have done anything".

Nothing wrong here. Possibly communication. You told them at the start, so that is great. Do you give them realistic monthly assesments, or have you just been winging it?

share|improve this answer

The best thing to do it sit down and go to work. You developed a lot of skills while doing this. You learned how to learn on your own and quickly. How to recover from mistakes and how to keep management form getting bent out of shape because of those mistakes. The next this happens to you, you will find that it doesn't bend you out of shape as much. You have done it before and can do it again. So it won't affect you life as much.

share|improve this answer

Complain

Real, valid complaints are part of good communication.

Say you need more time. Say you need help. Say you need training. Repeat yourself. Explain that this is going to take longer, it will cost more. Ask if you can change the direction of the project. Can it be written in ASP.Net instead? Don't kill yourself.

Then communicate and work out something. Sometimes a few well placed words can save you days, weeks and even months of unnecessary work.

share|improve this answer
    
Obligatory link: despair.com/complaints.html –  Billy ONeal Mar 2 '11 at 20:54
    
haha, great video –  Jeff Davis Mar 2 '11 at 21:05

Ideally, don't be the only person working on it. That way you can ask for help from the more experienced team members. Also, the load on you personally will be greatly reduced => less stress.

If you are the only person working on it, well, then... ouch.

But php/mysql isn't the hardest thing to pick up when you know C# and SQL Server.

share|improve this answer
    
I was the only person working on it. –  Billy ONeal Mar 3 '11 at 3:57

It sounds like you did well. The more you learn, the more confident you will be when the next new thing comes along. The ability to learn a technology from documentation is highly valuable. I love to talk to candidates who say things like "I was hired to write Java, but then they wanted to make the website more dynamic, so I read ExtJS in Action, and then we ran into a performance problem so I started digging into some PL/Sql..."

share|improve this answer

If everyone involved understands that you were the best they could find, then they have to deal with it. Of course they'll try and put pressure regardless. They'll always want more. Few managers have a full understanding of what it takes to make software on a large scale (or even small ones). When in doubt, demand more.

You do your best and push yourself to learn more. You're not much more qualified than when yuo started. If you like the challenge, stay. Otherwise, you're in a great spot to work elsewhere.

share|improve this answer

I am in this position as of one month ago and must say I am loving it. Most of the time I am either working or at home researching stuff, I too see this as a great opportunity, but hey, some people, and I say this with no judgement, prefer to work less, and have more hair on their heads.

We are talking about a classic insertion vs. extraction time tradeoff here. Spending more time inserting to brain makes for a fast extraction!

GOOD LUCK

share|improve this answer

I find the best reference materials I can find and study them. I have had to do that a few times. Sometimes it has been because I was tasked above my ability.

Most often, it has been because we needed expertise we didn't have on the project and weren't likely get. On one project I spent three months studying and researching methodologies. Its rare, that I get that kind of freedom.

There was a time when we had local bookstores with a good selection of books. Often half the books would be worthwhile with an occasional standout. Now the selection is poor, and for my purposes I don't find many good books. Fortunately, there is lots of good references on the Internet. Sometimes it is difficult to find it, but it is usually there. I tend to collect links to things I may need to know. Sometimes the links die, but often the information gets better over time.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.