programmer

Grass roots staff engaged in computer program design, development, testing and maintenance
open 3 entries with the same name
Collection
zero Useful+1
zero
Programmer (English Programmer )It is a grass-roots staff engaged in program development and program maintenance. Programmers are generally divided into program designers and program coders, but their boundaries are not very clear. With the growing popularity of the Internet, male programmers are called "program apes" on the Internet. Or the male and female programmers are collectively referred to as "engineers (siege lions)".
Chinese name
programmer
Foreign name
Programmer
Pinyin
chéng xù yuán
Responsibilities
programmatic Design development test maintain
Classification
Design Personnel code personnel

Post responsibilities

Announce
edit
1. Responsible to the project manager, responsible for the detailed design, coding and Internal test Organization and implementation of, and system analysis work for small software projects, complete the implementation and technical support Work.
2. Assist the project manager and relevant personnel to communicate with customers and maintain good Customer relationship
4. Be familiar with and proficient in relevant software technologies of software projects developed by the delivery software department.
5. Be responsible for timely feedback to the project manager about the situation in software development, and put forward improvement suggestions according to the actual situation.
6. Participate in software development and Maintenance process Solve medium and major technical problems, participate in software for the first time Installation and commissioning , data cutover, user training and Project promotion
7. Responsible for relevant Technical Documentation Preparation of.
8. Responsible for technological development Dynamic analysis and research.

Industry status

