The complexity of our systems is increasing, but we are creating products with smaller teams

18 August 2021 by Phillip Johnston • Last updated 28 April 2022Our systems are becoming increasingly complex. Even a “simple” embedded device ends up being a distributed system in reality: The embedded software needed to make the device function The manufacturing test software needed to test the device at production time Bootloaders that can handle software updates and fallback cases in case an update fails The applications or web interfaces used to interact with the device The backend servers and services that are needed to manage the provisioning of the device and sending/receiving data The update servers that the device …

To access this content, you must purchase a Membership - check out the different options here. If you're a member, log in.

The Important Problems in Our Field

In the outstanding talk “You and Your Research” by Dr. Richard Hamming , he tells us that we need to be regularly asking ourselves two questions:

  • What are the important problems in my field?
  • Am I working on them?

If we want to make important contributions or produce outstanding work, we need to continually revisit these questions.

Quote

Good people, very talented people, almost always turn out good work. We’re talking about the outstanding work, the type of work that gets the Nobel Prize and gets recognition.
– Dr. Hamming

Dr. Richard Feynman also talked about having twelve favorite problems that he always kept in the back of his mind.

Quote

Every time you hear a new trick or a new result, test it against each of your twelve problems to see whether it helps. Every once in a while there will be a hit, and people will say, ‘How did he do it? He must be a genius!

Our problems don’t have to be impossible or grand, either. Dr. Feynman, in a letter to Koichi Manom, advises us that any problem we can help solve or contribute to is a valuable one.

Quote

The worthwhile problems are the ones you can really solve or help solve, the ones you can really contribute something to. A problem is grand in science if it lies before us unsolved and we see some way for us to make some headway into it. I would advise you to take even simpler, or as you say, humbler, problems until you find some you can really solve easily, no matter how trivial. You will get the pleasure of success, and of helping your fellow man, even if it is only to answer a question in the mind of a colleague less able than you. You must not take away from yourself these pleasures because you have some erroneous idea of what is worthwhile.

[…]

No problem is too small or too trivial if we can really do something about it.

Our Take on the Important Problems

These are the problems that we are currently thinking about:

Fundamental Problems

Cultural Problems

Problems in Education

References

  • Building a Second Brain by Tiago Forte affiliate link

    In other words, Feynman’s approach was to maintain a list of a dozen open questions. When a new scientific finding came out, he would test it against each of his questions to see if it shed any new light on the problem. This cross-disciplinary approach allowed him to make connections across seemingly unrelated subjects, while continuing to follow his sense of curiosity.

  • You and Your Research by Dr. Richard Hamming

    Good people, very talented people, almost always turn out  good work. We’re talking about the outstanding work, the type of work that gets  the Nobel Prize and gets recognition.

    It’s not the consequence that makes a problem important, it is that you have a reasonable attack. That is what makes a problem important.

    • Definitely true for engineers and programmers too:

    The average scientist, so far as I can make out, spends almost all his time working on problems which he believes will not be important and he also doesn’t believe that they will lead to important problems.

    Most great scientists know many important problems. They have something between 10 and 20 important problems for which they are looking for an attack. And when they see a new idea come up, one hears them say ‘Well that bears on this problem.’

    You should do your job in such a fashion that others can build on top of it, so they will indeed say, ”Yes, I’ve stood on so and so’s shoulders and I saw further.” The essence of science is cumulative. By changing a problem slightly you can often do great work rather than merely good work. Instead of attacking isolated problems, I made the resolution that I would never again solve an isolated problem except as characteristic of a class.

    To end this part, I’ll remind you, It is a poor workman who blames his tools – the good man gets on with the job, given what he’s got, and gets the best answer he can.” And I suggest that by altering the problem, by looking at the thing differently, you can make a great deal of difference in your final productivity because you can either do it in such a fashion that people can indeed build on what you’ve done, or you can do it in such a fashion that the next person has to essentially duplicate again what you’ve done. It isn’t just a matter of the job, it’s the way you write the report, the way you write the paper, the whole attitude. It’s just as easy to do a broad, general job as one very special case. And it’s much more satisfying and rewarding!

  • Richard Feynman’s Letter on What Problems to Solve by Farnam Street, quoting a letter from Richard Feynman

Development teams tend to focus on the next milestone, not the long-term

The pressure on software teams is increasing, and this causes development teams to focus exclusively on the next milestone instead of looking toward the long-term. Sacrifices are made so teams can get to the first release as quickly as possible, and then sights are set on the next release.

