views:

1231

answers:

27

I've been working on a project and there is a "must" kind of a deal breaker for the whole project. I asked around, asked in SO ( with 550 bounty ), spend about 3 days to find a solution.

I found the solution but couldn't implement it in .NET. At the end I stuck.

Now what should I do?

I was thinking about going to a rentacoder alike website and just hire someone to do this? What would you do? and do you think hiring someone would help?

What I've done so far :

  • Slept on it, did different stuff for a wihle
  • Ask about 3-4 different places (expersexchange,ms newsgroup, private e-mail, SO)
  • Tried workaround it, ignore, find a different way, hack it (didn't work)
  • I've spend about 5 days with breaks, and I do believe this is the right problem to solve.
+5  A: 

Hire someone, if you are really stuck..Put it on oDesk

Omnipotent
If you're so omnipotent, surely you could have just given him the code :-).
paxdiablo
haha..for sure..along with my bank a/c number ;-)
Omnipotent
+1, if you can't get your answer for free, and it is valuable to you, try spending some money. Don't know why this was down voted.
Shane MacLaughlin
David Schmitt
+24  A: 
  • When I am stuck I try to assure myself that I am solving right problem.
  • When I really have to solve problem which I cannot and nobody around can help me I try to bypass the problem.
Jakub Šturc
that's what I do generally but in this case couldn't find a way to bypass the problem. I thought about lots of different implementations but none of worked out.
dr. evil
the "am I solving the right problem" question is very powerful
Jeff Atwood
+4  A: 

If I'm stuck, I take a break and walk a bit. This solves most of the problems.

If that won't help, talk to other developers, search the internet, ask a question on stackoverflow.

But in the end I always found the solution or found a way around it.

Maybe you could elaborate on your problem so we can help.

Gamecat
+5  A: 

Get help from your superiors.Don't feel bad for asking help from others.

Warrior
+13  A: 

When I was at university I was writing an application for a thesis that allowed real-time desktop sharing in graphical development tools (basically multi-player paint over a network) I constantly faced barriers which I could not overcome and sat for hours trying to figure out how to implement an architecture which could handle all cases.

My solution was this. Sleep. Seriously, you spend so much time thinking about it that eventually the clearest solutions end up turning to mud blocking your thought process from correctly figuring out the logical approach to a problem. I would wake up in the middle of the night after my brain had rested and honestly solve my programming problems. Take a step back and see the bigger picture.

Kezzer
I found that worked well at uni as well. You'd go through a long period of coding and the mind would start to go mad. The other way I got round it was in my first year a bottle of red wine for each coursework assignment (2 or 3 hrs each) ... multiple in a day was possible :-)
WestDiscGolf
You must've been trashed all the time ;)
Kezzer
+1  A: 

I try to do something else while I let my subconcious solve the problem. It is remarkable how often this works! It has turned out to be so effective that I try to always have two probjects or at least two distinct parts of a project I can focus on at any time.

Most problems have a solution, but if your problem turns out to be too hard to solve or any solutions are impractical to implement you should try to look for creative alternatives. Try to ask why you need the feature. Can you get around it some other way? There is almost always an alternative way to solve the problem.

Rune Grimstad
+8  A: 

If you can not simply open the code and ask for help, be very, very careful of legal issues. Someone who can help you (cheaply) might live in a country where any copyright claim or NDA == NULL. In other words, you have no recourse should that person plaster your code in a solid gold meme envelope.

If you can not open the code, be EXTREMELY selective and ensure that the person you hire is actually legally bound to your stipulations. Beyond that, ensure that you can actually enforce those stipulations if need be.

Ever try to enforce a contract when the other party is on the other side of the world? If you do it, find someone local and verify (in fact) that they are who they say they are.

Tim Post
I wish I could give about +10 for this. I cannot stress enough how important it is to heed this word of warning.
lc
I'm a US programmer (Baltimore is home) living and working in S.E Asia .. there are SO many pitfalls to avoid. Trust in business is always based on ease of recourse if that trust is violated, so many people seem to ignore that.
Tim Post
That's one attraction to open source software stacks. At least it's possible to see what's going on at every level of the stack.
Dominic Cooney
+1  A: 

When I am stuck, I try to work around the problem. I see if there's another way to attack it - possibly a solution that's not perfect for what I want, but will accomplish basically the same thing. I try to verbalize the problem and see if I can think of a workaround, hack, or possibly another tool for the job.

Try rewording the problem and really get down to the root of it.

Remember, there is always a solution to your problem. There may just not be a viable or easy quick fix. For example, if a web browser isn't working as intended, one option is to write a new browser! Further deliberation would then tell you it's a bad idea, and you can probably get away with writing an add-in instead.

If this all doesn't work, take a break, work on another part of the project for a bit, then come back to it after a good night's sleep. Often answers will just come to me later and I find myself thinking "Now why didn't I think of that earlier?".

As an aside, I think our brains are just wired to constantly review recent actions and their outcome. Ever magically "get better" at a skill if you wait a day or two after practicing?

lc
Not sure about others, but I find myself the most creative and effective within the first few hours of waking. So, I would add to this:If you wake up at 5:00 and (after breakfast) have not solved the problem by 9:00, find another problem to solve for the day.
Tim Post
A: 

I sometimes find if I go somewhere quiet, with no distractions - like a bare empty room - and think about the problem, I can grok it better, and a solution (or the right way forward towards it) becomes apparant.

From what I've seen of rent-a-coder, I couldn't recommend it. If I was going to hire someone, I'd ask around and see if I could get someone I know is good, or at least recommended by someone I know is good.

Finally, can you go back to the root 'requirement', and think of a completely different way to fulfill it?

Blorgbeard
+1  A: 

When I'm stuck...

