After spending a few years working as a Developer, I tried thinking about a list of things I wish I knew coming right out of school. At that time I was filled with brimming enthusiasm and confident in my abilities to write simple programs that had very little practical application. I had the montage playing in my head of me at my first job like they do on TV and in the movies:
Scene 1 – Me facing the camera sitting at my desk staring intently at my screen explaining something to someone.
Scene 2 – Me testing my application looking worried. Deadlines are approaching and it is final hour. Lots of binary and code are flying around the screen like in the Matrix.
Scene 3 - Users at my company oohing and aahing over how cool my feature in the application is.
Scene 4 – Hand shake with the boss, a big bonus and fade away of a giant office party.
Alas, it didn’t quite pan out like that. However, but there are a few things that I did learn along the way. Things that I would like to have known fresh out the gate so I would have felt a little bit better prepared once I went into the industry. Here are a few of them:
1. Be prepared to know absolutely nothing
You’ll quickly realize how big the gap is between what you actually need to know and what you do know. Everything you’ve learned in school is already obsolete. You’ve worked on really simple programs that are nowhere near as complex as whatever application your Company and your Development team have been working on. Accept that and realize you’ll be doing a lot of internet searches for answers and pestering the other members of your team.
2. Master the way of Debugging and Testing
You’ll spend more time debugging your applications than you will designing them and coding them at first. Learn how to create accurate test cases and even test cases you think are outside the realm of possibility – because they most certainly are not. Nothing is worse than putting your code into production after testing and having it fail because the one case you thought could never happen actually does. Learning how to isolate bugs and be able to accurately say why an error occurs is an invaluable skill. This skill alone will save you constant man hours and heartbreak.
3. Writing is not just for Liberal Arts majors
Much of your development time will be spent responding to e-mails to other Developers and Management, Writing Requirements, Help Documents and Code Documentation, and maybe even responding to Customers questions. Learn how to write well, it will also translate into your code.
4. Seek a Master of the Dark Arts of Software Estimation and become a Pupil
“How long do you think this will take you?” – you will be asked this frequently. Learn from other people who are good at creating accurate estimates. Take a class, read up on the subject. It’ll save you spending nights and weekends trying to meet your ridiculously inaccurate estimate and then having to explain why you are nowhere near meeting your deadline.
5. Learn the Art of Performance Tuning
Your code may run well on a data set of 10,000 records. How about a million? Or a billion? Don’t think that because multi-core processors are around that you needn’t worry about writing code that performs well. Your thinking would be wrong. Tuning, so that your code runs milliseconds faster than it previously did, is an invaluable skill to have. Those milliseconds add up after millions of operations. This will often mean the difference between success and failure for many applications and could also end up costing real dollars.
6. Seek Help early and often
Don’t be embarrassed if you get stuck and can’t find an answer to your problem immediately after you’ve exhausted all your efforts. It is a sign of maturity to ask for help when you really need it.
8. Learn how to Learn
Master the art of absorbing useful information quickly and accurately. Use tools that will help you quickly synthesize new concepts so that you can apply them. You’ll constantly need this skill to keep up to date with whatever new things are coming out on the horizon. Also take regular time to improve what you already know and solidify your knowledge base. Figure out if you really understand all of the buzzwords you think you know and then see if you can explain it simply to your technically challenged Grandmother. If you can teach it to someone, chances are you have a pretty good grasp of it.
9. Business Knowledge is not just for Suits
Know how your company works; understand how each different department contributes to the bottom line and how they all play their part. This will help you understand why some of the decisions are made and how what you do fits into the bigger picture.
10. Find a Mentor
Look for the code guru at your office. The person who can instantly give you an answer to a problem or whip up an elegantly designed solution from a framework as if pulling it from air. This person could be the database guru who can instantly look at your queries and tell you why they are locking up the database. Maybe it will be the system admin guru who is the first person everyone calls when there are problems on the network. Pick their brains and try to know what they know. It’ll help you get better. Look outside your company for Developers you admire; read their blogs; follow them on Twitter. You might learn something along the way.