软件开发的201个原则
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

A Message to Chinese Software Engineers

To My Brothers and Sisters,

Like you,I started my career as a software engineer; that was almost half a century ago,back in 1975.I see our differences in time and nation to be fairly insignificant; let me explain why.

■ Comparing 1975 with today: Yes,the languages and tools we use have evolved.Yes,the applications we work on have grown far more complex.However,the critical missions we are on are basically unchanged.Whether we are busy engineering software to entertain teenagers playing games,building control systems that keep people happy and safe,or building communication systems that enable the world to become ever smaller,we all have the same responsibility today we had 50 years ago,i.e.,to use our best knowledge to build the safest,most reliable,least vulnerable systems we are capable of.

■ Comparing nations: Politicians would like us to believe that China and the USA are somehow different.I disagree.I believe that all structures of government are perfectly acceptable; their effectiveness is only limited by the leadership capabilities of the individuals in charge.I do not subscribe to the belief that some country can be an enemy simply because its type of government looks different.Personally,I have traveled to 95 countries,and what I have learned from that experience is that people are the same everywhere.All parents want the best opportunities for their children.All people love their own country.Although little to do with China and USA specifically,my own opinion is that people who have the least are the richest,and people who have the most tend to be the poorest.So much for what politicians,led by their economists,call people who“live below the poverty line.”For me,people who live in such conditions are the first to invite me into their homes and provide me with food and shelter.Their warmth and willingness to share what little they have makes them rich,IMHO.

So,I talk to you as my friends,my peers.Go forth in your careers.Work hard,but also find time to play.In USA,we“live to work;”I suspect it is the same in China.When I lived in Spain,I learned that they“work to live.”I never learned to do that,but I envy Spaniards with their lifestyles.I think we should all try to strive for that.

When you are architecting software or “throwing code,” do not lose sight of what is really important.And what is that? It is your integrity.It is your opinion of yourself.If somebody asks you to do something that you know is wrong,you have an obligation to yourself to stop it.What can be wrong when building software? Here are some examples:

■ Agreeing to a delivery date that you know is impossible (just to satisfy somebody else's misguided promise)[1].

■ Delivering software that you know has not been thoroughly tested.

■ Building software that does not abide by the most severe of the enclosed principles.

■ Contributing software that will play a role in a system that violates your own moral or ethical beliefs.

The penalties for doing these things can be severe,but the rewards are great: you will be able to sleep well at night knowing that you did the right thing.I was fired only once for standing on such principles.At the time I was a director of a technology center,and I was fired by my boss,who was a Vice President.It was extremely traumatic at the time.But looking back now,I feel so great about taking a stand for what I believe was right.I am not advocating that all of you get yourselves fired! I am advocating that you take a broad perspective of the job you are doing.Look at the big picture.See how your contribution fits in.And stay true to yourselves.Software engineering is a wonderful career.It enables you to enter hundreds of specialized fields that utilize software as their backbone.As Spock said,“Live long and prosper.”Enjoy it!

Alan M.Davis

2021.9


[1]Although there is nothing wrong with working incredibly hard to try and reach a seemingly impossible date in order to help another human save face.