⇥ 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 do.
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 being treated not 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.
Comments
not sure I agree with “be humble”. in my experience many good contributors are too humble, which means they end up reinventing the wheel, because they feel they can do better, but are too scared to engage “the gurus”.
now those devs who are not humble from the get go, tend to be people that are tricky to deal with down the road anyway. well there are two types:
1) those that think they know it all because of their inflated ego’s, those are the tricky somewhat hopeless people
2) those that are so smart, that everything seems so easy to them, that they have a hard time realizing that the target programmer/user is usually not a smart as them. those are the type that if tamed can be a huge asset.
@Lukas, I dont think you know what being humble means…
Clicks Imaginary like button
Love your work
Wrote a kinda similar article a little while back. => http://www.semicolon.co.za/web-development/why-your-developer-sucks_.html
good advice, I like num 4.
@steven I agree with you…