I can't think of an advancement since the discovery of fire that didn't start with "There must be a better/easier way .." Except in science, where that is transformed to "There must be a better explanation .."
If you find yourself fighting your tools equally or more than the problem you hoped they would help you to solve, you need more tools. Have faith that your fellow programmer encountered a similar situation, and fashioned something much better suited for the task at hand.
I program mostly in C. I can't think of many things that I could not write using C, but I can think of many things that I wouldn't want to write in C. That's why my tool box also contains the following:
- Python - For any kind of desktop app or rapid prototyping, or string intense stuff
- Shell Scripting - For automating darn near anything
- PHP - For when I need to make something web related and find myself too lazy to use Python
- OCaml - When I need to go beyond a prototype and keep shooting myself in the foot with C
- Various esoteric languages for when I want to amuse myself
I was almost not going to answer this, but then you said:
but suppose, i only know of the
hammer. is screwdriver a tool ? does
it exists yet ? how long to learn to
use it ?
If you are fighting something, you should realize that there is probably a better way of doing it. That way might exist with the tool you are using .. or it may mean you need to look for something else.
As for the time / learning curve, learning is always an investment. Are you going to be confronting many similar problems in the future? Would you like to deal with them in 1/10 of the time with code that doesn't break so easily? Then yes, learn a new tool.
If your back is against the wall and you have no time to learn something new, then you will probably elect to muddle through it using what you know and (hopefully) finish it. Still, let that serve as incentive to spend some time learning something new.
I can say, from experience, it is easier to learn a new language or method when you have a very specific problem in mind. It's not "oh, gee, I wanna learn Python" .. it becomes "I need to learn the innards of twisted because I need to make a working client for this API and my hammer isn't cutting it!" If you study examples that actually help you do what you want to do, you learn much faster.