[转]Top 20 Programming Lessons I've Learned in 20 Years

2019-03-02 23:42|来源: 网路

This post could be viewed as hard lessons learned for newly graduated college students, entry-level programmers, or advanced developers who just want a chuckle.

I've been programming since I was 11 and I've loved technology and programming every since. There are some hard and easy lessons I've learned over time. As a fellow programmer, you may not have experienced these, but I'm offering them to individuals who are interested in learning more from my experiences.

I'll be updating this as time goes on. I may have more, but in my 20 year period, I don't think there are any additional rules that this list doesn't include. :-)

Here are my most memorable lessons so far.

  1. Set a duration of how long you think it should take to solve a problem - C'mon, admit it! I'm just as guilty as the next programmer. I've seen programmers sit in front of a monitor for eight hours at a time trying to solve a particular problem. Set a time table for yourself of 1 hour, 30 minutes, or even 15 minutes. If you can't figure out a solution to your problem within your time frame, ask for help or research your problem on the Internet instead of trying to be super-coder.
  2. A language is a language is a language - Over time, once you understand how one language works, you'll notice similarities between other languages. The language you choose should provide you with a suitable "comfort" level, the ability to produce efficient (and clean) code, and, above all, allow the language to suit the project and vice-versa.
  3. Don't over-"design pattern" applications - Sometimes it's just easier to write a simple algorithm than it is to incorporate a singleton or facade pattern. For the most part, it even allows for cleaner, understandable code. :-)
  4. Always backup your code - I've experienced a complete hard drive failue and lost a lot of code when I was younger and felt horrible because of what had happened. The one time you don't back up your data may be the one time where you have a strict deadline with a client and they need it tomorrow. Source code/version control applies here as well.
  5. You are not the best at programming. Live with it. - I always thought that I knew so much about programming, but there is always someone out there better than you. Always. Learn from them.
  6. Learn to learn more - With number five explained, I've always had a magazine or book in my hand about computers or programming (ask my friends, they'll confirm). True, there is a lot of technology out there and keeping up with it is a fulltime job, but if you have a smart way of receiving your news, you'll learn about new technology every single day.
  7. Change is constant - Your knowledge of technology and/or programming should be similar to how you treat stocks: Diversify. Don't get too comfortable with a particular technology. If there's not enough support for that language or technology, you might as well start updating your resume now and start your training period. My general rule of thumb that has kept me going? Know at least two or three languages, so if one dies off, you have another one to fall back on while you train for a new technology.
  8. Support Junior - Assist and train the junior/entry-level developers on good programming guidelines and techniques. You never know...you may move up in rank and you'll feel more confident having personally trained and prepared them for their next position.
  9. Simplify the algorithm - Code like a fiend, but once you're done, go back through your code and optimize it. A little code improvement here and there will make support happier in the long run.
  10. Document your code - Whether its documenting a Web Service API or documenting a simple class, document as you go. I've been accused of over-commenting my code and that's something I'm proud of. It only takes a second to add an additional comment line for each 3 lines of code. If it's a harder technique to grasp, don't be afraid to over-comment. This is one problem most architects, backup coders, and support groups don't complain about if you've done your job right.
  11. Test, Test, Test - I'm a fan of Black Box Testing. When your routine is finished, your "stamp of approval" period starts. If you have a Quality Assurance department, you may be talking more to them than your project manager regarding errors in your code. If you don't test your code thoroughly, you may develop more than code. Possibly a bad reputation.
  12. Celebrate every success - I've met a lot of programmers who have conquered headache-style problems with a great programming technique and celebrated with a fellow programmer by doing the "shake", the high-five, or even a "happy dance." Everyone has enlightening periods in their life and even though that one happy coder asked you to come and see his extraordinary piece of code and you've seen that one piece of code over 100 times in your experiences, celebrate the success of a fellow developer for the 101-st time.
  13. Have Code Reviews Frequently - On projects and personally. In the company, you will always have code reviews of how well you coded something. Don't look at it as people crucifying your coding style. Think of it as constructive criticism. On the personal front, review your code and always ask, "How could I have done it better?" This will accelerate your learning and make you a better programmer.
  14. Reminisce about your code - There are two ways to looking at old code: "I can't believe I wrote this code" and "I can't believe I wrote this code." The first statement is often of disgust and wondering how you can improve it. You'd be surprised at how old code can be resurrected into a possible and better routine, or maybe even an entire product. The second statement is of amazement and achievement. Developers have their one or two project code achievements that they completed and had everyone standing up and taking notice. Again, based on your excellent coding ability, you could take those past routines or projects and update them into a better product or idea.
  15. Humor is necessary - In my 20 years of development, I have never met a programmer who hasn't had a decent sense of humor. Actually, in this industry, it's a requirement.
  16. Beware the know-it-all, possessive coder, and the inexperienced coder - Humble yourself when you meet these types of coders. The know-it-all tries to upstage you instead of working as a team player, the defensive coder created code that he doesn't want to share with anyone, and the inexperienced coder constantly asks for assistance every ten minutes where the finished code developed is yours, not theirs.
  17. No project is ever simple - I've been asked by friends, family, and associates to just "whip something up for me." To "whip" up a program or web site, it takes planning from both parties to complete something that both sides can appreciate. If someone needs a 3-page web site with Microsoft Access from the start, it winds up becoming a 15-page web site with SQL Server, a forum, and a custom CMS (Content Management System).
  18. Never take anything for granted - If you take on a simple project, you may think that a certain section will be easy to complete. Don't think that even for a moment. Unless you have a class, component, or piece of code already coded...and has been tested thoroughly...and is in production from an existing project, don't think it will be easy.
  19. Software is never finished - A fellow programmer once told me that software is never finished, it's "temporarily completed." Sound advice. If the client is still using a program you wrote and has stood the test of time, chances are, you are still updating it, which isn't a bad thing. It keeps you working. :-)
  20. Patience is definitely a virtue - When clients, friends, or family members use a PC, they get frustrated and proceed to hit a component of the PC or storm off. I keep telling everyone, "you are controlling the computer not the other way around." You need to have a certain level of patience for programming computers. As soon as programmers understand what they did wrong, they look at it from the computers point of view and say, "Oh, that's why it was doing that."