I'm going out into nature watching animals, plants, buildings and so on... sometimes completely different things show us the solution for our problems and we just don't see them.

If all that doesn't help, try asking a kid (or a person that can't even use a computer at all) a similar, simpler Problem. Sometimes solutions are much easier than you beliefe

Peter
+3  A: 

If you have exhausted all the usual peer support options..

  • USENET
  • SO
  • Web Forums
  • Talking to colleagues

...by all means, hire in the help. But to be honest, if the problem is that difficult or fiddly, do you think your hired help is likely to know what to do? More likely, they are going to accept the job and then trawl the same peer-support resources that you have done.

Perhaps a more sensible solution would be to re-engineer your application; either approach this area from a different angle, or work around it entirely.

Or even re-specify your application; if the cost of what you are trying to achieve is too high, omit it and do something else instead. That's what the rest of us do on a daily basis... well, perhaps not daily, but you get my point!

Good Luck

CJM
+1  A: 
  • I go home if it is not too early.
  • I take a walk to the bath room.
  • I take a walk to the kitchen and make a tea.
  • I do something else and have a second look at the problem some time later.
Ronny
+1  A: 

Jakub Šturc already gave a great answer. Try to find out if you're solving the right problem. I'd like to add that a good way to find this out is by asking why a couple of times (usually people tell you to do it 5, google the five why's for more information)

In a lot of cases you find that the problem you're solving is itself a solution to an underlying problem that a customer wants solves. Sometimes there are other solutions to the underlying problem that are better, easier or actually possible.

Mendelt
A: 

Try to find out what is the simplest possible way to make the problem go away. Good examples are:

  • Just ignore it, maybe it is just a minor glitch that nobody will notice.
  • delegate it
  • fix it
  • make a workaround
  • make a 80% solution which might be good enough
  • try a different approach to the whole topic where this problem might not appear at all
  • What is the simplest solution that could possibly work? Remember, it is irrelevant if you solve the problem, the only important thing is that the outcome should be the same as if the problem was solved.

You can also use a few creativity techniques:

  • Lateral thinking
  • Open the newspaper, look on the second word on the 10th page in the second row and try to solve your problem using this word. This pushes you so far out of your regular thinking that you might find something really interesting :-)
martinus
A: 

I'd second Jakub Šturc's answer above regarding checking that you are solving the correct problem.

An excellent resource to build this way of thinking is Gerald Weinberg's book "Are Your Lights On: How to Figure Out What the Problem Really Is" (sanitised Amazon link)

Actually, Jerry's written a whole stack of really interesting books.

Hmm. Must ask that question.

HTH

cheers,

Rob

Rob Wells
A: 

stumbled across this post on SO - http://stackoverflow.com/questions/427711/which-authors-software-development-books-do-you-always-want-to-read the very first one mentions a book that may help.

Robert MacLean
A: 

Very often the problems we run into are implementational. Very frequently with questions on SO I find myself reminded of the man who stops to ask a local for directions in a very rural area and has a conversation along the lines of: "How do I get to Townville?" "Well, I wouldn't start from here."

Sometimes we get so caught up in our divide-and-conquer process that we forget about what our goal is. The goal is not necessarily to write this piece of software or to work a piece of software that works in this way. the goal is very often about the user and what you are going to enable the user to do, regardless of how. I find going back to this fundamental thought process very valuable indeed.

Often with my teachers in areas other than programming I've heard conversations that sort of circle around "How do I do X?" "Why do you want to?" "so that I can do Y?" "Why do you want to do that?" "So that I can do Z?" at which point the light goes on and they realise that actually, to get to where they want to be maybe they don't need to start from here after all.

glenatron
+6  A: 

Step one, "talk to the teddy bear" - explain out loud exactly the problem you are trying to solve, either to a colleague with a moment to spare (be careful to choose someone that is willing to hear you out before saying anything) or to a pet or inanimate object. More often than not, this will allow you to find the missing piece of the puzzle all on your own. If not take a break and get some physical distance to the problem. Taking a nap or going to the bathroom is often very helpful in clearing your mind.

If the solution still hasn't come to you then you need to ask yourself two simple but important questions:

  1. Are you trying to solve the correct problem?

  2. Who should be able to solve it?

Ronny Vindenes
A: 

Talking the problem through with someone else often helps solve it, even if the other person doesn't have a clue. The idea is if you can explain your problem or the knowledge you have to someone else, you fully understand it. This is said about teaching jobs, that you learn the subject matter more comprehensively when you explain it to others.

That and taking a walk or running like a maniac for 20 minutes

Chris S
A: 

The short: When stuck, simply ask!

The long: Sometimes, I've found that talking to a different person (who is unrelated to the problem at hand, but knows and understands technology) about your problem can lead to some interesting insights. You have to then take it from there.

Nikhil Kashyap
A: 

If it happens at the end of the working day, then it is better to call it for a day. It has happened very often that after trying to solve some issue for several hours the solution will pop up to my mind when I walk home - and I don't even have to use debugger :).

Riho
A: 

When I am stuck I browse stuckoverflow for a while. (pun intended)

+3  A: 

when i am stuck i listen some music and i browse in internet.

BlackPanther
A: 

sleep, think, get drunk, think, sleep. gives inspiration, and helps approach problems from another way around. helps me understand what i may have gotten wrong before, and makes my mistakes clear.

rhapsodhy
A: 

Chances are someone else has had the same problem. Ask Google!

Simon
A: 

I formulate a question to be asked on Stackoverflow. Often just formulating the question will reveal the answer.

Shiraz Bhaiji
A: 

Work on surrounding the tasks on your todo list. Make sure to have easier tasks for times like this, and wait for your mental energy peak-levels and strokes of genius to kick in (+ the right answers to tickle in). Don't burn out getting nowhere.

Aputsiaq

related questions