Here are some of my favorite books on information security, programming and linux :
-> Hacking, The Art of Exploitation; Erickson; No Starch Press
-> The Linux Command-line; Shotts; No Starch Press
-> Assembly Language Step by Step; Duntemann; Wiley
-> Black Hat Python; Seitz; No Starch Press
-> Designing BSD-Rootkits; Kong; No Starch Press
-> Arm Assembly Language; Hohl & Hinds; CRC Press
-> Deep Dive: The Development of an Exploit; Manu Carus; BoD
-> The Shellcoder’s Handbook; C. Anley, J. Heasman, F. Lindner, G. Richarte; Wiley
I also highly recommend going to vulnhub, where you can download a machine and follow a walkthrough, so you can get the hang of it.
Reading somebody else’s code is always a good practice, you learn different coding styles and you might see a different approach that could be even better than yours.
Here’s also a good article concerning CTF and CCDC events