Interview with Bruce Douglass about embedded experience

Source: Internet
Author: User
BRUCE: On the surface, programming is to write code for what you want to implement. But the fact is that coding is only a small part of the software development process, the programmer's work also includes security analysis, Responsibility Analysis, Product verification, and product analysis. ========================================================== ========================================== Abstract:Bruce Douglass is a senior expert in embedded and UML applications and has more than 30 years of experience. He is also the author of more than 10 technical books such as "C embedded programming design patterns. He is currently the chief evangelist at IBM rational. In the interview, he shared his experience and insights in the embedded field. Unusual personal experiences

Csdn: You have studied physiology and medicine. How have these experiences affected your development in the computer field?

BRUCE: My experience is quite special. At the age of 14, I went directly to college from middle school. I started my major in mathematics, and later I went to my major in Sports Physiology until I graduated from my master's degree, my doctorate degree is neurocybernetics (neurology) from South Dakota University ). These experiences give me basic scientific literacy, and computer engineering is a scientific application. Having been involved in different fields gives me stronger reasoning and analysis capabilities and a broader perspective.

For example, when I worked as a consultant for several companies, I often found obvious internal errors, but they were not aware of them. Like men and women in communication, all of your friends say that they are too bad people to contact you, but you don't know what you love him/her until you break up one day and look back, you may regret it. This is often the case for organizations, just like running a wrong marriage. Only by looking at problems independently from the organization itself can we make the most objective analysis-development and engineering management.

Another example is that a German car manufacturer has an 18-month vehicle repair process. The first six months are called "feature building" and the last 12 months are called "feature stability ". That is to say, this process takes six months to create and then 12 months to repair the defects. This is a very obvious problem. Why can't defects be avoided through detection devices, efficient simulation, and other means in the first stage? The key to analyzing the problem lies in how to define the problem and how to find different solutions from a macro perspective.

Csdn: What attracts you to start programming and enter the current field?

BRUCE: On the surface, programming is to write code for what you want to implement. But the fact is that coding is only a small part of the software development process, the programmer's work also includes security analysis, Responsibility Analysis, Product verification, and product analysis.

When I first wrote a program for my master's thesis, the topic of the paper was "the interaction between thyroid hormone and noradrenaline under cold pressure", which was in 1978, in order to achieve large-scale statistical analysis, I bought a computer with 4 kb memory and compiled my first program-more than 1000 lines of VB statistical analysis software. Later, I wrote a lot of software, including some system drivers, to complete a set of data analysis (I .e., bio-neural computing) for biological neuroscience information processing.

Csdn: How do you improve your skills during your career?

Bruce. In my book, I have always tried to add more instance designs. In real time UML workshop for embedded systems, I wrote a drone design case; in another book, I designed an interesting story about Starcraft travel transmitter. I am writing this book about "agile system engineering", and I have designed a wearable robot armor, similar to what robots wear in the movie alien, however, it is 8 times larger than that in the movie. It weighs 1500 kg and can run 80 km per hour.

I have been involved in many system development-computer tomography, medical care (e.g. pacemaker, ventilator) drones, automation, aerospace, and launch vehicle systems-I found that different industries have different application environments, but they are also common. We need to summarize our knowledge in constant practice. Experience brings wealth to people. Once my son asked me how to become a writer (He wants to write a novel), and I told him that you should first start writing.

Csdn: during system development in these different fields? What are your experiences?

BRUCE: There are many.

First, we need to think differently to overcome our shortcomings. When I was a consultant, I often saw some cases that were impossible to achieve, but the clients were unaware of them. In the face of problems, we need to get out of our mindset, find a solution from different perspectives, and find the underlying mechanism of the problem through thinking. For example, when I was in college, I basically didn't take chemistry courses, but I passed the exam through speculative answers (I don't recommend that you use this method ). We need to learn how to see things, take a look at the root cause of things, and summarize the attempts, predictions, and final success methods we have made, then, try more solutions while ensuring the success .. We need to develop appropriate measurement standards to record and display the success and failure and the overall goal in the process.

Second, we need to establish mathematical thinking to improve accuracy. Some people often stick to their own opinions and ignore the facts. Even if the reality has proved that their theories and ideas are not practical, they still stick to the principle that this is meaningless. Theory requires practice to verify the right and wrong. During development, we need a set of measurement standards for evaluation, so as to achieve progress, not just to implement a plan (a plan is just a theory in a sense, not necessarily true). Compared with "how to implement a plan", "how to achieve a purpose" is a better measurement standard.

Third, you must learn to make reasonable plans. The software industry usually produces two types of plans: one is the time and money required to apply for the plan, and the other is used to motivate employees to work hard, there are contradictions in this plan. A reasonable plan must be based on reality and have corresponding measurement standards to record the work progress and work hours. I have many such measurement rules in project management. Generally, I only estimate the time required to complete half of the tasks, so that the two tasks can be flexibly adjusted in time; I will not estimate the progress of a specific person, because it will be delayed. There is a "central limit theorem" in statistics-we usually have only 50% chance to reach the estimated time table.

 

 

 

Adding fun to writing

 

 

Csdn: Why did you start writing books and what problems do you want to solve?

