Inspired by and adding to the post by John Graham-Cumming on programming, I add a few of my own lessons learned.
Programming pays for your bread and butter
Those who pay you will want things from you in return.
You may be given impossible deadlines. Don’t let the pressure get to you, get things done. Don’t compromise on quality. Learn to say NO without burning bridges.
You may have to argue about requirements, software design, graphic design, usability, and other ities. You’ll have to defend your position, but it pays to be humble, listen or ask twice and speak once.
Know your Licenses
You’ll have to know not to mix GPL/LGPL code with proprietary code. You’ll need to know the subtle differences between GPL and LGPL, GPL V2 and V3, MIT and BSD. You’ll need to know what license that piece of code or component you’re borrowing from the internet uses.
Support and maintenance
Not everything on your plate will be new and shiny. You’ll have to fix problems in your code, fix problems caused by your code.
You’ll learn a lot from others. Deadlines will make you selfish, you’ll forget to give back. Make it a habit. Maintain a blog. Follow blogs of others. Help people with questions. Contribute bug reports and bug-fixes to community code.