When you take such a short-term view and focus entirely on shipping the product or making the next release anything that can be perceived as slowing you down is deemed not worth the tradeoff. As a result, the following are often neglected:

  • Documentation
  • Abstractions and Interfaces
  • Design for Change
  • Design for Testing
  • Automated Quality Enforcement

All of these neglected areas are essential for the long-term viability of our project, leading to lack of Maintainability and increased rate of software aging.

The underlying problem is that you lost sight of the fact that you’re not done once you ship the product or make the release. Getting to the release of a product is like sprinting to get to the birth of a child – you still have to support and improve your product for 5, 10, 15, 30 (or more!) years. The reality is that maintenance dominates. If you rushed to market, you may not have built the product your customers actually want, forcing you to make significant changes after launch – and given the shortcuts you took, those changes may cost you a significant amount of time and money. The odds are also good that your company intends to produce more than just a single product, whether it is a product line, a product family, or a new version of the product over that timeframe. In our experience, follow-up development efforts tend to rely upon existing code and infrastructure to shorten development timelines. That requires you to you invest in your systems before you need to leverage them for another purpose.

Being trapped in short-term thinking is a problem that will compound over time. The solution is to take a step back and consider decisions against the backdrop of the product’s complete lifetime. You aren’t done just because you shipped. What happens after that moment matters too.

References

  • Software Aging by David Parnas

    Many programmers are impatient with such considerations; they are so eager to get the first version working, or to meet some imminent deadline, that they do not take the time to design for change. Management is so concerned with the next deadline (and so eager to get to a higher position) that future maintenance costs don’t have top priority.

  • Software Aging – Why it happens and how to reduce it by David Parnas

    Many programmers are too impatient – they want to be “agile”

  • 5 Reasons to Develop a Software Architecture by Jacob Beningo

    I’ve found that businesses and developers often have their focus on the near term verses the long-term. They busily write their code trying to meet short term deadlines while neglecting activities that need to be done short-term in order to ensure long term success. While a software architecture will require a few cycles short-term, developing one and maintaining it can have the long-term benefit of transferring knowledge to colleagues and new hires on how the software system works

  • Patterns in the Machine : A Software Engineering Guide to Embedded Development by John Taylor and Wayne Taylor

    This rush to get things done, then, leads to software that is fragile and that tends to collapse if there are requirement changes or feature extensions. It also leads to software that is challenging to test, especially before fully functioning hardware and fully integrated software are available.

  • Frequently Forgotten Fundamental Facts about Software Engineering by Robert Glass, IEEE Software, May/June 2001

    ES7. Pressure to achieve estimation targets is common and tends to cause programmers to skip good software process. This constitutes an absurd result done for an absurd reason.

The Pressure on Software Teams is Increasing

The world is increasingly pushing us to produce software faster, at lower cost, with smaller and less experienced teams. We have to enable ourselves to do it better and faster. This pressure also causes teams to focus on the next milestone instead of the long-term realities of the project.

So the primary question is: what systems, techniques, and processes can we put into place to produce higher quality software with lower effort?

We want:

  • to increase our personal effectiveness
  • get feedback faster
  • prevent bugs before they get checked in or reviewed by others
  • prevent bugs from reaching the customer
  • to quickly and easily respond to changing requirements
  • to be able to produce higher quality software with smaller teams, allowing us to work more flexibly in today’s world

What are some ways we can do this?

References

  • Niklaus Wirth

    Time pressure is probably the foremost reason behind the emergence of bulky software. The time pressure that designers endure discourages careful planning. It also discourages improving acceptable solutions; instead, it encourages quickly conceived software additions and corrections. Time pressure gradually corrupts an engineer’s standard of quality and perfection. It has a detrimental effect on people as well as products.

  • Reusable Firmware Development by Jacob Beningo

    When it comes to product development, the single constant in the universe is that the development either needs to be done yesterday or by some not-so-distant future date.

  • Patterns in the Machine : A Software Engineering Guide to Embedded Development by John Taylor and Wayne Taylor

    But referring to “traditional” embedded software projects may be the wrong word to use. Embedded software isn’t developed the way it is because of tradition; rather, it is often developed this way out of a sense of desperation

  • Frequently Forgotten Fundamental Facts about Software Engineering by Robert Glass, IEEE Software, May/June 2001

    ES3. Most software estimates are made, according to several researchers, by either upper management or marketing, not by the people who will build the software or by their managers. Therefore, the wrong people are doing estimation

    ES7. Pressure to achieve estimation targets is common and tends to cause programmers to skip good software process. This constitutes an absurd result done for an absurd reason.

