Editor's note: The original author, Alan Skorkin, a software developer who shares his experience with software development in his blog, has a number of excellent articles, which is one of the authors: "Being a good developer can be without math skills, but as an excellent developer."
Not long ago, I began to think about maths. As you know, I have been writing software for several years now. To be honest, I haven't found the need for maths in my work. I want to learn and master a lot of new things, including languages, frameworks, tools, processes, communication skills and libraries that can be used to do anything you think about. In the new things I learn, math doesn't help. Of course, it's not surprising that most of the work I do is a crud type (note: CRUD is the initials of CREATE, Read, update, and delete). In the internet age, this is most of the work that most of us developers do. If you are a consultant, you are mainly doing Web sites, you work in large companies, you are mainly doing websites, you are freelancing, you are mainly doing websites. I am very clear that I am summing up, but please bear with me, I ran away.
In the end you are tired of it, and so am I. Don't get me wrong, this can be an interesting and challenging job, have the opportunity to solve problems, and interact with interesting people, do this during working hours, I'm happy. But the idea of building more sites in my own time has lost its luster a little bit, so you start looking for something more interesting/cool/fun, and again. Some people transfer to the foreground and image technology, such as visual feedback is more attractive. But I'm not one of them (although I love the front desk like everyone else, it really doesn't excite me.) That's why I decided to dig deeper when I came across some search-related questions. This brings me back to the beginning of the story, because once I catch the first shovel full of search, when I "hit" math, I really realize how much my skills have deteriorated. Mathematics is not like riding a bicycle, it will be forgotten for a long time.
Broaden Your horizons
Many of the search knowledge, let me access to a variety of interesting software and computer science-related things and problems (including machine learning, natural language processing, algorithmic analysis, etc.). Now, in all aspects of my exposure, I have seen mathematics, so I feel more strongly about my lack of skills. I've realized that if you want to use the computer to do cool and fun things, you need to achieve a decent level of math skills. In addition to the above three, there are some, such as: cryptography, game artificial intelligence, compression algorithms, genetic algorithms, 3D graphics algorithms. After understanding, if you want to write the libraries and tools we're talking about instead of just using them (i.e., being a "consumer" rather than a "producer"), you need math to understand the theories behind these areas that you can apply. Even if you don't want to write any libraries, when you really understand how things work, when you build the software, it gives you more sense of achievement, not just connecting them up, you want them to do whatever they should.
While most developers will tell you that they never need math at work (as I said before:)), after some meditation, I have an idea (sudden inspiration): The anti-Maslow hammer theory. You know this, when you have a hammer, you think of everything as a nail. It's a metaphor, which means people are happy to use the tools they love, even if it's not the best tool for a job. Math is one of our opposite hammers. We know there is this hammer, but not the prince's how to use it. So when we have a problem and our hammer is the best tool to solve the problem, we never really think about it. For my grandfather, the screwdriver was enough, and it was good for my father, too, for me. Who needs a hammer? The trick of math is that people are afraid of it, and even most programmers, you think we're not afraid, but we're really scared. So we turn our words into prophecies that can be self-fulfilling. It's not that I don't need math at work, it's just that I really don't know, even though I know, I don't know how to use it. So I'm not using it, when something is missing, if you're going to do it for a long time, you won't even realize it's missing, so it needs less, it's self-fulfilling prophecy.
There are some "grains"--learning new technologies--for thinking close to our inner world. As a collaborative world developer, you strive to be a generalist (if you don't know what I'm talking about), you can look at the book The Passionate programmer:creating A remarkable Career in Software Development "). You try to be decent in most things and do a good job on some things. But what are you good at? Generally speaking, people will choose one or two frames or a language, and then accompany with it, this is good. But to see, the frame and a smaller range of languages have shelf life. If you're going to be a hibernate, rails, or struts expert (you should really worry about using struts now), you'll have to shuffle in a few years when the new framework replaces the current framework. So, this may be your real best investment, but it may not be. On the other hand, mathematics is not going to fade away quickly. Everything we do in our field is built on solid mathematical principles (algorithms and data structures are just examples), so it's not a waste of time to spend on math. Once again, it is summed up: to really understand things, not to use them without rote. When it comes to computers, mathematics can help you understand more deeply what you are doing. In fact, as Steve Yegge says, what we do as programmers is like math, but we don't even realize it.
What/Who makes a difference?
You don't believe me? So think about it: in our field, the great programmer, who is generally respected by almost everyone, is also a big mathematician. I mean people like Donnald Knus, Aizeg Dijestra, Noam, Peter Novig (director of the Google Academy). But these guys aren't really developers, they're computer scientists, can this really count? Once again, I think we should not discuss these questions again until we have written a line of pure code that reaches one-tenth of those people. Of course, if you are not a scientist, you can also get success and reputation, as you have heard of Gavin Kim (founder of Gavin king,hibernate) or David Hainemeyer Hansen (Dhh,ruby on Rails founder). It's quite true (isn't there a lot of people who have heard of Gavin and David, while this is yet to be confirmed, "heard" and general respect is different, as is the difference between creating a framework and all the major contributions to human knowledge in your field. (Don't get me wrong, I respect Gavin and David, they do far more than I do, but that doesn't affect the fact that I'm talking about). Is all this relevant? I don't know, it may be irrelevant, but after we reflect on it, I want to "throw it away" anyway.
Today's world is full of data, adding more data every day. In the past, we enjoyed our work under relatively small amounts of data. The software we write today must efficiently handle massive amounts of data. Even in the collaborative world, this is an increasingly obvious fact. This means that you are less likely to "start something" than to see how it works, because the amount of data you have to deal with will trap you unless you know it well. My prediction is that algorithmic analysis will become more and more important for Lay programmer, not only in the past, but also in the future. What does it take to be a decent algorithmic design expert? You guessed it, it was some math skill. (Note: Lay programmer refers to programmers who don't think they are programmers, please see Martin Fowler's explanation for details.) I have not thought of a suitable short term, if any friend know, please explain in the comments. )
So, what should I do? Well, I've decided to build or restore my math skills at 1.1 o '-point, although there are a lot of books to see, a lot of code to write, but I will do my best to spend time on mathematics, it is like exercise, when not often exercise is better than nothing (again quoting the words of Steve Yegge). When it comes to math, I also have a trump card in my sleeve, which is good for me, but luckily, with this blog, we all benefit. (I know you're curious and I'll tell you:) )。
What is your plan for 5 years?
So, is math good for everything? This is hard to say, I am very satisfied with my present situation, maybe you are, but it is related to potential. If you're a developer in a collaborative world, you really don't need math. If you're happy with your entire career: Doing business crud applications during working hours, or gliding skydiving or extreme water skateboarding (or other trendy geek sports) in your spare time, also allocate more time to spring, Hibernate, Visual Studio, or something else. Those special positions do not really limit your potential, you can become valuable, and can even be pursued in depth. But if you want to fight for a diverse career, you want to be able to try almost anything that involves code, from information retrieval to the Linux kernel. In short, if you want to be a perfect combination of developers, programmers, and computer scientists, you have to make sure that your math skills are up to par (hey, you can still go for paragliding or extreme water skateboards). To make a long story short, if you have a talent for math, there is no door closed to you in the field of software development, and if not, it's all crud work.
Source: Bole Online submission, the original link.