Soft work first personal blog

Personal blog jobs

project content
This work belongs courses Spring 2020 Computer Science, Software Engineering
Where this requirement in the job The first blog jobs
My aim in this course is Learn by Doing software engineering
The job which specific aspects help me achieve goals Reading textbooks have a general understanding of software engineering

First, a quick look at the complete textbooks, listed 5-10 questions you still do not understand

1. 3.4 skills back inside this section refers to how to improve the skills of the answer is to continue to practice the way

You find that he spends all his time "to solve the (low-level) problems" on, you want to examine the "arithmetic skills", "C # programming skills" have to attend to note that this is considered to be very proficient in his programming T. and such a problem with programming languages ​​such employees you want it? then how to improve skills? the answer is simple, through constant practice, those low-level problems are solved, it becomes automatic operation without going through the brain, and then have time and brain power to solve high-level problems

We supplementary question: what kind of exercise is it efficient?

"Bestseller deliberate practice a view author" Alex raised in his works are:

Those who are in the upper level, have a kind of strong memory skills: long-term memory. Long-term memory it is important to distinguish between excellent person and a person's abilities, pointing to the essence of it is the deliberate practice.

According to my interpretation, this type of long-term memory is not a simple repetition to get through the short-term memory, is after the insight into the nature of the problem can exercise module itself and for understanding the problem of one to one, that is, we often He says "Join the knowledge." For example, when it is just learning to program, compiler and books to remind you here less a semicolon, where the reference parameter format function incorrectly. And if we do not understand the programming language Why do we need this semicolon, why is this form of argument, even through repeated trial and error to adapt to the norms, in fact, is not caught essential. This memory is not necessarily strong, other professional students may learn basic computer finished university, sophomore do not write code, after a few years there is a problem to force the next time he accidentally started writing a compiler program, and back again just like to learn programming, a compiler error to correct a wrong format that period of time.

And when we passed the assembler and compiler theory of learning, step by step, high-level language into machine language underlying language or have a certain understanding of this process, we will be able to understand a simple sentence to the end of the semicolon, and parameter types the mandatory declaration corresponds to the semantic processing of the compiler work has brought much convenience. If we are designers of programming languages, in order to fit complex functions and friendship between people reach equilibrium, a format specification is essential! The difference is only the more rigid format process more convenient, more free-form processing higher degree of difficulty, like natural language format so free that is really incredible. If we understand these relegated to the first line of code to write a few years, or start learning a new language, be able to quickly adapt and become familiar with the natural features of grammar, avoid formatting errors quickly learn to focus on more advanced on the issue. This practice has learned the essence of the problem is efficient.

So I think you want to quickly develop a skills through practice with a purpose to understand why these skills are required, what is the deep-seated need for us to understand the essence of improving efficiency has a significant help. Specific to this course on software engineering, why pair programming way, why do unit testing, which can look necessity before practice, practice to facilitate the process of catch focus, conscious practice to master.

2. In the 4.2 specification in the code style made the request:

Principles of the code style is: simple, easy to read, unambiguous Tip: Here to talk about the style of one of the words, in case of a dispute, the key is the proper spirit of "keeping simple, make the code easier to read," and see dispute the code standards could allow programmers to better understand and maintenance procedures

So how to write concise, easy to read, unambiguous code?

Direct links posted here a few official Google Code specification (need a ladder):

C ++ Style Guide

Python Style Guide

Java Style Guide

3. taking advantage of the program is given in 4.5.2:

Knot has the following benefits program:

1. In the development level, station programming to provide more evil design quality and code quality. They collaborative problem-solving ability of the two is more cooperation, as well as the role of mutual encouragement, engineers see the ideas and skills of others, in real time explanation, be motivated, in an effort to improve their level, have bigger ideas.

2. The developers themselves, the pair work to bring more confidence, high-quality output, can lead to higher satisfaction.

3. On the enterprise management level, pair could communicate more effectively transfer experience and learn from each other, share knowledge should also be able to better movement of people short, if used properly, pair programming may be higher input-output ratio Return of lnvestment) .

For point 2: Pair work to bring more confidence, high-quality output, can lead to higher satisfaction. I have the following questions:

  • Pair programming can really bring you more confidence? How I believe my twinning partners to improve my efficiency? Equally, how I let my twinning partners believe me?
  • And the process of twinning partners work running itself takes time, can really improve my output to ensure high quality it?
  • I prefer a man to assume the programming task, but if an experienced and strong character who made me work in pairs to improve efficiency, but also learn something I did not feel uncomfortable, I get satisfaction from which it?