The Problem of Electronic Waste

We found ourselves reflecting on our lives and the state of the world during the SARS-CoV-2 Pandemic. We’ve become increasingly appalled by the amount of waste we personally and communally generate, and even more so, by the electronic waste (e-waste) that our industry generates.

For more on what you can do as engineers and product builders, see Reducing Electronic Waste.

Table of Contents:

  1. The Problem of E-Waste
  2. A Deeper Look at Electronic Waste’s Impact
  3. Related Entries
  4. Further Reading

The Problem of E-Waste

In 2019, the UN reported that we are producing a “tsunami of e-waste”, around 50 million tons of e-waste a year. The UN projects an increase to 120 million tons of e-waste generated yearly by 2050 if we don’t change the current trend. Unsurprisingly, smart phones and computers make up largest portion of e-waste. In the United States, there were an estimate of 100 million discarded cell phones in 2005, and 150 million in 2010. Given the constant yearly releases and biennial phone upgrade cycle, we expect this trend to continue.

Under 20% of our e-waste is actually recycled. The e-Trash Transparency Project has been keeping tabs on the problem by placing GPS-based tracking devices into old electronics. They repeatedly find that much of our e-waste is illegally exported or dumped, often by the electronics recyclers we trust. E-waste recycling isn’t cheap, and often recycled material is more expensive than raw materials. Rather than properly processing these devices, many simply resell the material to regions such as Agbogbloshie, Ghana, Delhi, India, and Guiyu, China. In these places, “processing” simply involves burning piles of cell phones to extract useful materials.

We poison these regions by dumping our electronic junk there, just as we poison our own lands and people with improper local disposal. Electronics are produced with many harmful elements such as lead, cadmium, arsenic, chromium, and mercury. These materials pollute the air, water, and soil. Combusting e-waste is especially harmful, as it creates fine particulate pollution that causes heart and lung diseases. They cause irreversible physiological damage and retard child development.

Table showing different toxic substances and the health effects they have on humans.
A chart of health-risks associated with substances found in e-waste, from Not In Our Backyard: Computer waste and Engineering Ethics, by Marilyn Dryud.

Improper e-waste recycling also causes significant resource loss for rare earth metals like copper and gold. According to the UN, “As much as 7% of the world’s gold may currently be contained in e-waste, with 100 times more gold in a tonne of e-waste than in a tonne of gold ore.” The EPA states that “for every million cell phones we recycle, 35 thousand pounds of copper, 772 pounds of silver, 75 pounds of gold and 33 pounds of palladium can be recovered.” While recovering these metals often requires the use of toxic chemicals such as mercury and cyanide, teams are also working on efforts for extracting metals (such as gold) without the use of these harmful chemicals.

A Deeper Look at Electronic Waste’s Impact

