開源日報 每天推薦一個 GitHub 優質開源項目和一篇精選英文科技或編程文章原文,堅持閱讀《開源日報》,保持每日學習的好習慣。
今日推薦開源項目:《巡遊time awesome-japan-otaku》
今日推薦英文原文:《You Only Need 20 Percent to Become an Effective Developer》

今日推薦開源項目:《巡遊time awesome-japan-otaku》傳送門:GitHub鏈接
推薦理由:在日本值得去看看的宅文化地點和活動列表。除了人盡皆知的聖地秋葉原和有斯巴達戰爭之稱的 CM 之外,實際上日本還有不少值得一看的地方和活動,在出發之前花心思去搜集情報也是旅行樂趣的一部分——畢竟這世界上的大部分東西隔著屏幕看,和在現實中親眼見到的感受還是有很大不同的。
今日推薦英文原文:《You Only Need 20 Percent to Become an Effective Developer》作者:Aphinya Dechalert
原文鏈接:https://medium.com/better-programming/you-only-need-20-percent-to-become-an-effective-developer-deb75a9f4915
推薦理由:二八定律與開發者

You Only Need 20 Percent to Become an Effective Developer

The hard part is figuring out the right 20 percent

Pareto's Law, also known as the 80/20 rule, has been circulating mainstream Internet for a while now, especially in productivity and motivational circles. The general gist goes, 80% of the output is often produced by 20% of the input.

The 80/20 rule is applied across multiple disciplines, including, but not limited to, distribution of income, economics, sales, management, athletics, and productivity, to name a few.

It is a rule that』s often cited and used in business and sports — but what about in programming?

Software engineering is a massive area that spans numerous physical and digital layers, services, devices, and languages. The novice is often under the impression that you just need to learn a few select things and you』re done.

Except when it comes to digital technologies, you』re never quite done.

10% Knowledge

There are a lot of things to learn when it comes to programming.

However, if we look at it, there are a lot of similarities across the different languages that are currently in popular usage. Overarching concepts and patterns sit on top and span over different linguistic differences.

Functional and object-oriented are often the most popular to target if you want to write effective code. Modular patterns and event-driven often come into conversations about how to increase efficiency and effectiveness as developers.

Then, there are patterns and actions in code that comes up over and over again, regardless of which language you』re dealing with — but you need to know the specifics and finer details of how to implement it for your chosen stack.

They are things like CRUD patterns, dealing with arrays, transforming data, and passing things between components and classes.

Sessions, open/close connections to databases, social login API consumptions, and payment gateway integrations are some common requirements for back ends. Routing and modular CSS are important ones for front ends.

5% Work Smarter Not Harder

Manual work is the biggest inefficient use of time when it comes to programming. Manual patterns in programming are even worse.

What exactly are manual patterns?

One of its official names is an imperative pattern — or a procedure where the program needs to take in that specific order to produce the correct output. In reality, things never appear in the order they need to be 100% of the time.

Flexible code is not about covering every possible scenario that comes up by coding for all the potential contingencies. It』s about writing your code in a way that only depends on the combination of factors and not the order in which they appear. By doing this, you eliminate a layer of complexity.

Coding smart is the process of reducing complexity and therefore potential points of failure. In addition to this, the number of lines you need to maintain will also be reduced as a side effect.

5% Creativity

Creative code is never recommended — unless you』re doing code poetry, which is something different.

Programming is not art. Programming is the process of translating business requirements into a digital format. However, the ability to creatively connect your knowledge points together is what makes or breaks your final output.

More often than not, writing code can be seen as mechanical and emotionless. In a way, it is. The idea of creativity is rooted in passion and imagination.

However, as Mark Twain once stated:

「There is no such thing as a new idea. It is impossible. We simply take a lot of old ideas and put them into a sort of mental kaleidoscope. We give them a turn and they make new and curious combinations.

We keep on turning and making new combinations indefinitely; but they are the same old pieces of colored glass that have been in use through all the ages.」

Being able to create creative solutions is the ability to connect knowledge points together to produce effective software in the given time.

80% Making Dots

「You can』t connect the dots looking forward; you can only connect them looking backwards. So, you have to trust that the dots will somehow connect in your future.」 — Steve Jobs,Stanford commencement speech
The most effective and efficient developers among us seem to be a never-ending pool of knowledge that spans across different domains. They seem to know about everything there is to know. You can talk to them about any topic.

From the common things we see on our social media feeds to random tidbits of knowledge, like the process of glassmaking.

They spend their time learning, reading, and consuming things beyond their current domain of knowledge. It』s not just limited to the tech stack they』re required to be experts in.

The impact of this is that they extend their creative boundaries by having more dots to connect when creative solutions are required.

Innovation is creating dots of knowledge to make something beyond the edge of knowledge. Image by Aphinya Dechalert.

Having different domains of knowledge also allows the best among us to create software solutions that are intuitive to the experiences and expectations of different stakeholders.

This is because the person behind the code is also an active consumer of the thing they』re creating. They are aware of the annoyances and broken bits. This gives a fresh perspective for when a solution is required.

It All Adds Up to 100%

20% of actual work determines the effectiveness of the output. However, how you spend the rest of the 80% also matters.

We don』t really get to see the 80% until it materializes in some form within the 20% equation. This is because every project requires a different cocktail of 20%.

There is no single combination that works every time — no magical solution to every problem. The mythical unicorn developer is just a developer that knows how to engage the right 20% consistently.

Knowledge is only the tip of everything. Yes, it does account for a great deal of how sturdy, modular, and flexible to growth your final delivery is.

The ability to recognize patterns and implement knowledge points are also major factors in being an effective and efficient developer.

To figure out what the right 20% is for your project, you need the range of knowledge points to pick from. That is why the 80% matters too — and why you should cultivate this as much as you can, in addition to spending your time learning patterns and methods of coding.

Thank you for reading. ❤

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