Jun 22, 2012

Mathematics of excellence develop essential skills

Filled under:

Mathematics of excellence develop essential skills
Editor's Note: original Alan Skorkin is a software developer, he shared in the blog software development-related experience, of which there are many good articles, this article is one of a, the authors believe: become a good developer, you can no math skills, but excellent developers can not do without.

Not long ago, I began to think about mathematics. You know, so far, I write software for several years. Honestly, in my work which I have not found the mathematics needs. I want to learn and master the many new things including languages, frameworks, tools, processes, communication skills and can be used to do anything you can think of libraries. I learn new things, mathematics, and did not help. Of course, this is not surprising that my work done, mostly CRUD type (Editor's note: CRUD Create, Read, Update and Delete the first initials). In the Internet age, the majority of our developers have done most of the work. If you are a consultant, you are mainly doing the site; you work in large companies, you are mainly doing the site; you do freelance, your main website. I know I was in the summary, but please bear with me, my wandering.

Finally you have some tired, I also do so. Do not get me wrong, this can be interesting and challenging work, have the opportunity to solve the problem, and interesting people to interact with during working hours to do this, I am pleased. But in my personal time to build more sites, this idea has little to lose its luster, so you start looking for some more interesting / cool / fun things, I once again also. So, some people transfer to the front and imaging technologies, such as visual feedback is more attractive. But I am not one (although I and others like the popular front, but it really excites me.) This is when I met some search-related issues, why I decided to dig deeper into the reasons for the This the beginning of the return to the story, because once I caught the first shovel full of search, once I hit the "math, I really realized the extent of my skills deteriorate. Mathematics is not like riding a bike, long-term do not forget.

Expand their horizons

More than the search for some understanding, let me come into contact with a variety of interesting software and computer science-related issues and problems (including machine learning, natural language processing, algorithm analysis, etc.). Now, in contact, I see the math, so I feel more strongly skills shortage. I've realized that, if you want to use the computer to do cool and interesting things, you need to reach a decent level of mathematical ability. In addition to the three said above, there are some, such as: cryptography, game artificial intelligence, and compression algorithms, genetic algorithms, 3D graphics algorithms. After the understanding, if you want to write those libraries and tools that we are discussing, rather than just use them (ie: do a "consumer" rather than "producers"), then you need to mathematics (knowledge) to understand you can apply the theory behind these areas. Even if you do not want to write any library, when you really understand the principle of things, when you build software, it gives more sense of accomplishment, not just the link, you want them to do anything they should be able to do.

While most developers will tell you, they never needed to work math (As I said earlier, :)), but after some thought, I had an idea (sudden inspiration): anti-Maas Luo's hammer theory. You know, when you have a hammer, you will all be seen as a nail. This is a metaphor, that people are happy to use their favorite tool, even if it is not in the hands of the best tools of the work. Mathematics is one of our the opposite hammer. We know that this hammer, but not the Prince how to use. So, when we encounter problems, the hammer is the best tool to solve the problem, but we never seriously considered it. For my grandfather, the screwdriver enough; for my father, is also very good; The same is true for me. Who needs a hammer? The skills of mathematics is that people fear it, even most of the programmer, do you think we are not afraid, but we really afraid of. So, we own words into self-fulfilling prophecy. This is not my work, do not need math, this is just I do not know, even I know, I do not know how to use it. So I did not use it when something is missing, if you will long-term, and soon you will not even notice it missing, so its less, this is a self-fulfilling prophecy.

For thinking close to our inner world, there are some "food" - to learn new technologies. As a developer of collaborative world, you strive to become a generalist professionals (if you do not know what I'm saying, you can look at this book "The Passionate Programmer: Creating A, Remarkable of Career In Software Development"). You try to do most things decent, and do good in some things. But what are you good at? Generally speaking, people will choose one or two framework or a language, and then accompanying, this is good. But to see that the framework and language on a smaller scale has a shelf life. If you have to do a Hibernate Rails or Struts experts (using struts friends really should worry about), within a few years when the new framework to replace the current framework, you will have to reshuffle the cards. Therefore, this may be you are really the best investment, but it may not. On the other hand, mathematics is not soon fade away. Done in our field are built on top of a solid mathematical principles (algorithms and data structures is such illustration), the time spent in mathematics is not waste, which can not be a debate. Repeat once again, summed up as: To truly understand something, instead of non-use of rote. When it comes to computers, mathematics can help you a deeper understanding of what you do. In fact, as Steve Yegge said, as a programmer what we do is a lot like math, but we even do not realize this.

What / who created a unique?

You do not believe me? That you think about it: in our field, almost universal respect for the excellent programmer is also a great mathematician. I mean people like Donald Kenu Si Yi Zige Dijkstra , Noam Chomsky , Peter Novarg (Google Research Director). But these guys are not real developers, they are computer scientists, which can really count it? Once again, I think, in the pure lines of code we write these people wrote tenth, perhaps we should not go to discuss these issues. Improper, of course, scientists, you can get the success and reputation Everyone has heard Gavin King (Gavin King, the Hibernate founder) or David Hansen (DHH Ruby on Rails, founder) . That's kinda true (not a lot of people have heard of Gavin and David, although this has yet to be confirmed), but "heard" and universal respect is different, this difference is like to create a framework, and difference between the two in your field of human knowledge made ​​all major boost. (Do not get me wrong, I respect Gavin and David, they have done far more than I, but this does not affect the fact that I am talking about). All of these related to what? I do not know, may be irrelevant, but in our reflection, I would like to take it anyway "throw away".

Today's world is filled with data every day to add more data. In the past, we enjoy a relatively small amount of data. We write software must be used efficiently handle massive amounts of data. Even in a collaborative world, which is also increasingly obvious fact. In other words, you can not just "start things" just want to see how the operation, because you have to deal with the amount of data will be trapped, unless you are very familiar with it. My prediction is: algorithm analysis will be increasingly important for Lay, Programmer, previously only that, after even more so. If you want to become a decent algorithm design experts need? You guessed it, some math skills. (Editor's Note: Lay, Programmer, do not think he is a programmer's programmer, For details, see Martin Fowler's explanation . I have not yet thought of a short called friends who know, please explain in the comments.)

So, how can I do? Well, I have decided little by little to create or restore my math skills, although there are a lot of books to look at a lot of code to write, but I will try to time on the mathematics, it is like exercise, Shibu Chang The exercise is always better than (again refer to the words of Steve Yegge). When it comes to math, my sleeve, of course, possession of a trump card, it is in my favor, but was lucky to have this blog, we will benefit. (I know you're curious, one will tell you :)).

In the five years of planning how to?

So, mathematics all things? This is difficult to say in advance, I am very satisfied with my situation, perhaps so, but this potential. If you are a developer of collaborative world, you really do not need math. If you are willing your entire career is this: CRUD application to do business during working hours, or glide in their spare time skydiving or extreme wake boarding (or other fashionable geeks movement), allocate more time in the Spring , Hibernate, Visual Studio or other things. (In fact) the special position does not really limit your potential, you can become a valuable, or even in-depth pursuit. But if you want to fight for a variety of career you want to have the ability to try almost all things related to code to the Linux kernel, from information retrieval. In short, if you want to be a perfect combination of developers, programmers and computer scientists, you must make sure that your math skills up to standard (hey, you can still play the gliding skydiving or extreme wake boarding). To make a long story short, if you have some talent in mathematics, in the field of software development did not you shut the door, if not, then all the CRUD type.

0 comments:

Post a Comment