1. 程式人生 > >Wittgenstein’s Beetle In Software Engineering

Wittgenstein’s Beetle In Software Engineering

Ludwig Wittgenstein was a philosopher from the 20th century that came up with an argument called the private language argument. One part of this argument is called The Beetle and The Box.

It goes like this:

[…] Suppose everyone had a box with something in it: we call it a ‘beetle’. No one can look into anyone else’s box, and everyone says he knows what a beetle is only by looking at his
beetle. — Here it would be quite possible for everyone to have something different in his box. One might even imagine such a thing constantly changing. — But suppose the word ‘beetle’ had a use in these people’s language? — If so it would not be used as the name of a thing. The thing in the box has no place in the language-game at all; not even as a something
: for the box might even be empty. — No, one can ‘divide through’ by the thing in the box; it cancels out, whatever it is. (1958, §293)
Wittgenstein, L., (1953), Philosophical investigations, translated [from the German] by G. E. M. Anscombe, Oxford: Blackwell, 1968.

Due to how we express thoughts, it is possible that in a real conversation two individuals believe they are talking about the same "thing", but in reality, they are talking about things that are totally different. It all depends on the subjective interpretation of each one and the assumption that the other knows what is being talked about.

A good example of this is a discussion, where each one wants to express the feelings about the beetle inside the box as if both were aware of what that is:

Person A: The beetle is cute.
Person B: The beetle is definitely not cute.
Person A: I can ensure you it is because I know it!
Person B: And I know it too, that is why I am saying it is not cute!

They could try to describe the beetle in more details:

Person A: The beetle has 6 legs.
Person B: Yes, and 2 eyes too!
Person A: You are right, I know exactly what you are talking about!

Although, even with objective descriptions, there is no guarantee they are the same.

Two different beetles, both with two eyes and six legs
Wittgenstein's beetle represents the individual perception and experiences that form a point of view.

Now, what about software engineering?

Let's say that you are talking with a person and you want to suggest how to improve a piece of code.

You can start making suggestions to create maintainable code using standard development principles. The other developer will understand that create maintainable code is a good thing and that using standard development principles is useful; you both agree.

But then when the work is done you realize the code is totally different from what you expected. The other developer is not using standard development principles or creating maintainable code. But wait, what exactly are "standard development principles" and the act of creating more "maintainable code"?

Of course, you know what they are, right?

… or not?

What if you really don't know what you are talking about?

You might have been a victim of the famous Dunning-Kruger Effect. The developer might have implemented principles that are unknown to you and you just don't see the benefits because you lack context.

What if the other developer don't know what they are talking about?

The other developer might have less experience than you. Or have different opinions over "good" principles.

What if neither of you has any idea of what good principles are?

Remember, the feeling you have when you are wrong is the same feeling as when you are right. You just feel bad when you discover you were wrong, not when you actually are. Both of you can discuss naturally, and still, both of you can be wrong.

When talking about software design we are still tied to the subjective nature of the human being. You can try to be as objective as possible, but when it comes to subjects such as design patterns, principles or abstractions, we are still bound to subjectivity. Even for more objective matters, we are still bound to the level of knowledge and experience that you or the other person have, for that there is no such thing as the proper solution.

Sometimes it is impossible to be completely objective, each individual will always have one box, and you will only know the content of yours.

Next time you talk with someone using technical jargon, try to avoid making assumptions as much as possible. Try to go as deep as you can to make sure both understand, in detail, what is being discussed.

There will always be a level of subjectivity, even in basic language. But what you can do to facilitate a conversation is try to reduce the amount of subjectivity into the smallest possible range, just enough for the task you have in hand.

This way there will be a point where the subjectivity becomes irrelevant in practice.

But it will never be null.

相關推薦

Wittgensteins Beetle In Software Engineering

Ludwig Wittgenstein was a philosopher from the 20th century that came up with an argument called the private language argument. One part of this argument i

Software Engineering——A PRACTITIONER'S APPROACH (english edition · eighth edition)

sts hose english lin curring orf reference spl sign ARCHITETUAL DESIGN Record at P261 Choosing the right architecture style can be tric

Amazon plans machine learning, software engineering, R&D hiring spree in UK ZDNet

Retail to cloud-computing giant Amazon plans to hire over 1,000 new staff across three sites in the UK, and will open a new office in Manchester next year.

【the Blog of Dale無雙】Some recordings in the field of software engineering

