Açıkçası yazılımın hangi türünü yaptığına bağlı gereken araç-gereçleri (toolchain) kurabilirsin. Örneğin ben işletim sistemlerinin kodlarıyla ilgileniyorum, bu yüzden de bilgisayarımda cross-platform GCC ve Binutils bulunuyor.
Açık kaynak kodlu yazılımlara katkı yapmalısın kesinlikle, bunu her geliştirici yapmalı. Değişik değişik kod stilleri göreceksin ne kadar açık kaynaklı yazılım ile haşır neşir olursan. Örneğin ben çoğu kişinin bilmediği GCC yönlendirmelerini böyle öğrendim, __attribute__((packed)) gibi mesela.