What is engineering? What is an engineer?

We often talk about software engineers and software engineering. But I always wonder: Are a large number of us worthy of the title of software engineer.

(1) Organization

Engineering is a multi-person job that requires:

  • Post-Level-Echelon

  • Organization - division of labor

  • Formation team

This is also a very prominent problem in China's software industry. Because too much emphasis is placed on the final output of the software-code, so the post-organization is often missing, resulting in a group of programmers who produce code instead of an established team. Many jobs that don't produce code are ignored - marginal - absent.

(2) Items

Engineering requires good project management:

  • plan, task, progress

  • quality

  • budget - cost

This is also a very big problem in China's software industry, especially the lack of control over budget-cost-ROI, and the infinite love and investment of software as one's own children, which leads to the loss of goals-out of control in scope-out of control in progress. Although many companies want to adopt the Western IPD method, the West develops IPD based on the logic of capitalism-investment ROI, so there is no psychological barrier in the West whether it is self-research or mergers and acquisitions. Treating enterprises as their own children with infinite care, and software products as their own children with infinite care, so this also makes the implementation of IPD by my country's software companies mostly ineffective. Of course, because our country is not capitalist, each company can only raise its own children, and gradually develops a culture of preferring chicken heads to phoenix tails, and jade fragments to tiles. This also leads to the fact that if a merger is launched, In the end, professional talents, products, and customers are all in vain, so this has led to Chinese software companies self-developing instead of mergers and acquisitions.

(3) design

We all know that before doing a project, we have to do design. If you have seen the blue drawing paper of architectural engineering and mechanical engineering, and seen them measure angles and verify mathematical calculations over and over again, you will know the rigor of engineering.

It is rare for me to do a lot of mathematical calculation verification during the design period in the software industry. I think that if everyone develops hard-to-modify hardware products, or researches and develops human life (medical equipment software, high-speed rail and aircraft dispatching command software), property (banking software, telecom billing software, e-commerce transaction software), security God (security software, network firewall), maybe it won't be so capricious.

(4) Test

When doing engineering, everyone knows that after the blueprint is designed, the next step cannot be done, but to be tested and verified. This is very similar to the test-driven code development that the software industry once advocated. But many software teams do neither formal experimental engineering nor agile-test-driven development.

What kind of test to do, input and construction of the test environment, test process design, test result data record, test result report, and test expert review and acceptance are all common test items in other engineering categories. I rarely see engineering in the software industry doing this.

(5) Baseline

Engineering requires standards and Baseline benchmarks.

This is a very big problem in the software industry, there is no established baseline. Of course, to establish a baseline, you need to invest in the establishment of the environment, and you need to invest in resources to establish the baseline. The capital investment of these work that cannot directly produce the final product results is difficult to accept and tolerate.

(6) Tools

Engineering requires a large number of semi-automated engineering tools.

For software engineering:

  • Requirements management tools, project management tools

  • analysis tools, design tools

  • coding tools,

    code review tool
  • Code hosting storage tools, code version management tools

  • Continuous integration tools, automated testing tools

  • Continuous Release Tool, Continuous Deployment Delivery Tool

  • DevOps Tools, Observability - Measurability Tools

These tool pipelines must have a dedicated team to build and a dedicated team to continuously improve and maintain it.

A large number of Chinese software companies are essentially manual work by a group of people, which is equivalent to the trade of craftsmen, which cannot be called software engineering.

(7) Skill certification

In other engineering categories, there are job skills training and job skills examination certification.

The job skills I am talking about refer to the skills that a job needs to have. The skills mentioned here are all the skills that he can qualify to complete the job required by the position at his level.

So we will see that in other engineering classes, it is a skill-by-skill training and passing the examination, and finally a post qualification certificate is issued.

And it's certified. Without a certificate, you cannot work.

1afd3c377d64097ccd3525df24ffdc9d.jpeg

Guess you like

Origin blog.csdn.net/david_lv/article/details/129742392