I hope this list of lessons learned have either inspired or provided a chuckle for some people.


转自:http://www.cnblogs.com/susy/archive/2011/01/09/1931265

相关问答

更多
  • 试着像这样使用...... NSMutableString *userName = [NSMutableString new]; NSString *endcodedString = [self.userData.fullName stringByReplacingPercentEscapesUsingEncoding:NSUTF8Encoding]; [userName setString:[NSString stringWithFormat:@"%@ is your name", endcodedSt ...
  • 您需要为每个客户端执行枚举: SELECT * FROM (SELECT tbl.*, @counter := @counter +1 counter (@rn := if(@c = client_id, @rn + 1, if(@c := client_id, 1, 1) ) ) FROM (select @c := -1, @rn := 0) in ...
  • 它与近似日期的数据分组有关。 您可以按单位和其他选项配置它。 It is related with the datagrouping which approximate dates. You can configure it by units and other opions.
  • 我不得不花一点时间来完成特定的模型,但概念与这种模式相同: http : //www.daxpatterns.com/dynamic-segmentation/ 您将计算一个包含客户的表格,其销售总额,并按销售额对客户进行排名。 然后你将它包含在等级> = 20的过滤器中。 然后你总结结果集。 I'd have to spend a little time working through the specific model, but the concepts are the same as this pa ...
  • 在推送新视图之前,只需使用导航栏包装视图即可。 作为一个例子,这里是我的代码片段,我提出了一个带导航栏的模态视图控制器。 - (IBAction) showNewNavView: (id) sender { // Present it as a modal view and wrap the controller in a navigation controller to provide a navigation bar for the Edit and Save buttons Mod ...
  • 是。 但我不认为这是一个阴谋。 “永远不要认为可以用无能解释的恶意”。 Yes. However I don't think it's a conspiracy as such. "Never attribute to malice that which can be explained by incompetence".
  • 你不必花费20%的时间来纠正错误,但是 - 是的 - 大多数程序员必须面对bug修复问题。 希望你能花费少于20%的时间修复bug,如果你不小心的话,甚至可能需要更多的时间。 无论你是多么优秀的程序员,你很可能会在某个时候引入一些错误。 如果你使用单元测试,你可以尽可能地避免错误。 如果您想尽力避免错误,我强烈建议您查看测试驱动开发 (TDD)。 如果您需要入门帮助,有几个有关StackOverflow的单元测试和TDD的问题。 这里有几个: 单元测试是否值得努力 TDD与单元测试 如何开始单元测试或TDD ...
  • 好吧,我通过打开three20.xcodeproj并取消选中libThree20.a的目标框来修复此问题(同时在我的项目中使用three20检查它)。 这至少让我建立和运行,如果以后出现任何问题,将报告。 Okay I fixed this by opening the three20.xcodeproj and unchecking the target box for libThree20.a (while leaving it checked in my project that is using t ...
  • 你有一个有趣的问题。 从根本上说,它是关于从一年到下一年消费五分之一的移民问题。 我会通过查看三年的所有五分之一来解决这个问题,看看人们在哪里移动。 首先是按年份和电子邮件汇总数据。 关键功能是ntile() 。 说实话,我经常使用row_number()和count()来自己计算,这就是为什么它们在CTE中(但后来不再使用): with YearSummary as ( select year(OrderDate) as yr, o.BillEmail, SUM(o.total) as Tot ...