開源日報 每天推薦一個 GitHub 優質開源項目和一篇精選英文科技或編程文章原文,堅持閱讀《開源日報》,保持每日學習的好習慣。
今日推薦開源項目:《學習英語 An-English-Guide-for-Programmers》
今日推薦英文原文:《5 Reasons Software Engineers are Artists》

今日推薦開源項目:《學習英語 An-English-Guide-for-Programmers》傳送門:GitHub鏈接
推薦理由:作者在辛苦備考雅思的過程中總結的學習英語的經驗談,主要是講了自己的訓練方法和自己用到的一些資源。不過這個項目最重要的就是從作者的經驗中發現的一個簡單道理:學習語言是沒有近路彎路可以走的。只有去花費大量的時間才能夠學好學熟,聽說讀寫這四樣都是需要花費相當的精力的,如果想要下決心學好英語的話最好做好覺悟。
今日推薦英文原文:《5 Reasons Software Engineers are Artists》作者:Ken Kao
原文鏈接:https://medium.com/@kenk616/5-reasons-software-engineers-are-artists-b14b0dd8d8eb
推薦理由:看起來軟體工程師和藝術家有一些相近的地方——有些軟體本身就像是一件藝術品

5 Reasons Software Engineers are Artists

Build software like Gaudí built the Sagrada Família

The Sagrada Família, still under construction. By Free Photos on Canva

Since I moved to New York from the Bay Area three years ago, I』ve been thinking about how great software engineers produce great work. Can the Silicon Valley mindset and approach be replicated elsewhere? This has led me to study some of the high-quality software engineering projects, such as Apache Spark, Tensorflow, and Ethereum. But as I was traveling in Barcelona last year, it struck me that the Sagrada Família may well be one of the best examples to learn from.

Here are five similarities I observed.

1. Give the artist creative space

If you want to build a ship, don』t drum up people to collect wood and don』t assign them tasks and work, but rather teach them to long for the endless immensity of the sea. — Antoine de Saint-Exupéry, French poet
Basilica della Santa Casa in Loreto, Italy. By Massimo Roselli on Wikimedia
The Sagrada Família was originally conceived of by Josep Maria Bocabella, who, inspired by the Basilica della Santa Casa in Italy, wanted to build a cathedral in Spain. Gaudí was then given full autonomy over this project. He was not a task-taker, but an architect; an artist. Can you imagine if Bocabella were to dictate which type of wood, cut of stone, and shards of glass to use? Under such circumstances, Gaudí likely would have turned down the job, and we would have lost a world heritage site.

Software engineers are also not task-takers — we are problem solvers. We specialize in finding the best solution for a given problem. This is why tech companies like Google and Facebook don』t care about which programming languages you know: they look for problem-solving ability. They trust that their engineers will pick the right tools to solve the problem at hand, just as Gaudí was given full liberty to pursue his vision of the basilica.

On the contrary, I have often seen companies where sales or marketing largely decide on both what and how to build software. This operating model impedes those companies from realizing their full innovative potential because they are not tapping into the strengths of their builders. As Bill Campbell, former executive and coach at Apple, once said, 「Empowered engineers are the single most important thing that you can have in a [tech] company.」

2. There is no single right way of doing art; it is an expression of the artist

There are no rules to creativity. — Laura Jaworski, American author & artist
When Gaudí took over as the lead architect of the Sagrada Família, he made many changes to the original Gothic design by incorporating natural shapes, oriental arts, and equilibrated systems. Some hints of the original Gothic style remain, but it is a far cry from other buildings built in that era.

Likewise, there isn』t a single right way to build software, just different trade-offs. Facebook is famous for having a single monolithic code repository. This ensures all projects and dependencies are compatible with each other. On the other hand, Amazon has a separate repository for each service, allowing faster iteration cycles because each service is run independently from each other.

Software also reflects its authors. Tensorflow, a machine learning framework open sourced by Google, captured hundreds of thousands of developers because of its usability, speed, code quality, and comprehensive documentation. These attributes directly tie back to Google』s core philosophies of focusing on users, emphasizing speed, and striving beyond greatness.

3. Inspiration comes from persistent routines

