- one, personal summary
- > two, answer questions
- Q1: personal aspects of software engineers.
- A” from the above points and the test analysis of the quality of the code for the design of the overall architecture. “The hard assessment of a IC software engineer is not only from the above points, but also the quality of the code, the test analysis of the project, and the analysis of the project.It is analyzed in the design of the overall architecture.
- Q2: career development of software engineers
- Q3: misconceptions about software engineers
- Q4: on pair programming
- Q5: on BUG in test
- > three, and further questions
- Q1: on the test scene
- Q2: the role of testing
- Q3: about the specialized tester.”
- Q4: About Innovation
- Q5: about PM
one, personal summary
After the end of alpha, each student wrote a personal blog to sum up his alpha process.
Please use self evaluation: http://www.cnblogs.com/xinz/p/3852177.html will make progress in comparison.
|category||Specific skills and interview questions||The answer is now (Senior third)||When you graduate to find a job|
|language||One of the best computer languages, how much is the code?||Java，5000That’s ok|
|Software implementation||（The ability to read code, implementation, unit testing) has been improved on the basis of other people’s code. How do you read other people’s code, and what methods do you take to ensure that your new function does not affect the original function? What is the most complex bug in your development? How do you solve it? This BWhat are the causes of UG? How should you avoid bug again in the future?||1、There are some improvements on the other’s code base; there are many ways to read other people’s code. You can get something through code annotations, the design of each module, or even the name of the variable function. If you know the author of the code, Congratulations, you can ask this person directly; you need to implement me on the other’s code.New functions, I can add modules with new functions without affecting the main body. 2, a lot of BUG, or the original BUG, or the new BUG generated by the modification process, can be set up by setting the record point to debug the code, find the location of the BUG, and then improve. 3, BUG appearsThe original need to consider from the overall design and other aspects, should also deal with the situation.|
|software test||（Testing methods, testing tools, testing practices, code coverage) how do you test your code? How do you test other people’s code? How many kinds of testing tools and methods do you have? Have you ever written a test tool? How do you conduct stress testing and performance testing for a website? How do you test the man-machine boundary of a softwareUX/UI?||1、Test code, whether it’s your own or someone else, can use test tools such as Java, JUnit unit test and code coverage, and JProfier efficiency analysis. 2, in addition to the tools mentioned above, I also learned the LoadRunner testing tool myself. 3. Not yet writtenTesting tools are all using tools. 4, to carry out a test and effectiveness test for a website, it can be tested from the time of multiuser concurrent and system response. 5. We have not yet touched the testing of human-machine interface. We can guess from the following aspects: 1. Conformance testing, user operation and machineWhether the response is consistent; (2) information feedback testing, how the machine responds to the user’s various operations (correct, wrong, other), such as the error prompt box; (3) the user’s action capture test and so on|
|Efficiency analysis||（Efficiency analysis, efficiency improvement) what is the most complex code you’ve written? How do you test and improve its effectiveness, what tools are used and how to analyze it?||1、The most complicated code written at present is the scientific calculator. 2, JUnit unit testing and code coverage, JProfier efficiency analysis.|
|requirement analysis||（Demand analysis, typical users, scenes, innovation) how many practical users do you have, how many users, and what’s the innovation of your project?||1、At present, it is our team project. We expect the number of users to be around 50 people. The innovation of our project can see the specific content: Gugua task management software.|
|Industry Insights||What are the areas of interest that you are most interested in? What are the innovations in this field over the past ten years? Have you analyzed the top 10 products in this field? Please analyze their pros and cons, how you should enter the field and how to innovate.||1、It is interested in network data communication. Cisco and HUAWEI are more famous. 2, the development of the network is always in progress, and various technologies emerge in endlessly. At present, there are more popular data, cloud computing, network security and so on.|
|project management||Have you been involved in project management? Please describe the specific application of two popular development methods in your project. How do you decide the priorities of tasks in a project? What theory supports you? If you suddenly find that the project can not be completed on time, what do you do as a project leader?Way?||1、Participated in project management; development projects include attending physician mode and agile development. In the process of project development, once the main developers have not made progress, the whole project is basically paralyzed. Agile development is the joint development, distribution and collection of tasks, time is tight, but the efficiency is not bad. 2.The priority of the project is based on the MVP and MVP version defined by the team, and the main task is not the task of MVP. 3, if suddenly found that the project can not be completed on time, we must adjust the time schedule of the project, and increase the working time to ensure the completion of the task. If it is still notIt can be completed on time, so that developers do not redistribute the tasks that are not yet completed by developers who are not MVP version developers.|
|software design||You have done architecture design, modular design and interface design. Please explain why you design this way. What kind of design do you compare? What are the results of your design?||Contact with the interface design makes the code explicit and reduces unnecessary redundancy. Others have not been used and can not be compared.|
|Quality consciousness||（Code review / code specification / code quality) how do you do code review, when you join the team, can you help us improve the quality of the code, please say how to improve?||The first reference to code specifications, whether or not, whether the design is considerate, code scalability, code is easy to maintain, code effectiveness and other aspects of the code review. Code quality is the first step to improve code quality. Secondly, we need to reduce code redundancy and modularized code.|
|Tools / communities||（TFS）What tools have you used in various development platforms, and what tools have you written to improve efficiency? What tools and codes have been contributed to the community? Does Github have the sharing code? How long have you been writing your technology blog, and what is the most popular reader?||1、No tools have been used on the platform, and no tools have been written. Of course, I haven’t contributed to it. 2, share code on code cloud, not shared on Github. 3, technology blog is not enough. Blog has persisted for 1 years and 2 months. The most frequent use of TCP/IP is using network debugging assistant.|
|Team collaboration||Work with others（Working together, providing feedback, persuading others, please describe how you can persuade your partner to take your better plan in the project, or to listen to other people’s opinions to improve your plan? How do you convince lazy Companions to work harder to achieve team goals?||1、If you want to use your own plan, you should show the advantages and innovations of your own program, and find out your own shortcomings in the communication, and it also needs to be recorded and improved. 2, for such a team member, first explain the tense time of the project, let him act quickly (of course, our team does not have lazy members, and does not need to be lazy).Members of the team.|
|Theoretical quality||What math, computer or theoretical courses have you taken? Give specific examples to illustrate how you learned theoretical knowledge to help you solve practical problems.||High numbers, algorithms, C language, data structure, Java, etc., using these theoretical knowledge to solve some logical problems, algorithm selection and analysis, etc.|
|Self management||How much do you rank in the whole grade? Have you changed from freshmen to freshmen? How do you explain the change in your rankings?||At present, the professional rank is more than 40, which is more advanced.|
|1||Maintain high standards and do not be constrained by broken windows theory [i]. When you see unreliable designs, bad code, outdated documents, and test cases, don’t think, “since someone else’s code is already in this way, my code can be casual.A little bit. “||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|2||Take the initiative to solve the problem. When you see unreliable design, bad code, don’t think “maybe someone else will manage this thing,” or “I’ll send an email next month to let you talk about it.” Take the initiative to solve the problem to [ii].||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|3||I often recharge myself, physical training is part of the life of athletes, and learning is the companion of software engineer’s profession. Every half year, we need to understand and learn some new related technologies. Make sure that you really master new technologies by sharing regularly (face-to-face sharing, writing technology blogs, etc.).||Always take the initiative to do this|
|4||DRY （Don’t Repeat Yourself）——Don’t repeat it. In a system, every knowledge point should have an undisputed and formal form of expression.||Always take the initiative to do this|
|5||To eliminate the impact of unrelated modules, when designing modules, they have to make them clear and single, independent, without undefined external dependence. Can be done in a variety of languages and Architectures||Always take the initiative to do this|
|6||Learning from rapid prototyping, the purpose of rapid prototyping is to learn. Its value lies not in code, but in what you learn through rapid prototyping.||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|7||Design should be close to the problem area and be close to the language and environment of your target user when designing.||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|8||Estimate the time the task takes to avoid accidents. At the beginning of work, we should make estimates of time and potential impact, and notify the relevant people to avoid accidents at the eleventh hour. We should inform the possible changes in time and summarize afterwards.||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|9||A graphical interface tool has its strengths, but don’t forget that the command line tools can also be very efficient, especially when you can build various combinations of commands in a script.||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|10||There are many code editors, please use one of them very skillfully. So that the editor can achieve their own customization, and can be scripted and easy to use.||Will customize and share it to other people|
|11||Understand common design patterns and know how to use them. The design pattern is good. What is more important is to know what its purpose is, when to use it and when not to use it.||Experience in practical use|
|12||Code version management tool is the guarantee of your code, and important code must have code version management.||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|13||Don’t panic when you are in debug. Think about the possible causes of the problem. Find the cause step by step. To use tools in practice, be good at analyzing logs (log), and find bug from them. At the same time, add log. in your own code||E has always taken the initiative to do so, but it will also affect colleagues to do well.|
|14||Important interfaces should be specified in formalized contracts. Using documents and assertions, automated testing and other tools to ensure that the code does work according to the contract, not much or much. Using assertions (assertion) or other techniques to verify assumptions in code, what you think is impossible isIt often happens in the real world.||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|15||Using exceptions only in exceptional cases (Exception) and using exceptions without any judgement will reduce the efficiency and maintainability of the code. Remember not to send normal information with exceptions.||Always take the initiative to do this|
|16||Begin well and end well。 If a function applies for space or other resources, this function is responsible for releasing these resources.||Always take the initiative to do this|
|17||When your software has multiple technologies, you need to use loosely coupled configuration mode instead of mixing all the code together.||Always take the initiative to do this|
|18||The functions of common modules are built into independent services, and different services are invoked through a good interface (API).||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|19||Consider parallel support in design, so your API design will be easier to expand.||Consider supporting parallel at the appropriate level|
|20||In the design, separate the presentation module (View) from the entity module (Model), so that your design will be more flexible.||Always take the initiative to do this|
|21||Pay attention to the efficiency of the algorithm. Before we begin to write, we need to estimate the efficiency of the algorithm (big-O).||Test the efficiency of the program actively to verify the estimation|
|22||Test your algorithm in the actual running scenario, and do not stay at the level of mathematical analysis. Sometimes a small practical factor (whether to support case sensitive sorting, and whether data supports multilingual) will lead to dramatic changes in algorithm efficiency.||Always take the initiative to do this|
|23||Constantly refactoring the code and paying attention to solving the root cause of the problem.||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|24||At the beginning of the design, consider how to test. If the code has a problem, do you have log to assist debug? Test it as early as possible, test it regularly, strive for automated testing, and strive for some automated tests for each of the built versions.||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|25||The code generation tool can generate a pile of heaps of code before using them to make sure that you understand them and can debug the code when necessary.||Always take the initiative to do this|
|26||Use the software together with a real user to get first-hand feedback.||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|27||In automatic testing, it is necessary to intentionally introduce bug into the system to ensure that automated testing can indeed catch these errors.||Always take the initiative to do this|
|28||If the test is not finished, the development is not finished.||Always take the initiative to do this|
|29||Appropriate code coverage: every line of code is covered, but the program is not necessarily correct. Make sure that the program covers different program states and various combination conditions.||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|30||If a team member meets a universal bug, a test case should be set up to catch the similar bug that will appear later.||Always take the initiative to do this|
|31||Test: take one more step and consider one more layer. If the program does not quit for a week, if the user’s screen resolution is raised by one level, what possible mistakes will this procedure bring?||Always take the initiative to do this|
|32||（Lead the team to understand the user’s expectations, slightly exceed the user’s expectations, so that users will be pleasantly surprised.||Always take the initiative to do this|
|33||（Lead the team) do not stay passive to collect demand and tap the demand. Real needs may be obscured by outdated assumptions, misunderstandings of users, or other factors.||Always take the initiative to do this|
|34||（Lead the team to place all terms and related nouns, abbreviations and so on in one place.||Not only do you do it on the initiative, but it will also affect your colleagues to do it together|
|35||（To lead a team) do not rely on the manual operation of a person, but rather make these operations a script that can be run by people with relevant rights. There will be no case of a project being jammed because someone is on vacation.||Always take the initiative to do this|
|36||（Lead the team) to make reuse easier. A software team should create an environment that allows everyone to have a relaxed mind to try various ideas (for example, module reuse, efficiency improvement, etc.).||Always take the initiative to do this|
|37||（Leading team) after each iteration, we should sum up experience so that the schedule of next iteration will be more reliable and of higher quality.||Always take the initiative to do this|
|38||（Team leaders often have contradictions in their team. As leaders, what should we do?||A clear and consistent principle of dealing with contradictions|
> two, answer questions
At the beginning of the course, we asked people to ask questions about software engineering: personal reading homework 2, then in the alpha stage, do you have a certain understanding of the software engineering? Please answer the questions you put forward.
Q1: personal aspects of software engineers.
Personal technology mentioned in the second chapter
Efficiency analysis tool
Personal development process
The growth of software engineers mentioned in the third chapter
What kind of data can explain the skills and capabilities of a software engineer? What are the parameters of the measurement capability? Without quantitative indicators, it is impossible to measure and compare.
How to evaluate a IC Software Engineer rigidly? How can he see his value?
a.How big is the project / task
b.How long does it take
c.How is the quality
d.Is it delivered on time
Are these points enough to explain? How do we evaluate the cooperation between the two party and even the team?
Q2: career development of software engineers
For the computer field of your choice, the attitude towards it is really like what you said in the book.
I don’t have a heart to attend class and work, because it’s not the cause I want to get into. I don’t know what I want to get into, but it’s definitely not a software project being studied!
Is that absolute? I have a skeptical attitude about it.
Let’s leave off work and talk about students. I think a person is often hesitant about something fresh and unknown (of course, with the exception of a small number of curiosity), then a “guide” is needed. Teachers often play the role, so the teacher’s explanation is that I know something new.A teacher’s way of teaching often affects my interest in this course and even my understanding. Do you think it has been done in this respect?
A: as above.”
Q3: misconceptions about software engineers
Premature optimization: since software is “soft”, it has great plasticity and can be continuously improved. Looking at it, a complex software seems to be able to make many modules better. It is easy to get stuck in a local problem and spend a lot of time optimizing it.The importance of blocks to the whole world does not even know what this “global” is like. This problem has long been summed up as “premature optimization is the root of all evil”.
This view seems to be one-sided, and writing programs, of course, should also learn to analyze it, and in many times the analysis of program performance may be more important than a write program. It also introduces the efficiency of many code modules, focusing on optimizing the large part of the time-consuming memory to improve the efficiency of the code. It’s that we’re optimizing some of the basic codeData structures and algorithms are generated. If we can find some BUG or optimizations in the early stage of the project without optimizing it, wait until the project is growing (tens of thousands, hundreds of thousands of rows), and even after it is released to optimize it, will it be better than premature optimization in cost and time? Ask usWhen we write our own projects, can we start without understanding the overall situation? Will we ignore the overall role of this module team?
A: as above.
Q4: on pair programming
In pair programming, the quality of all aspects of the program depends on the higher level of the programmers in all aspects because of the reexamination and communication at any time. In this way, there will be much fewer errors in the program, and the initial quality of the program will be much higher, which will save much time for subsequent revision and testing. Specifically, pairs of pairsProgramming has the following advantages:
1.In developing chromatography, pair programming can provide better design quality and code quality, and the two person can solve problems more effectively.
2.For developers, pairing work can bring more confidence and high quality output can bring higher satisfaction.
3.At the level of enterprise management, pairing can communicate more effectively, learn from each other and pass on experience, share knowledge, and better cope with the flow of personnel.
But what seems to be more important in programming is personal ability. Sometimes pairing can not bring higher efficiency. For example, there is much difference in the ability of two partners, so in the pair, the workload of a programmer with a higher ability is bound to be heavier, and the other programmer will only reduce the efficiency of a higher ability programmer.Scheduling time can not guarantee a better completion of the project, the development rate of the project will decline. So, is it really good to make a pair?
A: through previous pair programming, I’ve answered this question: pair programming.
Q5: on BUG in test
From the beginning of programming, we know that although the code will be better and better in optimization, but it is not without defects, BUG will always exist. How do we determine the importance of these BUG or the priority of the solution? How to make sure that modifications to a BUG will not affect other functions? How to goUnderstand the impact of a BUG on the entire project? Is there a simpler and faster way to ensure the correctness of all units than unit tests? Even with enough effort in optimization, there will be other problems after the release. Then in the maintenance phase, does BUG appear to be patched than patch?More standardized and applicable methods?
> three, and further questions
At the same time, you will have more problems in the process of practice, combined with your reading (textbooks, blogs, reference books), practice, and then put forward 5 questions about software engineering.
1.After each question, please explain what part of the chapter raises your questions and provide some context.
2.List some examples or information to support your questions.
3.Talk about the reason why you ask questions, do you ask questions about your hypothesis and the difference in the book, do not understand the term in the book or have questions about the reasoning process, or the description in the book and your experience (direct experience or indirect experience)?
A template can be like this:
I read this paragraph (quoted text), there is this problem. I checked the data, and I have these statements (quote). According to my practice, I get these experiences. But I still don’t quite understand. My confusion is (explaining confusion). [or] I am againstThe author’s point of view (author’s opinion, his own view and reason).
Q1: on the test scene
Typical users and scenes in the tenth chapter of “construction law”
For each goal, list the process that must be experienced to achieve the goal. This is the scene. There are hundreds of possible interactions between users and systems.
So what part of the “pertinence” refers to typical events, major events or special events? Or is it all? What is the difference between test scenarios and test cases?
Q2: the role of testing
In the thirteenth chapter of the “construction law”, a lot of test contents are given, so for testers, they need multifaceted, multi platform and multi content testing when they do the testing work. The main contents of the work are familiar to the personnel responsible for the content, but the test personnel are not sure, so the testers need to be tested.Well, to what extent do you understand it? Developers are familiar with code. Is it necessary for developers to do so in the unit testing section? If so, will it lead to cross-border actions with unclear responsibilities?
Q3: about the specialized tester.”
In the fourteenth chapter of the “construction law”, there is a reference to whether there should be a special tester. It seems that the author’s answer is not very clear, but it is just a situation and a stage to talk about (playing football).
Q4: About Innovation
In the sixteenth chapter of the law of construction
Not only the public does not like innovation, but even innovators themselves are no exception. Some innovators even hate innovation.
Since innovators do not like innovation, why should he innovate? The author also gives examples of telegrams and telephones. The innovation of telephones makes the telegraph industry hate it. Then the innovation of telegrams has replaced the letters and goose horses. Why does he not hate himself? If your problem is that the telegram improves the way people communicate, then the electricity will be improved.Isn’t it? Do people like telegraph to improve their letters and horses? If so, why don’t you like the phone? There are not too many grooves in this.
Q5: about PM
The ninth chapter in the law of construction refers to the PM Project Manager
PMDo all the things outside of development and testing
As far as our project is concerned, PM not only does development, but also does many things, which is similar to Q3, and there is no special PM yet.
4.【Additional questions]: bean submission