開源日報 每天推薦一個 GitHub 優質開源項目和一篇精選英文科技或編程文章原文,堅持閱讀《開源日報》,保持每日學習的好習慣。
今日推薦開源項目:《大地圖 Minecraft-Overviewer》
今日推薦英文原文:《Why Should I Even Bother With Full-Stack Development?》

今日推薦開源項目:《大地圖 Minecraft-Overviewer》傳送門:GitHub鏈接
推薦理由:相信玩了有些時日的 Minecraft 世界都已經在不少地方被玩家改造過了,而想要一口氣看清這些變化在遊戲內似乎並不是那麼容易。這個項目可以為你的世界生成一個美觀的可交互的 html 地圖,可以輕鬆的一覽地表全貌,看看自己已經完成的建築或者是大家瞎造的奇觀都很方便,雖然一個伺服器里的大家都有棄坑的時候,但是 MC 伺服器里的地圖就像現實世界裡的團隊合影一樣,是大家一起相聚過的證據。
今日推薦英文原文:《Why Should I Even Bother With Full-Stack Development?》作者:Frank Zickert
原文鏈接:https://codeburst.io/why-should-i-even-bother-with-full-stack-development-142b9c4c7c3f
推薦理由:同時掌握前後端的技能並非壞事,最起碼多一分能力就能多一分工資

Why Should I Even Bother With Full-Stack Development?

Writing code has long been the biggest challenge of software development. How do you combine if-then-else-structures with loops to solve a business problem?

The user interface design was done on the side. The developer was the decisive factor. What she was able to build was what the software looked like. Some developers had talent concerning user interfaces. Some did not.

This changed with the rise of the internet. Graphical user interfaces moved into focus. Even more importantly, those user interfaces did not need to be programmed. The Hypertext Markup Language (HTML) and Cascading Style Sheets (CSS) enabled designers to build websites. These designers were technically skilled. Of course. But they did not need to be programmers.

At the time, JavaScript was not mandatory. Not very long ago, the company I am working for distinguished 「front-end」 developers. In those who do the graphical design with HTML and CSS (only). And in those who are capable of working with JavaScript.

JavaScript development was a hacky concept. Front-end developers manipulated the Document Object Model (DOM). That is the page』s hierarchical structure of the HTML-elements. They added, removed, and changed the classes and the other attributes of an HTML-element. Seen from the eyes of a software engineer, this was all hacky! It did not have anything to do with the craft of software engineering.

Would you let a JavaScript developer implement business logic? Would you let her do something you consider critical for the success of your business?

For heaven』s sake, no!

Implementing business logic was left to the back-end developers. These developers took the styled HTML and inserted it into the business logic that they wrote. PHP became popular for making it quite easy to render HTML on the server-side.

But something happened!

Maybe caused by the introduction of HTML5 and 「Asynchronous JavaScript and XML」 (AJAX). Maybe caused by the advent of Ecma Script. Websites started to act and behave more like applications. An increasing proportion of the business logic was closely coupled to the user interface. With the greater responsibility, frameworks evolved in JavaScript. Front-end developers lost their hacky image and became software engineers, too.

Supposedly, front-end development became more of software engineering than back-end development is today! Back-end got reduced to work with databases, provide the data through APIs and take care of DevOps. They cope with all the things that require interconnectivity and integration. Working with different APIs sometimes is… hacky! They need to make sure that all the details work together. They implement specific code for a very specific API.

But moving business logic to the front-end did not free the capacities at the back-end. For plausibility, security, and integrity, all the logic still had to run at the server-side. Because the front-end could be edited by attackers. The code had to be duplicated!

Of course, writing code twice comes with problems. There is the avoidable effort of doing things twice. And there is the risk of inconsistencies between the logic at the front-end and the back-end side.

Full-stack development promises to avoid duplicate code and thus, prevent those inconsistencies.

There is a good chance that this promise will be kept.

JavaScript runs on any modern browser. With Node.js, it runs on the server, too.

React.js removed the boundaries between HTML and JavaScript. It uses the Javascript Syntax Extension (JSX) that complements basic Javascript source code with HTML.

Styled-Components added a convenient way of styling your React-components. There』s no need for global style sheets anymore.

With Infrastructure-Components, you can write REST-services, as well as database schemes and queries. You can even configure your serverless infrastructure.

The following picture depicts how the React.js-stack (including libraries) covers pretty much the full technology stack.

Full-Stack React

Now, you can use React from the very front-end of your application to the back-end and even DevOps. Within the same code. Without duplicates.

The technology stack has never been so homogenous. From that perspective, it has never been easier before to become a full-stack developer.

With the technology stack moving closer together, the demand for full-stack developers even rises. Consider isomorphic React apps. These are apps that use the same React-components to run on the server and the client-side. If you considered yourself as either a pure front-end or a back-end developer, you would not be up for that challenge.

This is less of a programming challenge. It is not about learning many different programming languages. This is rather a challenge to the skills and the mindset.

Creating intuitive user interfaces requires more than HTML, CSS, and JavaScript. You need to have the ability to craft compelling user experiences.

Writing business logic requires more than combining if-then-else-structures with loops. You need to understand the implications of the logic you implement.

Writing full-stack applications requires you to understand software architectures. You need to understand how to compose your software. The code of your front-end and back-end might be identical. But it matters whether the code runs on the front-end or the back-end. It matters for performance, security, and sometimes even meaning.

The demand for full-stack developers does no longer result from the businessmen』s urge to hire fewer developers who can do more. The demand for full-stack developers stems from the increasing power of the tools. React is no longer a front-end library. Today, you can use React to write back-end software and to configure your infrastructure.

Full-stack development does no longer require multiple programming languages. But it still requires versatile skills. It requires you to think and act like a full-stack developer.
下載開源日報APP:https://openingsource.org/2579/
加入我們:https://openingsource.org/about/join/
關注我們:https://openingsource.org/about/love/