The essence of programming development is to use programs and computers to solve various problems in the real world, so the talent of programming developers is the computer or computing equipment, the direct weapon is the program. The skills that programmers need to develop their programming are summed up in the following main steps:
1. understanding computational models and frameworks : Sequential computing, concurrency Computing (parallel Computing, distributed computing), understanding the computational models and frameworks on which applications are based are important. Traditional applications are usually based on sequential calculations, whereas modern business applications, such as cloud computing, are often based on distributed computing architectures, and large-scale scientific computing applications, such as gene sequence calculations, are based on parallel computing.
2. Efficient Data processing : Familiar with common data structure and algorithm design, can design efficient data structure and algorithm for computing target and realize it, meet the performance demand.
3. large-capacity data management and retrieval : Proficient at least one mainstream database, separated from the data processing of a specialized for a large number of application data real-time retrieval requirements of the technology.
4. system underlying mechanism : process, signal, memory management, API, etc., understand the relevant concepts and implementation, familiar with the use of linux&macos&windows at least one operating system.
5. Process Network communication : TCP/IP Sockets, RPC, Http, serialization and deserialization, familiar with the underlying principles of network programming.
6. programming Languages : Process-oriented, object-oriented, scripting language, functional, browser language, etc., preferably in each type of language master one.
7. Regular Expressions : Flexible manipulation of text and strings.
8. code reading and maintenance : Ability to read code, maintain code, refactor or extend code.
9. Error Handling techniques : Exception mechanism, return value and global variables, direct exit or re-continuation, etc., the necessary foundation for building solid and reliable applications.
Web search : Seek useful resources, remote collaboration partners, and effective solutions.
Program Quality : Guaranteed program time performance, space performance, security, reliability, availability, scalability, readability, maintainability, portability, user experience.
design pattern : Solve the actual design development problem, should be used frequently when extending the function module on the basis of the existing project.
system Architecture : for subsystem design, project experience needs to accumulate.
processing Large data volumes : typically based on distributed computing architectures, such as cloud computing infrastructure.
Select Reliable tools and software libraries and packages : First, you must identify specific needs, gain insight into the tools, technologies and frameworks, and their pros and cons, and then choose the one that best suits your needs.
diagnose and repair computer or program failures : Search for existing solutions on the Internet, infer and validate hypotheses based on principles, troubleshoot narrowing, compare and analyze; Print information.
Besides programming other techniques and methods of using computer to solve problems : Using existing software, for example.
For each problem, the techniques and methods of mastering their own, and using examples to illustrate, basically can understand their technical level, but also for future use. The product of the micro-knowledge. People often say that the "big skills" can actually be broken down into a large number of micro-skills, and accumulate more micro-skills, in dealing with the problem there is more choice and thinking. In specific terms:
1. Programming language: At least familiar with six programming languages, master two programming languages. "Familiarity" means a great deal of learning and use, and "mastering" means being able to use the language to build a large and reliable software system.
An over-program, an object, a function, a declarative, a client-side language, a scripting language. For example, C/java/scala/sql/javascript/python;
2. Programming tools: At least one editor, one IDE, one project building tool, one version control tool, one console. such as Vim/eclipse/maven/git (SVN)/Shell (Cygwin);
3. Programming method: Top-down, intent-guided, bottom-up; first right, then good; pre-designed, hands-on, iterative development, release, feedback and growth; estimated time;
4. Programming Style: K&r C, Java programming specification, layout neat, code concise no redundancy, consistent, use authentic expression paradigm;
5. Programming Model: Serial, concurrent, multi-process, multi-threading, MapReduce, b/S, async, callback, blocking, non-blocking;
6 Programming Ideas: Over-programmed, object-type, functional, declarative, primitive, set, combination, abstraction, encapsulation, multiplexing, layering, pattern, divide-and-conquer, cache, interrupt, mathematical nature;
7. Common algorithms: Divide and conquer, recursive, dynamic planning, space-time tradeoff, greedy algorithm, priority algorithm, iterative improvement, depth traversal, breadth traversal, problem transformation;
8. Sort: Insert Sort, select sort, quick sort, heap sort, merge sort, base sort, external sort;
9. Search: Sequential search, binary search, hash search, depth first search, breadth first search, segmented parallel search;
10. Data structure: Bitmap, array, linked list, stack, queue, binary tree, string, hash table, graph; Mysql, database design; key-value value pairs collection; unstructured storage.
11. Text Processing: Find, grep, awk, sed, sort, cut, uniq, tr, ls, cat, xargs, regular expression;
12. Design mode: Factory, Singleton, prototype, template, strategy, status, observer, mediator, chain of responsibility, combination, command, agent, appearance, adapter, adorner, iterator;
13. Application Mode: Wrapperfacade, Component Configurator, Interceptor, Extension Interface, Reactor, Proactor, Asyn completion to Ken, Acceptor-connector, strategized Locking, Thread-safe Interface, double-checked Locking optimization, Active Object, Monitor object, Half-sync/half-async, Leader/followers, thread-specific Storage; see schema-Oriented Software architecture: Concurrent and Networked object mode
14. Process and Network: PS (pstree), Top, Kill, Crontab, ifconfig, Ping, Telnet, netstat, tcpdump, ssh, SCP, wget, Socket, HTTP; Service Manager;
15. Development framework: Servlet, Spring, Struts, Ibatis, Hibernate, Aop, JQuery, ExtJS, Bootstrap, Flex;
16. Common components: Log (common-logging), utility (string, date, Json/xml, HTTP, Email), signature check, collection container, template engine, concurrency Library, diagram (highcharts), etc.;
17. Run the container: Apachehttp, Tomcat, jetty, Nginx, Docker, browser;
18. Middleware: Tair, Zookeeper, Dubbo, database connection pool, log service, cache, scheduled tasks, reliable messaging service, reliable heartbeat service, workflow engine, load balancing;
19. Software Architecture: MVC; View-controller-service-dao (API)-DB; pipelining, Pipeline and filter; event driven; domain modeling;
20. Testing Technology: Quality risk analysis, test data set, test case, equivalence class Division, branch coverage, domain test, orthogonal table, decision table, State transition diagram, boundary test, air test, anomaly test, roaming test, dependent mock;
21. Code organization: Header files, class files, package mechanisms, namespaces;
22. Software Engineering: modularity, encapsulation, object-oriented, user stories, iterative development, continuous integration, Codereview, acceptance testing, continuous delivery;
23. Measurement technology: Performance measurement, time;
24. Learning Resources: Open source project, open class, Thesis, Infoq, StackOverflow, blogs, Google, Baidu;
25. Classic books: Refer to the recommended books of computer science
Reprint please indicate the source. Thank you:)
Skills Grooming of software development