What ideas from other professions have you applied to software development?

The software development community is always open to new ideas for improving the way software is developed, and it seems to me that we are innovating more than other engineering disciplines or professions.

However, it seems that it would be unsuccessful if our relatively young industry could not learn from the established professions. There should be great ideas open up by people outside of software development that we could benefit from.

Can you describe any ideas, methods or processes used by other professions that you have successfully applied (or not) to the development of your software?

+4
source share
18 answers

Lean development is the obvious choice taken from Toyota manufacturers to tackle the economies of scale in the US industry. It fits well in a flexible software development environment.

+4
source

It may be a stretch, but playing table tennis, I found out that after you get the basic skill, most of your mistakes come from trying to play better than you actually - going behind the helmets, you really don't have the skills make. It is safer to play a conservative game and let the other player replay himself.

During coding, I try not to be smarter than me. (Launching architecture projects by people helps with this.) The introduction of complex data structures to manage dirty reads and cache expiration was quickly reduced because the function was for a subset of users and did not cost memory resources or developers.

I believe that Fred Brooks would call it the second systemic syndrome.

+4
source

Eliyahu Goldratt has a book called “Target,” which is a new factory optimization business book. It has a lot of good discussion on how to define reality (or at least question your own concept), plus material on bottlenecks, which is very useful for the general scalability problem.

+2
source

Psychology is the only one. It not only motivates itself and your teammates, but uses methods to understand what the client wants, and not what he requested. Usability is something else that is important for developing software that is a human-centric factor.

Software may be a technical profession, but application development is human.

+2
source

Personally, I find that the background in math and science is very handy for troubleshooting and debugging. Using a scientific method, applying intellectual rigor to oneself, maintaining healthy skepticism and always returning to the question: "Does this theory better explain the observed evidence?" helps track extremely root causes, not track false findings.

+2
source

I have almost finished ICT education in high schools. I learned a lot:

  • Even teachers are still learning - still learning all the time.
  • The best teachers are also the best students.
  • You can learn a lot from others, regardless of their skill level.
  • Preparation is often the key to success.
  • Assumption is the mother of all f ** k-ups
  • Technology is changing too fast to keep up with all the latest developments - admit that you don't know everything.
+2
source

The old carpentry application, "twice repeated, cut once", is always applicable to the development projects that I worked on. He pays dividends to ensure that everything is in order for the first time.

+1
source

As a consultant, I learned to smile and give the user everything that they ask ...

I cannot mention in a good company which profession I modeled after that.

+1
source

The KISS principle ( K eep I t S , S tupid) is applied here, as it is in my studies in the field of mechanical engineering. As for coding, it is likely that more time will be spent by the developer and others reading the code than writing . Therefore, for this problem, it helps to greatly simplify the design. Restructuring in this area will force even the original developer to stroke his head after three to six months, saying: "Why did I do that?"

Only my $ 0.02.

+1
source

Lists! They are not only for pilots:

Checklist strength

+1
source

Although this is not quite a profession, I think we also need to draw from creative types. For example, for a writer it is very often locked in time blocks to write without interruption. Paul Graham draws strong parallels between hackers and artists

+1
source

Any construction activity - I was always amazed at the vast structures (Bridges and buildings) than with excellent software. Because you always have more opportunities for testing (unit, stress, user acceptance and many quality checks), but imagine how much you can do with a large structure. A good experience in physics and mathematics will undoubtedly enhance your programming skills.

0
source

In a vague sense, construction taught me to think about efficiency. When you are in the workplace, packing your work bags around, transporting lumber, dragging power cords through cluttered, unfinished rooms and corridors and, as a rule, breaking your back, turning a huge pile of lumber and plywood into a house, you will quickly find out that every movement make should do something useful. This is especially true when you have a small business boss behind you, shouting about how he loses money every time you go from point a to point b without taking anything with you.

In programming, it is often the same thing. Instead of keeping your back, you are trying to save time. This takes the form of easily repairable and reusable code. Every time you create a new function to make something hurt like another function, or you create a new class that can easily be inherited from something more general, but almost the same thing, you rob yourself of time and money , as much as if the fracker takes 6 round trips to do something that he, or (rarely) she could do in one trip. In both cases, winning less time to work on a big stupid job and a happier rich boss.

0
source

I spent 14 years researching the efficiency of industrial production. This taught me how to interview people for information, especially when they are not cooperative and how to get information from sources other than interviews (very useful when collecting requirements) and how to analyze analytically and especially how to really understand the data as business prospects and prospects users. This is especially useful when developing databases. When you had to extract data from such poorly designed databases as I had to use when I was anaay, you will know what works and what doesn't. Unlike the average programmer, I used data from literally thousands of different databases.

0
source

Design models were originally used by architects (i.e. people who design real buildings, not software architects).

0
source

Too much to count, and they are connected in such different ways that make the question a little rhetorical, because programming is essentially a mixture of logic and mathematics, designed to interact with any other field to provide solutions / automation of tasks for real life situations. But for this you will need to implement a significant part of this domain logic in order to do something useful.

Thus, software development is not the goal, perhaps the solution, or the solution to each problem involves concepts from the domain itself.

I don’t know if my answer to the question is because it is too general as I see it.

0
source

Dell's enterprise video inspired the queue-based distributed content aggregation system architecture. The message in the queue consisted of work items, with worksheets, tasks, parts, etc., transmitted from station to station.

Each station represented a certain stereotype of work, each station updated the worksheet before sending the message back to routing for subsequent sending.

The system is still in production 7 years after processing the 1st issue of about 30 thousand jobs per hour.

It was an exciting moment to see the system’s “breath” for the first time.

0
source

Curiosity and tenacity.

0
source

Source: https://habr.com/ru/post/1277044/


All Articles