Complexity Has to Live Somewhere
Fighting complexity is a recurring theme of software development I've seen repeat itself over and over again. It's something I keep seeing debated at all levels: just how much commenting should go on in functions and methods? What's the ideal amount of abstraction? When does a framework start having "too much magic"? When are there too many languages in an organisation? We try to get rid of the complexity, control it, and seek simplicity. I think framing things that way is misguided. Complexity has to live somewhere.
A Visual Guide To React Mental Models
I’ve learned that the biggest difference between someone that has mastered a language, framework or tool and someone who hasn’t lies in the mental models they use. One person will have a clear and advanced one and the other will not. By having a good mental model you can intuitively understand complex problems and device solutions much faster than if you had to find a solution with a step-by-step process.
Comparing Ember Octane and React
In this post, I'm going to directly compare Ember and React, using the latest idioms and best practices from both frameworks. That means I'll be using Ember Octane, the latest Edition of Ember, and React's new hooks API. A lot has changed in both frameworks in the last couple years, so I think that its definitely a good time to take stock and see how they measure up! This comparison will focus on the programming models and developer experience of working in either framework. It will not focus on performance metrics, except in cases where developers must do additional work in order to write performant code. I'm also going to assume the reader has basic knowledge of both frameworks and their latest APIs. If you don't, you can check out the latest Ember.js documentation, and the official React hooks documentation for reference.
Patterns for Managing Source Code Branches
This division of development into lines of work that split and merge is central to the workflow of software development teams, and several patterns have evolved to help us keep a handle on all this activity. Like most software patterns, few of them are gold standards that all teams should follow. Software development workflow is very dependent on context, in particular the social structure of the team and the other practices that the team follows. My task in this article is to discuss these patterns, and I'm doing so in the context of a single article where I describe the patterns but intersperse the pattern explanations with narrative sections that better explain context and the interrelationships between them.
The Cost of Javascript Frameworks
In an ideal world, I believe a framework should go beyond developer experience value and provide concrete value for the people using our sites. Performance is just one part of that—accessibility and security both come to mind as well—but it’s an essential part. So in an ideal world, a framework makes it easier to perform well by either providing a better starting point or providing constraints and characteristics that make it hard to build something that doesn’t perform well. The best of frameworks would do both: provide a better starting point and help to restrict how out of hands things can get.
A Static Future
As static sites enjoy an incredible resurgence in popularity, I've seen a lot of misconceptions around exactly what tools like Gatsby are capable of. Specifically, I've heard from some friends that liked the idea of using Gatsby, but worried that their project was "too dynamic". Sometimes this meant that they expected to need a database, and other times they were concerned that their site was too interactive. After building a handful of Gatsby projects, I feel more convinced than ever that Gatsby can do just about anything. And even more than that, I think static-driven approaches are the future for dynamic, interactive, data-driven websites and web applications. Today I'd like to talk about it.
The future of design systems
At Airbnb, we’ve been pondering how we might push our design system in new directions, and we’re inspired by design-forward companies that share our desire to craft the future of design systems. In this chapter, I want to introduce you to a new way of thinking about design systems. Design systems can transcend the walls of a single company to exist as shared standards and customizable tooling with help from the open source community, which can accelerate development and eliminate the need to start systems from scratch. If we’re really bold, we could be creating adaptive, intelligent systems that are context-aware and compose themselves—reducing our workload and ultimately unlocking AI-powered design.
www.designbetter.co/design-syst…
有赞美业接入智能 POS 的架构演进之路
为了满足商家日益丰富的支付渠道,尤其对于刷卡能力的需求,有赞的多个 App 均对接了智能 POS 机这一硬件。随着业务的快速发展,笔者所在的有赞美业共陆续对接了多个厂家的不同类型的智能 POS 机硬件。如何更好地接入各式各样的 POS SDK 成为一个摆在我们面前的问题。本文将按照时间线的顺序,结合在对接过程中的思考与总结,回顾我们 POS SDK 对接方案的演进过程,希望能够带给大家一定的启发。
Development Environments at Slack
Dev environments have always been a mystery to me. Despite learning about them on my first day at Slack, and using them almost every day for the last three years, I have never understood how they truly worked. Half a year ago, I set a goal to understand dev environments inside and out. I interviewed some of the most senior engineers at Slack, studied countless pages of documentation, and sifted through years of Slack conversations. What I discovered was a fascinating journey of how our dev environments evolved over time.
slack.engineering/development…
跑在浏览器上的小程序 IDE
在小程序开发者工具中我们支持了非常丰富且复杂的小程序研发能力,在把它们搬上浏览器之前,我们首先对 WebIDE 的方向做了些思考:
- 希望开发者能够在 WebIDE 中完成「研发并上线一个小程序」的全部流程,但不希望 WebIDE 变得和客户端一样庞大
- 希望 WebIDE 能够和客户端形成能力互补,完成一些客户端难以完成的场景(比如分享与传播)
- 希望 WebIDE 和客户端在底层技术上是互通的,不要产生技术上的分化
基于这些思考,我们从小程序开发者工具中抽取出了一条主要的研发链路,在 WebIDE 中实现:创建/管理项目 -> 编辑代码 -> 模拟器预览与调试 -> 真机调试 -> 真机预览 -> 上传提审。
node_modules 困境
Ryan 对于 node.js 的十大遗憾之一就是支持了 node_modules,node_modules 的设计虽然能满足大部分的场景,但是其仍然存在着种种缺陷,尤其在前端工程化领域,造成了不少的问题,本文总结下其存在的一些问题,和可能的改进方式。
zhuanlan.zhihu.com/p/137535779
Application Performance Management in 2020: in-Depth guide
Businesses need to monitor their system performance and resolve technical issues rapidly. For example, slowdowns or errors within the ERP system can stop the whole company from functioning: orders can not be served, suppliers can not be paid etc. Companies can use APM tools to prevent these issues. APM refers to application performance management or application performance monitoring. Since APM tools facilitate monitoring the availability and performance of systems, they can help detect problems and run root-cause analysis to enable quick resolution of these problems.
前端越管越宽,腾讯 Now 直播如何把监控体系做到极致?
NOW 直播成立三年以来,前端团队涵盖的业务范围越来越广阔。从最初的 Hybrid App,到 React Native 再到如今的小程序,单维度的监控手段已经不足以帮助开发人员及时发现与定位问题。IVWEB 团队在不断的业务实践中,沉淀出了一套比较完善的监控方案。
Web Vitals
Optimizing for quality of user experience is key to the long-term success of any site on the web. Whether you're a business owner, marketer, or developer, Web Vitals can help you quantify the experience of your site and identify opportunities to improve. Web Vitals is an initiative by Google to provide unified guidance for quality signals that are essential to delivering a great user experience on the web.
Web Performance Recipes With Puppeteer
Puppeteer is a Node library which provides a high-level API to control headless Chrome or Chromium over the DevTools Protocol. This guide has recipes for automating Web Performance measurement with Puppeteer. An accompanying GitHub repository for this write-up is also available.
What are data insights?
Data insights are knowledge that a company gains from analyzing sets of information pertaining to a given topic or situation. Analysis of this information provides insights that help businesses make informed decisions and reduces the risk that comes with trial-and-error testing methods. In the digital world we live in, there are copious amounts of data at our fingertips. But though anyone can access raw data, the ability to extract valuable and actionable information from the numbers is what will determine whether you can generate a competitive advantage for your business.
Pricing Your Product
A lot of startups treat pricing as a math problem or, worse, an afterthought. Pricing is as much an art as it is a science, one that relies as much on marketing and psychology as it does on classical economics. This Sequoia Guide covers strategies that can help you figure out the right price for your product—and end up with happier customers and more profit in the process.
www.sequoiacap.com/article/pri…
How to sell a B2B product
I’ve worked way more on the product and tech side. Until recently, I’d never had a strong framework for understanding how sales actually works. That changed after I recently attended a two-day sales training. Our CRO hired a consulting firm called Force Management (I know, I know, it sounds like soul-crushing corporate training, but bear with me) to teach all of our GTM teams about sales. I was fortunate enough to sit in. Candidly, I was impressed by everything the instructors taught us. They were handing me the exact answers to the questions these founders were asking me for. My goal in this post is to relay all of those learnings as concrete advice for early stage founders. By reading it, you should be armed with the framework you need to sell a SaaS product to other businesses (and have a view into the enterprise).