Announce
edit
from CSDN The 2007 Developer Survey sponsored by Programmer has received more than 15000 copies by the end of 2007 Valid questionnaire , already China Survey sample Most developer surveys. In this survey, we analyzed the distribution of the sample space in detail, and found that 70% of the large number of participants in the valid questionnaire, that is, nearly 11000 participants are full-time IT staff, and 14% of the participants are students with experience in development work. From this distribution, we can see that the demand for professional knowledge of IT practitioners is huge and urgent, CSDN As a professional software development technology portal, it has been the main means for everyone to obtain these technologies.
1、 Select Database technology and Internet technology The total number of people accounted for half of the total
Hot SOA and Dynamic language 13% and 12% respectively. In fact, there is a certain connection between these large technology distributions. The development of the Internet has shown an explosive growth trend in the past two years. The total number of Internet users in China has exceeded 140 million.
programmer
Business in enterprises is becoming more and more complex, Commercial competition Continuously increase the enterprise's IT system, so that the enterprise's Business data Geometrically Order of magnitude Growing data in the background Data in Management of data has changed from single data to complex data with multiple dimensions, so it can be managed at the same time Relational database The hybrid database with XML data has become the mainstream.
In the face of enterprises increasing new IT information systems, integration is imminent, SOA has become an inevitable trend, and enterprises' demand for talent has changed from a single type Technical talents Business talents have jumped to Business technology Of inter-disciplinary talent This developer survey made the investigators of Programmer magazine see the countless connections behind these technical focuses.
2、 Almost half .NET User not participating Open source project RedHat+ Ubuntu Occupancy Over 70%
programmer
Apply to NET platform, the proportion of "mass use" is only 8.68%, less than 10%; The number of developers of "a few applications" accounted for 42.78%. The proportion of "basically unused" is as high as 48.54%, almost equal to the sum of the former two.
Although the emergence and development of open source make the future of software without monopoly clearer; although Open source movement After years of rapid development, considerable strength has been gathered. The concept of freedom and giving of open source has gradually penetrated into the core level of enterprise technology. but Microsoft with Business software To make a living, after all, in the field of Microsoft technology, open source projects are usually regarded as second-class citizens. Many open source projects are right NET community has played a huge role in promoting the development of Microsoft. It is difficult for Microsoft to provide any substantial support.
Currently installed Linux Operating system, RedHatFedora occupies absolute advantage ——Linux users use this version, accounting for 49.49% of the total. Fedora It is an important model launched by RedHat Linux version , at each fedora All versions are integrated with the latest Linux software, especially Server Software.
Using the keyword "RedHatFedora" to search on Baidu's website, we got 7090000 results, and RedHatFedora accounted for half of the Linux version in the survey, which is consistent with the whole Linux version Distribution of.
The second place is Ubuntu , the number of supported accounts for 23.92% of the total; The third is SuSE accounting for 9.09%, followed by Debian Usage 5.92%. What is expected here China Linux is disappointing. The utilization rate is only 5.16%, almost one tenth of that of RedHat Fedora.
III Java Development framework: 6% of JSF wants to shake 21% of Struts
JSF now has the advantage of Ajax integration, which is ahead of other frameworks. In the next two years, JSF and Struts will launch the final war of Java Web framework. After years of "framework wars", various frameworks in the Java world have found their rightful place. Spring+Hibernate+Struts has become the mainstream system of Java development. In this system, the position of Spring+Hibernate is hard to shake in the short term. Apart from the emerging JbossSeam as a challenger, it is almost difficult to have a strong opponent.
In Java B/S programming, the fiercest battle is actually in the Web layer, with the largest number of frameworks and the largest controversy. Everything started with Struts, and Struts finally took the throne of the first era. On the technical level, Struts 1. x has been complained and criticized by countless people, but it has finally taken the throne, which fully demonstrates the power of habit. Stability prevails ”, which is still applicable in the field of IT technology.
After a detailed analysis of the use of the Java development framework, it is found that the main development framework used is JSP, which accounts for 26%, and Struts, which accounts for 21%, Hibernate 17%, Spring MVC 11%, EJB 7%, JSF 6%, SpringWebFlow and POJO 4% respectively and 4% for others. Based on this survey data, it is not difficult to see that Spring+Hibernate+Struts still has an obvious advantage.
Struts and Hibernate have almost become JavaEE For the general configuration of applications, 21% of developers use Struts, and 17% use Hibernate; On a mature technology platform Technical proposal Will converge to a large extent - because all unknown fields have been identified, and various problems have corresponding Best Practices Architects can refer to more and more successful cases. Take Java EE as an example. The problems that architects need to consider are much simpler than three years ago. This is the value of maturity.
programmer
Experts commented: "In fact, IT applied technology , what's new thing It is not difficult to learn, but it is difficult to standardize and standardize. Every programmer has his own ideas and habits, and the code written is naturally diverse. Why Java has become an important part of the programming world is the standardization of Java. This highly standardized language is suitable for multi person cooperation Large projects It is convenient for communication and understanding, as well as integration and maintenance. Why does the Java world have frameworks flying? In the final analysis, it is the need for standardization. Who writes Web faster with pure JSP and Struts? It is clearly JSP. Then why use Struts? The reason is that there are 100 ways to write JSPs written by 100 people; Struts written by 100 people are basically similar. The success of Struts is due to its contribution to the standardization of the Java Web layer.
However, the technical defects of Struts 1. x are hidden dangers after all. Sun is pushing JSF to overcome the shame of the lack of web layer framework. In the next two years, JSF and Struts will launch the final war of Java Web framework.
JSP is still in control after years of trials and tribulations The top priority , it seems that all frameworks Presentation layer None can exist without JSP, and JSF, the sibling of JSP, is just another rising star after Spring.
Now JbossSeam has retired from the historical stage since 2009. JSF has few users in China, and the popular SSH framework has been replaced by the mainstream of Spring+Spring MVC+MyBatties.

Professional requirements