Perhaps you remain unconvinced that we must worry about electronic waste. Not In Our Backyard: Computer waste and Engineering Ethics, while published in 2004, provides us with a stark look at the impact of electronic waste. There have been some improvements to date, but not significant enough to overturn the information described below.

  • This paper, however, focuses only on computer waste [PJ: so the problem is much bigger than outlined here!]
  • The problem is huge and growing. In the US, for example, individuals, businesses, and governmental/non-governmental agencies discard about 136,000 PCs daily – more than 10,000 a week from the federal government alone– totaling some 250 million units annually.
  • They are, however, psychologically obsolete, as the life of a PC has deceased from five years in 1997 to two currently
  • Less than 10% are recycled, and, of those, most are destined for disassembly in third world countries. In fact, about 80% of “recycling” efforts in the US consist of exporting e-waste abroad
  • Computers are considered hazardous waste because they contain 34 distinct toxic substances
  • Discarded electronics account for about 40% of lead in US landfills.
  • Cadmium is used as a plastics stabilizer and can also be found in older CRTs. In newer computers, it is used in SMD chip resistors, semiconductors, rechargeable batteries, and infrared detectors
  • About 22% of the world’s annual consumption of mercury is for electronics.
  • PVC, in particular, poses a human health hazard: when burned, it releases dioxins, which have a devastating effect on humans, settling in body fat. [PJ: Note that PVC is the primary plastic used for cables. Apple has been moving away from PVC, and some others are following suit.]
  • These varied substances–about 75 different chemicals are classified as brominated flame retardants (BFRs)16–are used in computers and other electronic devices to reduce flammability, but they are present in other consumer goods as well, including TV sets and kitchen appliances.11 Printed circuit boards, connectors, covers, and cables all contain BFRs.
  • beryllium, used on motherboards and connectors, and linked to lung cancer
  • Four hours northwest of Hong Kong, lies Guiyu, an area consisting of several small villages nestled along the Lianjiang River. Prior to 1995, Guiyu’s major product was rice. After 1995, the major activity was computer recycling, focusing on materials recovery, which has transformed the once pastoral community into a toxic dump: mountains of computer debris clog the streets, and the river frequently changes color, depending which plastic residue is dumped into it.
  • Workers are paid $1.50 a day, nearly double the typical salary, and are afforded no bodily protection, such as goggles, masks, or gloves.
  • While e-waste scavenging provides jobs, it has had a shocking effect on the environment: according to testing conducted in Guangdong Province, the site of Guiyu and other recycling centers, heavy pollution exists in 20% of rivers and 55% of precipitation is acid rain.27 Drinking water is so contaminated that it has to be trucked in: lead levels are 2,400 times higher than World Health Organization guidelines. Spot soil samples revealed astonishingly high levels of barium (10 times higher than the EPA threshold), tin (152 times higher), and chromium (1,338 times higher). Copper so saturated the soil that it accounted for 13.6% of the total sample. A 2005 Greenpeace report concludes that the result of the electronic recycling business in China and India is “severe contamination of the workplace and adjacent environment with a range of toxic metals and persistent organic contaminants.”
  • A USAID report notes that of the country’s 400 rivers, 50% “are characterized as biologically dead due to contamination from industrial and residential run-off…[and] the lack of a central hazardous waste treatment facility is a major obstacle in properly disposing of toxic and hazardous waste.”
  • In 1987, Nigeria became the site of one of the first cases of global toxic waste dumping, courtesy of an Italian businessman who contracted with a Nigerian landowner to store 18,000 barrels of “construction materials,” containing PCBs, asbestos, and dioxins, at the tiny port of Koko Beach. The scandal that ensued after the barrels started leaking was a catalyst for the 1989 Basel Convention.
  • In more recent years, Lagos, the second largest city in the world, has been the recipient of nearly 400,000 used computers a month
  • Unlike China, where the emphasis is on materials recovery, Nigeria focuses on repair and refurbishment of outdated computers. Hence, the streets of Lagos are not clogged with mountains of computer components awaiting disembowelment; rather, the city has enormous warehouses piled high with thousands and thousands of old computers and peripherals awaiting rejuvenation
  • While cottage industries operating out of several large marketplaces manage to repair and resell some of the units, most are taken to local unlined landfills, which regularly leak. The leachate is not recovered and quickly reaches ground water, only 3–6′ below the surface. To reduce the amount of waste in the landfills, they are regularly set on fire, releasing dioxins and heavy metals into the atmosphere.
  • Starting in 1991, Japan enacted a series of recycling laws designed to both promote awareness of recycling and require businesses to take back and recycle old products such as washing machines and TVs when consumers purchase a newer model. Consumers pay a recycling fee, ranging from $21–41 US
  • While other nations are making impressive strides in passing legislation with an eye to the future and the safety of the planet’s population, the US seems to be suffering from environmental myopia.
  • The world’s largest producer and exporter of electronic waste has no national policy governing exportation and disposal of e-waste, and state legislation is a patchwork quilt, if it exists at all
  • The reasons why the US has no significant e-waste legislation are complex and somewhat dependant upon the capitalist economic system, which requires that consumers spend in order to keep the economy running. Thus products, while probably not technically obsolete, have a built- in psychological obsolescence factor to keep consumers spending.
  • We are so bombarded with technology and electronics now, it has somewhat lost its luster.” With less emotional attachment to our gadgets, it is easier simply to toss them out.
  • Another reason involves a recycling fee charged for acceptance of old electronics. Were it included in the retail price, most consumers would not even notice
  • voluntary recycling programs that involve even a small fee are ineffectual
  • The images of workers hip deep in exposed circuitry, inhaling noxious fumes with every breath; of children romping in ash heaps and tottering over hillocks of crushed monitors; of cattle serenely grazing on poisoned land; of women washing clothes and cooking with water so contaminated that it devours metal: all tug at the heartstrings and silently cry for a justice that is not forthcoming from an international community that could easily mitigate the deplorable conditions caused by thrusting the computer revolution’s waste on the poorest of the poor.

Further Reading

For more on E-Waste: