开源日报 每天推荐一个 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/