I think the pair programming should be a small team separate, pair programming itself is a high-strength work both face an extreme programming applications, end the two programming face constantly switch roles, and less to the traditional review mode reviewers deep understanding of the project, the review process wasted time caused by the case of efficiency, for some people to communicate with others share exchange, pair programming obviously enable them to obtain the effect of 1 + 1> 2. And some people do not want their work status and details exposed in front of others, for communication there are ill feelings, then obviously knot in their body programming is likely to be a not only embarrassing, but also distracted reduce the efficiency of the way.

4. Get a user needs 8.3 - user research, there are so a swing chart to represent the needs of the user in understanding this issue, expressing the user achieve modification understand, developers and testers of the product manager, there are some difference. How to reduce this difference? How to understand the real needs of the user needs analysis?

Here posted a blog link:

US study notes of Software Engineering: requirement analysis in the end what you want to analyze? How to analyze

5. mentioned in 13.3.1

. When tested as much as possible with the Debug version easy to find Bug A super: If your goal is to make the problem appear, find the problem as soon as possible as quickly as possible, I recommend using Debug version, "found as soon as possible issue" early in the software development cycle is particularly important if you the purpose is to test as users see the software, use the release version, which is particularly valuable when the implementation and effectiveness of stress tests late in software development

What is a debug version, what is the release version?

The entire Baidu Encyclopedia release entries:

Release version

Excuse me, "software" and "software engineering" is how these words appear - when, where, who?

  • August 1953 Rand Corporation study of Richard R.Carhart in the memorandum the company's first proposed the concept of software
  • During Apollo 11, Margaret Hamilton at the MIT Draper Lab to start using the "software engineering" such words to make the difference with the other hardware engineering classes.

Third, we know the origin of software and software engineering, software engineering development process is there in what you find interesting trivia and stories?

The first bug is named Grace Hopper. On one occasion, Grace used MarkⅡ machine had broken down. The relay error found, the cause of the fault also found: There are a dead moth. Moth was out with tweezers, stick them with tape recording This is the first actual bug found. "(This is the first discovery of a bug.)

Fourth, the Internet survey about the current popular source version management software and project management software, what are, what advantages and disadvantages? Follow how many number of people using the last couple of years, from more to less sorting and explain how much each user (estimate), advantages and disadvantages of the tool (you can reference the relevant information and indicate the source).

  • git
    • git advantages:
      • 分布式开发,对于公共服务器压力不会太大。
      • 速度快、灵活、分支之间可以任意切换。都可以在本地操作不同步到远程。
      • 冲突解决,多人开发很容易就会出现冲突,可以先pull远程到本地,然后在本地合并一下分支,解决好冲突,在push到远程即可。
      • 离线工作,如果git服务器出现问题,也可以在本地进行切换分支的操作,等联网后再提交、合并等操作。
    • git的缺点:
      • git没有严格的权限控制,一般是通过系统设置文件的读写权限来做权限控制
      • 工作目录只能是整个目录。
      • 学习门槛较高
  • Microsoft TFS
    • 优点
      • 对敏捷、msf、cmmi提供支持
      • 与VS无缝结合
      • 能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用。
    • 缺点
      • 能应用起来的团队、公司的数量极少,多数真正用起来,也就是源代码管理这部分,这也仅仅是占TFS极小部分功能。
  • Mercurial
    • 优点
      • 基于python,拓展性强
    • 缺点
      • 分支管理不灵活
  • GitHub
    • 优点
      • 基于Web,提供Git存储库服务,版本控制灵活
      • 使用用户多,是很好的协作开发工具
    • 缺点
      • 具有git不好上手的特点
      • 可能不是捕捉创意过程和记录创意点子的最佳工具。
  • Trac
    • 优点
      • 具有良好的扩充性,权限体制比较完备。
      • 非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。
    • 缺点
      • 不支持多项目
      • 不支持中文,需要安装插件
  • Bugzilla
    • 优点
      • 免费、有中文版支持
    • 缺点
      • 只能管理缺陷
  • Apple Xcode
    • 优点
      • 自动提供撤消、重做和保存功能,无需编写任何编码
      • 可以自动创建分类图表

部分资料参考:

Git的优点和缺点

GitHub、GitLab与BitBucket应该怎么选?

Mercurial有哪些优点?

Name Users Projects
GitHub 31,000,000 100,000,000
Bitbucket 5,000,000 unknown
Launchpad 3,965,288 40,881
SourceForge 3,700,000 500,000
GitLab 100,000 546,000
GNU Savannah 93,346 3,848
OSDN 54,826 6,294
Ourproject.org 6,353 1,846

资料来源

版本控制工具使用:

用git和GitHub保存一个含readme的远程仓库:


Guess you like

Origin www.cnblogs.com/noharaShio/p/12436935.html