Announce
edit
The average programmer has studied in a professional field, and a small number of programmers are self-taught, although some professional schools or Comprehensive University Yes, but some other ways are needed to provide relevant talents. Although education is more important, the company often focuses on the work experience of applicants. Although many college graduates have eye-catching degree certificates, they cannot find jobs because they lack experience. Although a programmer does not have a formal education, if he has a deep knowledge background of programming or rich work experience, his chances are better than those with education Fresh graduates Much larger. So try to seize the useful work and internship opportunities, so that after graduation you will find that more internships will give you more experience and more opportunities to find jobs.
For professional programmers, another important aspect is that programmers need to constantly improve their business technology. Their technology must always be kept at a high level and continue to develop. Programmers also need to look for trade opportunities, participate in seminars, publish articles in weekly journals and accept vocational education , which enables programmers to rank in their own fields or move forward side by side.

Essential skills

Announce
edit
As a programmer, you should master at least two or three kinds of development tool This is the programmer's The foundation of standing , where C/C++ Java and Java are the key recommended development tools. C/C++has become a sharp tool in development tools with its high efficiency and high flexibility System level The software of C/C++is still written in C/C++. JAVA's Cross platform JAVA and its good combination with the WEB are the advantages of JAVA, and JAVA, its related technology set, JAVAOne, is likely to become one of the mainstream development tools in the future. Secondly, you can master a simple visual development tool, such as VB PowerBuilder, Delphi and CBuilder are better. These development tools reduce the difficulty of development and can strengthen programmers object model The concept of. In addition, basic scripting language , such as shell, perl At least you can understand these script codes.
Familiar with database
Why is database so important? As programmers, they naturally have their own reasons: many application program They are all centered on database data, and there are many database products, including Relational database It is still the mainstream form, so programmers should be proficient in at least one or two databases, and should be very clear about the key elements of relational databases SQL Basic syntax of. Although many database products provide visual database management tools, SQL is the foundation and the general database operation method. If you don't have access to business database system It is a good choice to use free database products, such as mySQL and Postgres.
Understanding the operating system
The current mainstream operating systems are Windows and Linux/ Unix It is necessary to use these operating systems skillfully, but these are not enough. To become a real Programmer , you need to have a deep understanding of the operating system, its memory management mechanism and processes/ Thread scheduling , signal Kernel object system call Protocol stack Implementation, etc. Linux As an operating system for developing source code, Linux is a good learning platform. Linux has almost all the characteristics of modern operating systems. Although there is less information about the kernel implementation mechanism of the Windows system, a lot of information can still be obtained through the Internet.
understand Network Protocol TCP/IP
In the modern era when the Internet is so popular, if you do not have a supporting protocol for the Internet TCP/IP protocol If you have a good command of stack, you need to make up this lesson quickly, network technique The mode of software operation has been changed from the earliest Client/Server Structure, from the contemporary WEBServices to the future Grid computing All of this is inseparable from the network protocol support based on TCP/IP protocol stack. It is necessary to have a thorough understanding of TCP/IP protocol. At least, you need to understand the ISO seven layer protocol model, IP/ UDP /The principles of TCP/HTTP and other common protocols Three handshakes Mechanism.
Understand the significance of DCOM/CORBA/XML/WEBServices
With the development of technology, the seamless combination of software and network is an inevitable trend, software system The position independence of is one of the important characteristics of future computing models, DCOM /CORBA is the current two mainstream distributed computing DCOM is the intermediate platform of Microsoft COM( Component Object Model )And CORBA It is a specification supported by OMG. The importance of XML/Web Services is self-evident. XML, with its structured representation and super Expressiveness It is said that“ Esperanto ”, Yes Distributed Computing One of the cornerstones of.
Do not set software engineering Separate from CMM
In the development of large-scale software systems, engineering development control replaces individualistic heroism As a guarantee for the success of software systems, a good programmer is not necessarily a good programmer. A good programmer is a strict developer with excellent programming ability and development skills Software engineering ideas Organic combination Programming is only one part of the software life cycle. Excellent programmers should master software development At each stage basic skill , such as market analysis, feasibility analysis requirement analysis Structural design detailed design software test Etc.
Requirements understanding ability
Programmers should be able to understand correctly Task list Requirements described in. It should be clear here that programmers should not only pay attention to the functional requirements of software, but also pay attention to the Performance requirements You should be able to correctly assess the impact of your module on the whole project and the potential threat. If a skilled programmer with two or three years of project experience does not understand this, it only means that he may have worked hard, but he did not work hard.
modularization Thinking ability
As an excellent programmer, his ideas cannot be limited to the current Task In it, you should consider whether the module you write can be separated from the current system and directly used in other systems or modules through simple encapsulation. By doing this, the code can be reused, and repetitive work can be reduced System structure More reasonable. The improvement of modular thinking ability is an important indicator of a programmer's technical level.

