開源日報 每天推薦一個 GitHub 優質開源項目和一篇精選英文科技或編程文章原文,堅持閱讀《開源日報》,保持每日學習的好習慣。
今日推薦開源項目:《讀條中 play》
今日推薦英文原文:《I Write Software. What am I?》

今日推薦開源項目:《讀條中 play》傳送門:GitHub鏈接
推薦理由:每次按下命令行就像是施放一個法術——因為有的時候你不得不在那等它完成。轉頭刷刷手機似乎太麻煩了(或者說你剛才才摸魚刷過一遍),切到別的窗口好像又有點時間太緊,這個時候就可以考慮這個項目了,它能在命令行界面執行任務的時候讓你可以玩一些小遊戲,雖然不少時候玩到一半就會被命令行任務的完成所打斷,但是最起碼你馬上可以接著你的下一步工作了。
今日推薦英文原文:《I Write Software. What am I?》作者:Nick Hodges
原文鏈接:https://medium.com/better-programming/i-write-software-what-am-i-bccb217c68e9
推薦理由:工匠似乎比工程師或者科學家更適合用來稱呼那些開發軟體的人

I Write Software. What am I?

Computer scientist or software engineer just don』t seem to fit

I write software, but I』m not sure what to call myself. It』s kind of weird. Am I a programmer? A developer? A coder? I guess I all three of those things — but as a group, we seem to reach for something more when labeling our profession.

Some say that I』m a computer scientist. To be a scientist, one has to follow the scientific method. To gain any credibility at all as a scientist, one usually needs to be associated with a scientific institution and publish scientific papers.

When I create a software program, I don』t do science. I don』t follow the scientific method. I don』t form a hypothesis and I don』t do research and collect data. I don』t conduct experiments and I don』t draw conclusions.

Therefore, I』m not a computer 「scientist.」

Some say that I』m a software engineer. But when I create a software program, I don』t 「design, build, or maintain engines, machines, or public works.」 (If you want to try to argue that I do those things, follow the links to all the definitions. You won』t find anything resembling software therein.) To be an engineer, one has to go to school and be officially licensed. One has to design tangible things.

So I』m not a software 「engineer.」

I don』t do any of those things. And frankly, I don』t like being pigeon-holed into those roles. I don』t want to claim to be an engineer when I』m not. I have too much respect for real engineers. And I don』t like being called a computer scientist because what I do daily is entirely different than science.

Some software developers do go to school to learn to code. Those programs are often called 「Computer Science」 or 「Software Engineering.」 I often wonder how those terms came to be. Perhaps it was done to lend a certain cachet to the profession, coming from some misguided belief that the profession needed more gravitas than it was thought to have.

And on top of all that, what they teach in 「computer science」 classes is a far cry from what I actually do. Computer science classes spend a lot of time teaching theory, algorithms and the like. They don』t teach how to write a good bug report, how to perform a decent code review, or how to follow proper branching techniques in source control. Much of what I do every day is not taught in computer science courses.

So what am I, then?

Well, let me tell you a story. When I was a young man, a group of folks from my church went to a run-down part of town to help a young pastor restore an old church. We weren』t skilled, but we could handle the basics. We put up new dry-wall and cleaned up the lovely hardwood floors and the beautiful but old pews. We painted the walls and finally, near the end, one of our group hung a new pair of front doors on the church.

He was one of the guys that we looked to for leadership throughout the day. He was a professional home builder and a skilled carpenter. As the rest of us wound down our work and he began to hang the front doors, it soon became apparent that while getting this right was quite tricky, he was up to the task. More than up to the task. He was hanging the doors with such skill and expertise that we all ended up stopping what we were doing and watching him work. It was a joy and a pleasure to observe such a master craftsman at work.

And it occurs to me that this is what I am — a craftsman.

『Craftsperson』 is defined as 「someone skilled in a particular craft.」 A 『craft』 is defined as 「an activity involving skill in making things by hand.」 Not to put too fine of a point on it, but I do make programs with my hands — I』m typing right now, for instance.

The term craftsperson also implies creating works of art. What is art? It』s 「the expression or application of human creative skill and imagination.」 The fourth definition also applies — 「a skill at doing a specified thing, typically one acquired through practice.」

So, craftsperson seems to be the closest word that defines what it is I do.

In addition, you can become a skilled and admired software craftsperson without having ever gone to college or even graduating high school for that matter. Many craftspeople do apprenticeships or attend a trade school, but there is no requirement to do so. Glassblowers don』t, as far as I know, require a license to create beautiful works of art.

Similarly, you don』t need anyone』s permission to write a world-renowned software project. Anders Hejlsberg wrote Turbo Pascal at age 19 without any official accreditation. He just did it. Anyone can.

There』s no shame in being a craftsman — quite the opposite. We all admire the capabilities of, say, a carpenter that uses their practiced skills to build beautiful furniture or cabinets. I certainly admired my friend who hung that church door with such mastery, creating great beauty with amazing expertise.

And isn』t that what we software craftspeople do?
下載開源日報APP:https://openingsource.org/2579/
加入我們:https://openingsource.org/about/join/
關注我們:https://openingsource.org/about/love/