Learn data structures and how those structures affect the underlying computing system. Learn about memory management. Resist the temptation to be a siloed developer who concentrates only on the front-end GUI or the back-end server. A great software developer can write code regardless of where that code will reside.