Career dilemma

Announce
edit
Tiger, Bill, himself, and Chinese programmers' dilemma also comes from three aspects
One dilemma: The threat of tigers Programmers have to face a lot of hungry tigers. For example, the boss seems to be the natural enemy of programmers. The most common complaint of programmers seems to be that "they don't know the technology but are bossy" and "they don't get the same amount of money". This problem cannot be really solved.
Dilemma 2: Bill's competition Generally speaking, most programmers in China eat“ Youth meal ”The golden age of most programmers is 20-35 years old. At the age of 35 or so, groups of young programmers will bring you great competitive pressure. First of all, due to the rapid development of the software industry, many of the things they have learned have been gradually upgraded, while many programmers have been working for a long time, and the efficiency of learning new knowledge will inevitably decline. Secondly, after working for several years, the salary requirement will naturally be high, and young programmers will certainly become the boss's first choice because of their low salary and fast work; Third, at the age of 35, they have already married. To support the family's living burden, they almost have no courage to start again. As an old Chinese saying goes, "The waves behind the Yangtze River push the waves before them, and the waves before them die on the beach." This historical rule is software development The industry is particularly obvious and cruel, and many programmers must face the result of wage cuts or even unemployment.
Dilemma 3: Self strength Everyone knows that the most difficult thing for people to overcome is themselves, so the ego is the biggest obstacle that programmers need to overcome. Most programmers System analyst And the project manager as their own Career goals However, the achievement of these goals requires personal quality, market opportunities and other conditions. Too many programmers waste time in the state of high achievers and low achievers. For system analysts, the following qualities are particularly required: customer demand Analysis capability, system architecture and Design capability , module decomposition design capability, project process control capability Project risk assessment Ability, while the project manager pays more attention to project management Ability in aspects such as team organization skills , Communication Coordination capacity , Analysis Problem solving Ability to ask questions and good professional ethics These qualities and abilities can only rely on the personal study and efforts of programmers. Seeing more and more programmers begin to learn project management courses, I'm really worried about them, because the current project management training can only stay at the level of theory and certification, and there is neither quality training nor practice Software development project The result of learning is far from the expected effect.

Salary

Announce
edit
from economics From the perspective of, software talents are also Labor commodity One of them is Law of value It is decided that only when there is demand will there be a market, and only when there is demand will there be people willing to pay for them. At present, including China, the world is competing for IT talents Total social demand greater than Aggregate supply The phenomenon of talent appreciation is inevitable.

routine

Announce
edit
Confirm the goal of passing the review plan, input data analyst , supervisors, and customers' output requirements.
Arrange project requirements in programming sequence analysis requirements; get ready Work flow chart And use Computer knowledge Ability, theme, programing language and Logic diagram
code Workflow Of Information conversion become computer language Project requirements.
By entering Coding information 's computer program
Confirm the program operation for testing, Modify program Sequence and/or code.
Prepare to write Operation instruction For users' reference.
keep History By recording the formulation and revision of the scheme.
Maintain customer information and protect confidential business.
Skills/qualifications: general programming skills, analyzing information, solving problems, Software algorithm Design, software performance optimization , pay attention to details, software design, software debugging, software development foundation, Software documentation , software testing. There are many kinds of programmers. The languages developed by people may be different, but they all have something in common.