码迷,mamicode.com
首页 > 编程语言 > 详细

不具备数学和算法知识能否成为优秀的开发人员

时间:2015-08-31 23:42:10      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

To explain why, I‘m gonna assume you have little to no programming background and try to use an analogy. I apologise in advance if this answer becomes  long.


Say you wanted to build a small toy house with a kid. You buy some lego bricks and you two work piling bricks in such a way that the end result looks
 like a house. You are happy and the kid is happy. The toy house stands on
its own for a while, since lego bricks are lightweight and basically indestructible. 


Now say you want a real house. One in which you can live with your family. Would you rely on a house which was build the same way, using no
engineering knowledge whatsoever to guarantee its safety? I‘d argue most sane people on earth would not.


Programming without a good background in algorithms and math is akin to building the toy house out of lego. You may get pretty good at it with practice. You may even start noticing patterns with time, such as the fact that some arrangements of lego pieces lead to better results. Still, it will be next to impossible to make statements regarding it such as: "this can handle up to X kg" or "this house is safe to live in" or "we could build one of these out of cement and it would stand on its own". 


Worse, the gap in reliability between the two approaches to house building grows larger the more complex the project. Building a small cabin like kids build toy houses out of lego might work, but its very unlikely that a huge bridge made following that same approach would stand. Similarly, simpler tasks such as writing a small website will be feasible for a team or programmers without a background in math and algorithms, whereas keeping something as big as amazon or google working will be next to impossible.


The idea that math and algorithms are not important is not uncommon among undergrads or even among experienced programmers. I used to think like that years ago myself. Then I got into college and started learning algorithms and mathematics and probability and so on. I even trained for ICPC, which is a competition amongst undegraduate programers that requires quite a bit of knowledge in these fields. 


The end result of that process is that now I can write better code in less time. I am also capable of writing code for tasks I had no clue how a computer could perform years ago. And I know how to analyse code so that I have a good idea on how it will perform when executed.  In summary, I am orders of magnitude better than I used to be in many different ways.


Finally, I‘d like to add something regarding the idea that you learn basic algorithms to be able to do pattern matching. By that, I mean being able to recognize when these algorithms are needed and then use them unchanged. That idea is plain wrong. While knowing which algorithm to employ is a valuable skill, the main reason why one should study these things is to learn how to think and solve new problems. 

不具备数学和算法知识能否成为优秀的开发人员

标签:

原文地址:http://blog.csdn.net/beijiguangyong/article/details/48142291

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!