重庆vs成都:Fatherly Advice To New Programmers

来源:百度文库 编辑:九乡新闻网 时间:2024/05/06 02:48:52

Fatherly Advice To New Programmers

It looks like none of my children will become programmers. Instead of lettingmy fatherly advice to my new programmer son or daughter go to waste, I am goingto inflict it on you. If you are newly embarking on the journey that is becominga programmer, here is advice your father would tell you if he were a programmer.These are things I had to learn the hard way.

Keep Learning: Read. Go to conferences. Subscribe to journals. Takeclasses. Whatever it takes for you to keep learning, make it a priority. Learnabout every language you can find. Take time to learn about any new frameworks,algorithms, techniques, models, paradigms, you can. Each gives you one moretool in your tool chest. Each will help you more easily tackle your nextprogramming problem. Find a mentor, someone much better than you, and learn allthey can teach you. Never stop learning.

Learn To Communicate: I often joke that the most important skill youcan learn as a programmer is how to draw a rectangle on a white-board.Communication is critical to the job of a programmer. Communicating withcustomers, clients, users, co-workers, bosses, vice presidents, CEO's,board-members, VC capitalists, all will become important at some point in yourcareer. Learn how to speak in public. Learn how to write in English. Learn toeffectively communicate in person. Learn how to persuade without shouting,getting angry, or getting flustered. Learn how to speak without jargon. Helppeople understand what you are doing. Learn to break things into simple,understandable pieces. Learn to communicate by analogy and symbolism. Learn tocommunicate.

Be Predictable: Learn how fast you can comfortably program. Wait topredict how long it will take you to complete a task until you understand it.Allow for the unexpected. Plan for vacations and time-off. Live with yourpredictions. I don't believe I know a problem well enough to predict how long itwill take to complete until I can break that task down into sub-tasks that eachtake no longer than 3 days (often less than one day). Live by this rule,under-promise, over-deliver. It is better to deliver in 10 days what youpromised in 15 than to deliver in 10 days what you promised in 5. People depend,schedule, and plan around your predictions. Make them the best you can and makesure you can comfortably do them or you will be asked to live up to youruncomfortable predictions. You will not be good at it at first; to compensate,verify your predictions with someone more experienced. Learn to get better. Bepredictable; other depend on you.

Own Up To Your Mistakes: You will make mistakes. How you handle yourmistakes is how you will be judged. Learn how to say "I was wrong." If youunderestimated how long it will take you to do something, tell people as soon asit is clear to you. If you broke the build, fix it. If you created a bug, fixit. Don't deny the mistake, don't make excuses for the mistake, don't figure outhow to hide the mistake, don't blame others for the mistake, do something aboutit. Take ownership of your mistake or you will repeat it.

Never Let Bad Code Off Your Desk: Your job as a programmer is to writecode that works, never let code off your desk you are not sure meets thatcriteria. Not only does it reflect badly on you, it is much more expensive, andmuch harder, to find a problem once it leaves your desk than before. Learn tolove unit tests. Learn to love code coverage. Learn to test your code betterthan people who are paid to test it. Be embarrassed about bugs that are foundafter you have checked-in. Be especially embarrassed when a customer finds thebug. Don't rely on others to find your bugs for you, find them and fix themyourself. Don't hope it will work. Test it. Don't assume it will work. Test it.Don't whatever. Just test it. If you haven't tested it, it doesn't work; of thisyou can be sure. But, even if you are diligent with testing, bugs willget by you. You will make mistakes but try your best not to.

Programming is Fun But Shipping is Your Job: Programming is fun. It isthe joy of discovery. It is the joy of creation. It is the joy of accomplishment. Itis the joy of learning. It is fun to see your handiwork displaying on thescreen. It is fun to have your co-workers marvel at your code. It is fun to havepeople use your work. It is fun have your product lauded in public, used byneighbors, and discussed in the press. Programming should be fun and if itisn't, figure out what is making it not fun and fix it. However, shipping isn'tfun. I often have said that shipping a product feels good, like when someonestops hitting you. Your job is completing the product, fixing the bugs, andshipping. If bugs need fixing, fix them. If documentation needs writing, writeit. If code needs testing, test it. All of this is part of shipping. You don'tget paid to program, you get paid to ship. Be good at your job.

Remember these simple statements,

  • Never stop learning.
  • Communication is critical.
  • Under promise, over deliver.
  • "I was wrong."
  • If it is not tested it doesn't work.
  • Programming isn't your job, shipping is.