Hi.
If you are not familiar with some *nix tools, you will need to pick up some practice with
vi/emacs, and
make at the least. You may also need to become familiar with
source control: check out/check-in.
I was a:
Member of the Process Engineering group chartered with defining, realizing, and maintaining the processes and practices associated with the software lifecycle at Caspian.
I did course development and training for that general process: nightly builds, release packaging, etc. Development, including design and debugging, was not a trivial activity. I also did training in shell, perl, regular expressions, etc.
At that shop each developer checked out a piece of the system and worked on it. When it was ready to go, the code was checked in. The nightly build and tests were done on a separate hardware system based on the current state of the system with every developer's contribution. Extensive records were kept for bug tracking.
If you are interested in diving deep into Linux, you might appreciate the structure of Debian development -- I use Debian for my main activities currently.
You can read about Debian maintenance and development -- all done by volunteers world-wide -- at
Debian Developer's Reference
It is also not a trivial activity.
You could certainly do some, perhaps even much, of this kind of work on your own in an isolated virtual system. For example, suppose you wanted to work on utility
ls for your own purposes. You easily could get the source, modify it, and test it in a VM. However, working on real bugs, for example, might be far more interesting
Best wishes ... cheers, drl