Starting to work in a new team of high-performance computing developers and researchers is like going skydiving. To go skydiving, you first would like to go to skydiving school so that you can at least survive your first skydive. This is where those university years and CUDA courses taught by experienced people become very handy; by no means I am saying that you cannot learn CUDA, skydiving, or anything else on your own but I am saying that with proper training, new abilities can be learned safely and quickly. Once you have all of your training, you go out to jump off as many flying apparatus as you can find; keeping in mind that all you have is training and very little experience. With time, practice, and lots of patience you master your skills; regardless in the air or in front of your computer. The experience that you gather does not make you invulnerable to all the problems that can occur during a skydive or while developing software, but your experience teaches you how you can deal effectively with the many problems that can occur; in skydiving - line over malfunctions, line twists, horseshoe malfunctions, pilot chutes in tow, and in developing high performance software memory leaks, logic errors, race conditions, and problems parallelizing serial algorithms.
[More]