模块化工程杂感

Photo by Michael Scherback on Unsplash

为了更好的分解大规模的代码,包(package)的概念就产生了。包可以隔离命名空间,消除函数变量的命名冲突。一般的做法是,相同包下的文件都会放在在一个文件夹下。针对这个习惯,Python 在文件夹下定义__init__的方法来组织下面的小文件,JavaScript 的模块系统基本也是这个思路。

和这两者不同, Golang 不在单独在文件夹下指定一个导出文件,而是直接使用关键字 package 来指定,同时摒弃了文件导入这个概念,包为导入的最小单位。这样一来,同一个包内的各个文件可以直接使用而无需再次引入。而包外部的代码想要使用包内代码必须是显示的调用。这和它们家 Angular 的模块是一个思路。而导出文件的作用被大小写导出的内容所取代。

独立开发之路

Photo by Octavian Dan on Unsplash

2016年6月计算机硕士毕业之后进入移动地级市公司工作。原本以为国企铁饭碗很香,也没想到那么快会对这份工作失去兴趣。每日的工作主要是取数和资产管理类工作,中间穿插大大小小的培训,我觉得这样的生活不是我想要的,于是想到了跳槽。

17年5月离职去了另一家相对轻松的国企做数据库管理工作。和上一份工作相比,这份工作显然轻松了很多,每天基本就是看数据库相关的技术书籍,这个阶段学到了很多东西,比如基础的 Linux 运维、自动化的一些工具、系统学习了 Python 和 Shell 脚本。

18年8月上岸现在的单位,接触全栈开发相关内容至今。经过不断的折腾,用 Python、Nodejs、Go、C# 都做过工程,目前熟悉的技术栈是 React + Gin。

2021年5月开始构思自己的产品。在小城市,体制内的工作还是最香的。但是招聘信息碎片化,不够系统,不利于研究分析。为此正在做一个职考类相关 App。采用微信服务号+H5的形式完成最小化可行产品(Minimum Viable Product, MVP)验证,后续看发展可能采用 Flutter 做双端。

产品护城河杂感

Photo by Zane Persaud on Unsplash

一个产品必定有其竞品,而一个优秀的产品则有他特有的被市场认可的模式(这个模式可以是用户体验也可以是生态),以至于其他参与者无法轻易获取这部分市场。比如微信,他的护城河是他的产品体验以及庞大的社交基础,后来者很难轻易的再造一个微信从他这里夺走用户。而这个能力就是所谓的护城河。

在打造一个产品的时候,很多时间也需要考虑护城河的问题。因为 UI 界面,交互这些都是可以被轻易复制的东西,而打造模式才是将竞争对手甩在身后的有利武器。我也做过没有护城河的产品,因此深深知道,类似的产品一旦被人模仿,利润就会被打得很薄,而不能额外获取更多的利润。

我在 W2SOLO 上也看到过某开发者投诉被碰瓷的事情(像素级抄袭),虽然很同情他,但这是一般工具类产品都会遇到的问题。一般工具类产品都是为了解决某个特定的小问题,非衣食住行等消费类每天都会接触,一般比较低频,这也导致了品牌建立困难,用户留存度低,从赛道来讲是先天不足,第二、工具类产品技术壁垒也很低,一般由个人开发者开发维护,项目逻辑复杂度低,技术难度小,容易复制。

继续阅读产品护城河杂感

独立开发者宣言

宣言两字用的比较大,但是很符合独立开发者渺小又要发声的定位。本文节选自 W2SOLO chicken(肯德鸡)自我介绍

全职开发者和独立开发者工作性质不同。全职 APP 开发者处理的是公司的业务中的一部分,面对的是产品经理、测试人员、美工设计、后端工程师等。按组织的项目计划和要求尽好自己的职责完成工作,月底(到)公司收工资。

(而)独立开发者的工作更像一种创业活动,为了容易接触广大消费者和其他平台公司合作,需要注册公司,商标注册,亲自了解市场客户需求,产品设计、产品开发测试迭代、产品推广运营等工作,和创业一样需要承担经营风险,(以防)竞争对手模仿,自负盈亏(等)。 独立开发者工作是一个成长过程也是一种对自己的投资。

我觉得每个 APP 的核心价值和用户群体需要沉淀,也不是每个开发者运气那么好都像买股票一样能追上风口,但怀着帮助人们更好地生活,解决问题烦恼的心,加深对用户的沟通了解,一定会找到自己的客户贡献。

微信小程序 Canvas 滑动抖动解决流程

Photo by raphaelle on Unsplash

为了完成产品中的环形进度条的动画,尝试了搜索引擎中能提供的所有方法,包括 Canvas 绘图,CSS 遮罩旋转,最后只有 Canvas 2D 能够完美实现动画效果。现把所有坑和能够实现的方法提供在此留给大家做参考。

继续阅读微信小程序 Canvas 滑动抖动解决流程