BRUCE: My first book was written after graduation. At that time, I ran a software company. Because I published many computer magazine columns and articles, a publishing house found me, therefore, I wrote my first book on data analysis. In the process of writing, I will always pursue two goals-to benefit both individuals and readers. I think there are three layers of understanding about a problem: the first layer is that I heard about a technology, but I don't really understand it. The second layer is the application, which is a deep understanding; the third layer is the ability to pass on knowledge to other people, indicating that they can not only apply the knowledge, but also teach people with different technical backgrounds and learning methods. For readers, there are many intelligent people in many industries, such as aircraft, highway systems, and financial fields. However, there are poor practices in these fields, especially in industries with high security requirements (including medical, avionics, motor vehicle equipment, heavy industry, shipbuilding, military, and financial industries), I think more improvements can be made.

Csdn: it usually takes a long time to write a book. How do you stick to it? Who has the greatest impact on your writing?

BRUCE: it takes about 2000 hours to write a book, which sounds daunting to the workload. Writing a book is a constant battle, and everything is difficult at the beginning. At the beginning, you need to organize the language to list the outlines and so on. This is like taking part in the triathlon. At first glance, it seems impossible to complete, but when you do it one by one, the end will be ahead.

Many people have an influence on my writing. I like the writing style of Grady booch (one of the creators of UML, an IBM scholar). He is a well-organized author. I don't like a typical boring technical book, so I will try to add some humorous elements in the book to make it more interesting to read (but not everyone understands the humor in the book, my wife does not understand ). Grady also often adds entertainment elements in books, and uses interesting and meaningful stories to replace boring texts, making it easier for readers to accept.

Summary of programming and embedded software development experience

Csdn: What are common mistakes of developers in the field of embedded software systems?

BRUCE: first, people often make judgments without practice. For example, some people often take it for granted that software/hardware is nothing difficult. Without practice, everything looks simple. Only when you go deep into a field can you gradually understand the complexity of the field. Today's systems are hundreds of times more complex than a few years ago, and the corresponding security and reliability are also improved, making the related work more complex.

Second, people usually think that a tight schedule can motivate employees to work harder. In fact, this incentive method can only take effect once at most. For the first time, employees may work hard for 20 hours a day to complete their tasks. For the second time, they began to hesitate. For the third and fourth times, they did not agree. I once had a boss who said "reality is friendly", but I always think that reality is reality, unfriendly, but not bad. Reality cannot be ignored. We must always be rational. I found that many organizations have various internal architecture or schedule issues. They never make plans based on facts, do not seriously think about the issues, just think out of thin air, and then expect them to be completed on schedule.

Csdn: reliability and security are critical in the fields of health care, aviation, automation, and military affairs. For developers, what special rules and standards need to be followed in these fields?

BRUCE: the most important thing is that the reliability and security needs to be deduced based on these systems.

I once created a UML Profile for security reasoning, which can be used to display fault risks by combining Preset conditions and fault combinations. For example, you can set a scenario to be avoided and analyze the scenario to determine the security control measures required. Anyone who works as a security software or system will say they need to ensure security, but they usually only stay at the level of security requirements, and do not have a deep understanding of why security is needed. The core part of my profile is assert, which has many forms of presence, sometimes like a credit card password, which we want to ensure is not stolen; sometimes like a pacemaker, we want to ensure it is not disturbed; sometimes it is a specific item. We need to make sure it is not moved at will. When we want to find out these assets, we need to preset some conditions to create the corresponding defects, and then we can find the corresponding countermeasures to improve security. Identify security defects, analyze security vulnerabilities, and learn the content to be protected by enhancing security. Most people do not know what the purpose of security is. Therefore, it is important to have a deep understanding of the purpose of security enhancement.

Csdn: What is the biggest change in the field of embedded software development compared with earlier years?

BRUCE: I think there are three major changes. First, scope: the first software I developed, pacemaker, is an assembly program based on a 6502 processor, a very small, real-time multi-task operating system with a system of only 8 KB. Today, the space and functions of the system are far from the same magnitude as before. In the past, the system was very small and simple, and today's systems are thousands of times more complex than before.

The second is rule changes, including some security and reliability services. Today's Security Supervision feature adds many quality requirements for development rules. In the past, if the machine breaks down, we can directly turn it off, but we can't do it now. For example, if the oxygen device or the plane is driving, we cannot directly turn it off. That is to say, today's quality needs are much higher than before.

Third, integration. In today's world, 0.1 billion million devices are connected to each other, which means that we are facing unprecedented security risks. According to a study published on "Planet Black Hack", they have found different ways to blacklist ordinary mobile devices, mainboards, entertainment systems, automated systems, and sensor systems. Among these devices, they can not only switch the host, enable or lock the firewall, but also steal information and rewrite the engine software. In the past, if someone wanted to steal a car, they had to open the door first. Now, they only need to hack into the car system and rewrite the software to steal the car. This is a huge change in the security level. There was no power system 50 years ago, a power system 20 years ago, but no software, today, a virus can attack tens of thousands of devices and paralyze a city.

Csdn: Do you have any suggestions for Chinese developers to share with them?

BRUCE: in my opinion, developers are new creators, and innovation must not be afraid of failure, nor can they give up easily because others do not approve. In addition, as a developer, we should not only focus on the implementation of system functions, but also on quality assurance. The implementation of system functions should focus on security, reliability, and efficiency. You must have the ability to use different skills independently and intelligently, face errors and correct them in a timely manner. Based on my experience, there is usually a 25% error probability in the application of new things. If not, you will not try to apply new technologies. Most people prefer to stick to the Conventions, and I would rather be an exception. This also means that some incredible wrong decisions will be made, but there is no big deal. It will be fine to correct them next time.

 

Source:

Interview with Bruce Douglass on embedded experience http://www.csdn.net/article/2014-08-04/2821024-Bruce-Douglass-interview

.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.