Welcome to my blog. For those who are interested in my projects, you can visit My GitHub 專業:軟體工程 態度: 平生用功,但求問心無愧爾。 我寫部落格的目的:1)把所學知

the Blog of Dale無雙(Some recordings in the field of software engineering

Welcome to my blog. For those who are interested in my projects, you can visit My GitHub 專業:軟體工程 態度: 平生用功,但求問心無愧爾。 我寫部落格的目的:1)把所學知

<轉>How to Encourage Your Child's Interest in Science and Tech

sim challenge table nic options https fun developed advice How to Encourage Your Child‘s Interest in Science and Tech This week’s Ask-A-D

what&#39;s new in vc2015

修復 升級 content track 變量 div -m amp data- 1. 變量和函數的註解提示非常實用。象C#了。 2.CStdioFile升級了,不再須要象 vc2013中,用CStdioFileEx來修復錯誤了。 3. 發現再寫。 ?? what

What's New In DevTools (Chrome 59)來看看最新Chrome 59的開發者工具又有哪些新功能

來看 nbsp work 效果 linux 工作者 drawer 表示 cnblogs 原文:https://developers.google.com/web/updates/2017/04/devtools-release-notes#command-menu 參考:h

SOFTWARE ENGINEERING VS COMPUTER SCIENCE: LEARN MORE!

SOFTWARE ENGINEERING VS COMPUTER SCIENCE SALARY Software engineering vs computer science salary? An immortal question, especially if you are inter

[Angular + Unit Testing] Mock HTTP Requests made with Angular’s HttpClient in Unit Tests

repr one class port con return pos present people In a proper unit test we want to isolate external dependencies as much as possible to g

What's New In MySQL 8.0

維護 fast 執行 事務 emc cume_dist bili product nta 由於8.0內有很多C++11特性。需要gcc4.8版本以上。Rhel6系列默認gcc是4.7。在安裝gcc6.1之後仍然檢查不過。 原因可能是6.1版本不一定高於4.7

What’s new in Channels 2 摘譯

Django項目 新版 olt chan 代碼 調研 新版本 targe 啟用 最近準備在一個老Django項目上啟用Channels,Channels於今年2月2日發布2.0版本,這個版本包含很多不向前兼容的特性,為了新特性調研的需要,也為了方便社區,我把新版本

[模擬] Lattice's basics in digital electronics

src bit active con pdo max span pan left 題目鏈接:https://www.jisuanke.com/contest/1556/105551 代碼如下: 1 #include <iostream> 2

ICPC2018沈陽網絡賽 Lattice's basics in digital electronics(模擬)

mea mar tee program cpc into num output electron Lattice‘s basics in digital electronics 44.08% 1000ms 131072K LATTICE is

SDPA: Toward a Stateful Data Plane in Software-Defined Networking

文章名稱:SDPA: Toward a Stateful Data Plane in Software-Defined Networking 發表時間:2017 期刊來源:IEEE/ACM Transactions on Networking 摘要 OpenFlow僅僅提供簡單的“mat

EEE101 C Programming and Software Engineering

代寫EEE101留學生作業、代做C/C++程式設計作業、代寫modular program作業、代做C/C++語言作業EEE101 C Programming and Software Engineering 1 – ASSESSMENT 2Assessment Number 2Contribution to

A Deep Learning Based DDoS Detection System in Software-Defined Networking (SDN)

標題:基於深度學習的軟體定義網路(SDN)DDoS檢測系統 來源:Security and Safety 時間:2016年11月 摘要 分散式拒絕服務(DDoS)是當今組織網路基礎架構遇到的最普遍的攻擊之一。 本文在軟體定義網路(SDN)環境中提出了基於深度學習的多向量DDoS檢測系統。 SDN提供了針對

pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path

目錄 BUG: 原因: 下載: 完美解決 BUG:  File "D:\python\lib\site-packages\pytesseract\pytesseract.py", line 172, in run_tesseract   &n

EEE101作業代做、Software Engineering作業代寫、代做C/C++編程作業、

oss uri saving sed ons war require clear cti EEE101作業代做、Software Engineering作業代寫、代做C/C++編程作業、代寫C/C++語言作業EEE101 C Programming and Software

EEE101作業代做、Software Engineering作業代寫、代做C/C++程式設計作業、

EEE101作業代做、Software Engineering作業代寫、代做C/C++程式設計作業、代寫C/C++語言作業EEE101 C Programming and Software Engineering 1 – ASSESSMENT 3Assessment Number 3Contribution