a‡Y Suggestions for a younger developer
Every now and then, I get asked by developers who are just getting started in the trade if I have any suggestions to help them out-favourite language, tips and tricks, and the like.
None of these things matter, really, but there are a few things I wish I had known when I started out that have nothing to do with the mechanics of software development.
1. Be humble
You just finished college with full marks. You know hundreds of algorithms backwards. You've read Don Knuth's seminal programming series cover-to-cover (something that Professor Knuth himself would probably be disinclined to believe).
Alas, that does not a programmer make you. You'll find out soon enough that being successful at writing software means quickly discarding options that are unlikely to lead nowhere, while zeroing in on those that will. And, more often than not, it means throwing away the book and violating every rule to get where you need to go.
2. There is no magic
Never assume that other developers are necessarily smarter than you. Remember that the people who write the tools you use have access to the same kinds of resources and techniques as you.
Never accept the frameworks and APIs at your disposal as black boxes; understanding how they work internally will help you write better code against them.
3. Programming is a craft, not an art
Good code, like art, is many things to many people. Working code, however, is undisputedly code that performs its tasks properly and efficiently.
A good developer is like a good artisan, constantly balancing the needs of form and function, but always focused on making things work in the most practical way possible.
4. Software solves problem
Writing code is a crucial, but relatively minor part of the software development process. You write code to solve problems, and can't be good at one without being good at the other.
Strive to be part of the entire process that leads to the development of a system; insist on not being treated as a code monkey, but as an integral part of the overall team that contributes more than mere lines of code.
5. Code doesn't leave sawdust
One of the best aspects of software development is the fact that it is a purely intellectual exercise. With a modicum of precaution, we can experiment knowing that our only waste is time; there is no wood to chop, pencils to sharpen, chemicals to react, or paper to crumple.
Sometimes, trying things out in practice leads to unexpectedly efficient solutions that all the planning in the world could not have anticipated. And, when it doesn't, there's always source control to take you back in time, ready for another try.