some tips from my experience, your mileage may vary 1. Kludges that we'll fix in the next release never get fixed in the next release... 2. if you dont do it right now, you (or some poor bastard that replaces you) will have to do it right later... 3. it always costs more to do it later... 4. beware of anyone in a suit... 5. if you don't talk to your customers to see what will make them happy, then sooner or later someone else will... 6. Sales guys can be powerful allies for interoffice BS, but if you make yourself too available they will never leave you alone... 7. Management has no idea what the customer wants... 8. Engineering has even less idea what the customer wants... 9. Assume every engineer you work with is an idiot, try not to let on that you know...if you find engineers that are obviously not idiots, find a way to keep them... 10. Never outsource your core competency... 11. Lazyness and incompetence are contagious... 12. no-one cares if you read wikipedia all day every day if you get your work done on time... 13. your code is not finished until you've tested it... 14. never assume they have tested their code... 15. engineers that think lack of documentation is job security should be fired sooner rather than later (otherwise you'll make them right)... 16. Contrary to popular belief, third party libraries reduce portability of your code... 17. Engineers thinking something is "cool" is not a business case... 18. Engineerings job is to say yes, no matter how stupid management's requests are...good engineers find ways to say yes that spotlight their intelligence and managements stupidity...(e.g. if they ask you to turn lead into gold, tell them you will if they allocate a few trillian dollars and a fusion reactor)... 19. the night before its due is probably not the best time to start integrating your code in a large project... 20. you can be really good at your job, and a dick, or you can be so so and your job and a really nice guy...you cannot be a dick who is bad at his job... 21. Time estimation is really hard...it will take longer than you think it will... 22. demonstrating that your compeditors suck isn't enough to get anyone to buy your product... 23. don't ship anything you're not proud of... 24. your code will be used in ways you never thought of...plan accordingly... 25. if you can't settle on one way of doing something, do it both ways and make it a configurable option... 26. don't ever have arbitrary limitations, or if you do, hide them better (e.g. "max users 256"...hmmmm?)... 27. strive to make a really good 1.0, then move on to other, more fun projects...you'll still get all the glory for that first project, but you won't have to do the work anymore... 28. in general, meetings are the opposite of getting things done... 29. an engineering manager's job is... [ Read More (0.3k in body) ] My programming rules |