Talent is long patience, and originality an effort of will and of intense observation. — Gustav Flaubert, French novelist
One of Gaudí』s 3-D models used to evaluate the structural integrity of his designs.
People』s image of artists is often of lives of relaxing creativity. The reality is they develop a routine and consistently follow through. Pulitzer Prize winner, Maya Angelou, would get up at 5:30 a.m. every day and start writing at 7 a.m. for five or more hours. As Michelangelo once said, 「If people knew how hard I worked to get my mastery, it wouldn』t seem so wonderful at all.」

Gaudí was no different. He originated the concept of the equilibrated system — buildings that could stand on their own without internal or external support. Because this new architectural style hadn』t been built before, no one knew if his designs would withstand the laws of physics. His solution was to build 3-D models and try hundreds of configurations. Many of his final designs were inspired by his experiments.

Likewise, in software engineering, you go to work every day and ̶w̶r̶i̶t̶e̶ ̶c̶o̶d̶e̶ ̶f̶o̶r̶ ̶a̶s̶s̶i̶g̶n̶e̶d̶ ̶t̶a̶s̶k̶s̶ design solutions to problems. With consistency, every so often you will have a stroke of inspiration that leads to outsized impact. For example, a group of engineers hacked at anti-fraud software for Paypal. This led Peter Thiel to realize that it could be applied to an issue he has long thought about: national security. From that realization, he co-founded Palantir, which has since grown into a 20-billion-dollar company.

4. Iterate with light-weight mechanisms before final implementation

Creativity requires cycling lots of ideas. The more you invest in your prototype and the closer to 「final」 it is, the harder it is to let go of a concept that』s not working. — David Kelley, founder of IDEO and Stanford University d.school
While persistence is necessary, one also has to be strategic. Gaudí chose to repeat his experiments on his 3-D model because it had a short iteration cycle. After deciding on a particular configuration, he would draw out the final specifications for people to build the physical architecture as he methodically moved on to the next part of the project.

Software engineering is no different. We start with an initial design. Then we build a prototype and iterate on it. After we settle on a solution, we finalize our code for release and move on to the next set of features.

I once had a project manager who insisted that we 「get some code out」 for the next phase of a project before requirements were gathered. His reason, besides to show progress, was that we 「[were] going to have to refactor code anyway, so [we] might as well start writing code now.」 I suggested that we hadn』t fully scoped out the next phase yet, so perhaps we should iterate on design while finalizing functional requirements. After some back-and-forth, we eventually agreed to start with design.

Imagine if one of Gaudí』s sponsors had said, 「let』s start cutting stones and pile them up so we can show progress,」 with no consideration of the basilica』s structural integrity. If any of the pieces were placed incorrectly — which likely would』ve happened without his models and experiments — it would have cost a lot more effort to revert those placements. Gaudí wisely chose to iterate with something easily modifiable — his 3-D models — before moving to physical construction, just as we do for building software.

5. Art is never finished

You can』t put a time limit on creativity. — Dr. Dre, American rapper & record producer
The yellow parts of the model reflect what has yet to be built. In 2015, it was estimated that 70% of the basilica was complete.
Leonardo Da Vinci once said, 「Art is never finished, only abandoned.」 When asked about the slow progress of the construction, Gaudí, a devout Catholic, responded, 「My Client is not in a hurry.」 When he passed away in 1926, less than 25% of the basilica was complete.

Although he was a perfectionist, he also knew when something was ready for general use. For example, when the elevation and altar sections of the Chapel of St. Joseph were completed in 1885, he opened it up for mass the next day. Since then, hundreds of millions have visited the basilica throughout its various construction stages.

Similarly, software is never truly complete. There are always more features to be built and more ways to serve users. It is critical to identify when something is ready to be released yet recognize that nothing is ever fully perfected. Case in point: even after Amazon took over online book sales, it continued to expand its offerings to improve user experience and is now the largest online retail company in the world.

Engineering and the arts are often seen as at opposite ends of the career spectrum. However, similarities may be more common than you think. If you find yourself slogging away at menial coding tasks every day, ask yourself: 「Can I approach my tasks more holistically? Does my workplace provide an environment that has sufficient white space for me to color with my creativity?」 If the answer is no, I leave you with a quote from Smallville: 「You were meant for much more important things.」

下載開源日報APP:https://openingsource.org/2579/
加入我們:https://openingsource.org/about/join/
關注我們:https://openingsource.org/about/love/