The only king of the Kingdom of programming languages

From the original Medium 

Author: Eric Girouard

Jingdong cloud developer community to compile

Before writing this article, I searched for "Which programming language should I learn," this entry, found to produce 517 million results. And each page are gushing introduction to a language advantage over other languages, of which 90% would recommend Python or JavaScript.

IMHO, I do not agree that 517 million search results, and recommended that a programming language should you learn the most - the logic .

You know how to write code that is no longer an advantage. Flooded the market with a variety of training institutions, personnel training classes out of the study, jobs "junior software developer" has ceased to exist. To be successful in today's market, you need to not only know how to code, and also need to learn to use logical thinking.

1. My first computer science class

My first contact with "computer science" in my tenth grade electives. First day of class, I am pleased to see that I have before me all kinds of ice cream sundaes and a variety of ingredients. After we sat down, my teacher announced:

 "Today, we want to make sundaes on one condition: You have to write a specific instructions on how to prepare sundae, and then I will follow suit."

Of course, no problem, I think this is simply an easy thing. Then less than a minute's time, I'll jot down a set of "perfect" sundae build guide:

1, three tablespoons blackberry ice cream in a bowl
2, two tablespoons of hot chocolate poured into the bowl
3, the whipped cream into a bowl

4, sprinkle with sprinkles and cherry on top of the sundae

Then, my "teacher" (ah, I would like to use this lovely parable call my computer) made the most accurate satirical performances I've ever seen - she began to viciously poked ice cream lid, but can not penetrate it hard appearance.

"Well, first of all remove the cover," I said, as if eager to enjoy a good meal.

"You did not offer me those instructions, so, unfortunately, you do not give a sundae, next!"

2. Fast forward to try to number # 2

1, remove the cover to open the ice cream Blackberry
2, the three tablespoons blackberry ice cream into the bowl
3, open hot chocolate, hot chocolate to two tablespoons into the bowl
4, to open the cream, added some cream bowl
5, at the top of the sundae sprinkled sprinkles and cherries

This time I'm sure I have lifted the lid of this condition. I even add each item to the front of my masterpiece, it has to ensure that they are open.

She opened the lid, three scoops of ice cream blackberry, put them into a bowl. From this point of view, at least the beginning of my freshman sundae was born.

Then, she opened the hot chocolate, put two tablespoons into my bowl. Not two tablespoons of hot chocolate, please note - two tablespoons of reality, no hot chocolate.

Again, I do not seem to give enough specific instructions!

After completion of all, I got a bowl of ice cream, which stood two metal spoon, cream and cook to about 300 sprinkles.

By this time, I finally understood: the computer is a purely logical entity. It is no context, no assumptions. It is a very specific set of instructions to respond, and finally running the Terminal.

I ended up making a lengthy but necessary sundae build guide:

1. If you have not prepared in advance, please open the following ingredients: blackberry ice cream, hot chocolate, sprinkles and whipped cream;
2, remove the bowl from a shelf in front of you;
3, pick up ice cream scoop, a the three scoops a spoonful of blackberry ice cream scoop into a bowl, spoon down after completion;
4, if it did not get hot chocolate spoon, then picked it up, then scoop two tablespoons of hot chocolate, put them in a bowl, once a spoon, spoon bled down;
5, good stir the cream is inverted to a nozzle against the edge of the bowl and then pressed with a finger for 3 seconds, then the bottles back in place;
6, sprinkle in a bowl about 40 sprinkles and shake the pot after the completion of restoration to an upright position;
7, was removed from the cherries in a cherry jar, it delicately on top of the sundae ice cream;
8, gave the students together sundae and spoon.

The last step is very important, because without this step she will start to eat my sundae.

This is a realistic scenario of computer programming. Please provide intensive detailed set of instructions for the computer. Essentially, this is broken down into all programming languages ​​of instruction.

3. software development career path

Software development has now reached the point of not as a separate industry to discuss, like "software developer" is too broad as job title. In the case of two developers have no coherent set of skills can be seen as having the same market competitiveness, which means development, career depends on more than just the ability to encode. Skilled developers have common properties independent of one kind of programming - logic .

The best developers are experts in critical thinking. This is crucial, because most software projects are not documented, fragmented disaster. They need a critical thinker to piece together information and fill in the gaps when needed. Developers are those developers behind these points can not be connected.

All of this boils down to another bold statement:  the basic principles of computer science for coding ability is crucial, and will always be crucial.

Popular language varies with the tide. Become obsolete framework, enterprises to respond to changing needs by mixing techniques. What is the only constant is? The basic principle - that is their definition!

4. How to improve logical thinking

For those who do not think deeply of it, consider using these tools to improve your programming critical thinking:

Understand the complexity of your run time

Program run-time complexity is also known Big-O , the number of steps can be represented with the input size (n) executing on any relevant instance. First, always monitor the running time of your program.

Understanding your data structure

Each complex data structure is the core of the program. You know what kind of structure in itself is an art in what scene. Data structure directly related to the complexity of running time, because choosing the wrong structure will make the program to a halt. Find the array is O (n), which means that with the increase in the size of the input, using an array of cost increases. Hash lookup O(1), and therefore regardless of the number of keys is the number of hash, the hash key lookup time will be constant.

I have had a number of candidates considered an array of search time faster than hash. This is a warning me not to hire them direct signal - so learn your data structure.

Read / watch / listen

Like Udemy, Pluralsight and CodeAcademy other sites are a great resource to learn a new programming language. To understand the basics, please refer to the general engineering concepts, best practices and coding style books. Engineers are the most highly recommended book is "Design Patterns", "Refactoring, Code Complete, Clean Code", and "The Pragmatic Programmer" and so on. Finally, every engineer should keep a copy of "Introduction to Algorithms" on their desk and keep it.

practice!

Never crazy practicing the violin, it is impossible to become a violinist. Like the HackerRank, CodeWars, CoderByte, TopCoder and such sites LeetCode there are thousands of challenges designed to test your knowledge of data structures and algorithms. I found the best way to use these sites are trying to solve their own problems and solutions on Github, and then view the top solution to this problem is to see how others solved. This brings me to my last piece of advice: 

View other people's code

In the software development process, the biggest mistake that you can make is to act alone. Software development is largely a crowdsourcing work. Together we establish standards, make mistakes together, and over time (by repeated failure) to learn what is effective. Code spend time reading skilled developers is always rewarding. Just make sure it is good code.

The best advice I can give is to never leave you ashamed of what you know. As I mentioned, this large-scale industry, has a huge and horrible language, content-intensive. It takes a lot of time and effort to understand and learn. Access to skilled require more effort, and it takes more effort to achieve mastery.

When I arrived there, I'll tell you.

Read the original

Guess you like

Origin www.cnblogs.com/jdclouddeveloper/p/11079898.html