程序员造轮子的正确姿势

程序员造轮子的正确姿势

[好文分享:www.11jj.com]

程序员造轮子的正确姿势 [原创文章:www.11jj.com]

作者 | 黄峰达,CSDN 博客专家 Phodal
责编 | 唐短序
图 | 作者绘制并授权 CSDN 使用
出品 | CSDN(ID:CSDNnews)

以前的几年里,我一贯在打造各种各样的编程相关的对象。这些对象有的是用于指导软件斥地工作,有的是用来进行编程进修,还有的纯粹是为了提升手艺而写的。在我写了越来越多的对象,接触了越来越多的对象思路之后。我便想写一篇文章,用于记录一下过程中发生的一些改变。


一、若何打造对象?


若是你拥有遍及的手艺栈常识,还有相对充实的时间,那么加上一些热忱,你就能写出一个不是那么差的对象。

对象的手艺栈

在我短短十几年的编程生涯中,我考试了不合的层级手艺栈,粗略也是熟悉怎么从底层到顶层做各类对象。连结物理世界的对象:

  • 纯嵌入式系统编程。

只需要一个 Arduino IDE + 一个 Arduino 斥地板,合营各种各样的输入设备(如传感器),合营一些输出,这就是一个简练的角力机原型。

  • 嵌入式把握系统编程。

对于复杂的场景来说,你还需要一个简练的把握系统,以匡助你进行义务调剂。你可以简练的写一个义务调剂,又或许是凭证你的能力基于 uCOS、FreeRTOS、Contiki、Zephyr 等系统斥地应用。

  • 基于 GNU/Linux 的嵌入式系统编程。

对于大部门人来说,只需要一个 Raspberry Pi + Python 就可以编写一个高性价比的机械进修相关的应用;又或许是在路由器上运行 OpenWRT 这样的把握系统,这种性价比更更高的方案。

  • 编译 GNU/Linux 把握系统。

若是时间充实,可以用诸如于 Linux From Scratch 这样的对象,自己编译一个自用的把握系统。

  • 物联网时代的嵌入式编程。

我喜欢使用 ESP32 (ESP8266 的继任者)来搞搞智能家居,它们自带 Wi-Fi 和蓝牙,有各类模拟现有设备的方案,设置上 HomeKit。考虑到成起原因,对于没有硬件底细的斥地者来说,采用 Android Things 又或许是 Windows IoT 是一个更简练的选择。我没有玩过 Fuchsia,它或许也是不错的,哈哈。

对于大部门斥地者来说,连结物理世界是一项昂贵的事,事实硬件太贵了(考虑一下 Raspberry Pi,它也相当的不错)。于是乎,我们所能做的就是在把握系统之后,斥地一些对象。

  • 桌面应用。

以前我考试使用 QT 来斥地一些桌面应用,后来我改为了 PyQT / PyGtk + Python,而现在我都转向了 Electron,用 Web 手艺来斥地桌面应用就是这么简练。

  • 移动应用。

尽管 React Native、Flutter 是一个非常不错的移动应用框架,我也用它们斥地了一系列的应用。然则,从架构上来说,我倾向于使用同化式架构的应用,Flutter + Ionic / Angular,或许是 RN + Ionic / Angular。

  • 小轨范。

我讨论小轨范,它们都有各类审查。

  • 呼吁行界面应用(CLI)。

对于平时工作来说,我们只需要一个简练的呼吁行,对于前端来说,或许 Node.js 就够了,对于后端来说,或许 Python 就够用了;不过,现在我更喜欢用 Go 来斥地 CLI 应用。

  • Web 应用。

对于我们而言,考虑到跨..特征,我往往使用后端 Serverless + 前端 Angular + 微前端架构来斥地 Web 应用的对象。

  • 浏览器插件。

偶然我也会斥地一些浏览器插件,然则当我切换到 Firefox 浏览器之后,我正在考虑怎么迁徙旧的 Chrome 插件。

甘心这些花式的介绍能给你的新对象带来一些设法。然后你就可以把这些常识串起来,斥地一些有意思的应用:

  • 基于 Arduino + Raspberry Pi 的持续集成告警灯。

  • 经由 ESP8266 模拟各类硬件,安置个处事器,来实现远程。

  • ……

现在,我们已经离题很远很远了,回到正题上。

找一个设法

合营上上述的手艺栈,你就可以轻松地斥地一个对象。

完了?

还没有

还有一半的内容


二、对象的斥地模式


对于斥地对象来说,存在一些稀奇固定的斥地模式。我或许也经验了三个阶段,它们或许是三种不合的模式:

  • 『随心所欲』造轮子模式。即,我爱怎么做,我就怎么做,我缺什么,我就加什么。

  • 『转化原则与模式』的模式。我从某些处所,寻找一些原则与模式,并将它们沉淀到对象里。

  • 『标准化特定流程』模式。我将过程、流程改变为对象,以弱化人在过程中的浸染。

『随心所欲』造轮子

没啥可说的,我爱怎么做就这么做。然则,它有这么一些点,你可以去玩:

  • 储蓄手艺和素材。要随心所欲地造轮子并不是一件随意的事情,你要有强大的进修能力,以实现自由安闲的目的,上要会焊电阻,下要会拿锤子。

  • 寻找现成、进修现有的对象。你可以在它们身长进修到一些优点。

  • 构建、并持续完美常用的对象。经由持续的使用,你就可以完美这个对象,直到它顺手。倏忽间,我有了一个设法,自己写一个浏览器(基于 Electron),笑~。若是提升手艺对于你来说很首要,那么这是一个非常不错的提升点。

然后, 你就可以和我一样,开愉快心地天天看着自己的 bug 在自己的电脑上复现,然后感受在此外电脑上应该是好的。等我有空的时候,我再来修这个 bug 吧。

转化原则与模式

这个粗略是去年在造对象的一大收获。当时和公司的同事一路讨论造对象的时候,讨论出了沉淀出原则与模式,然后将使用对象来承载它们。

原则与模式这种器材,本身就是我们对于平时工作的一些沉淀。所以,它们稀奇随意被转换到对象上。我们也可以写一个对象,它用于介绍各类原则与模式,狗头。

转化原则与模式的此外一大意义是,敷陈你:你可以经由进修别人,来打造出自己的对象。就这么来说,去年我在写 Coca 的时候,我做了这么一件事:

  • 寻找各类 paper。

  • 下载各类 paper。

  • 阅读各类 paper。

然后,我就把各类 paper 转换到我的对象中了。虽然,大部门的 paper 都写得稀奇水(我感受读完 100 篇之后,写出一个对象之后,我能写出一篇比 99% 的都强),然则我们就轻松地 copy 了别人几个月的研究经验。

从书中读也是一个不错的主意,然则大部门手艺书倾向于实践为主,对照难转换。

标准化特定流程

若是说,前两者是造轮子的话,那么标准化流程做的是..。我比来在研究各类成熟度模型,它们有五个阶段。我更喜欢 GitHub 官方写的一个开源成熟度模型的定义:

  • 临时(Ad-hoc) —— 新的或未记录的过程是不受把握、回响性的和弗成瞻望的,常日是由个人驱动而没有协调或沟通。成功取决于个人英雄主义。

  • 治理(Managed)—— 流程已部门记录在案,有或许导致一致的事实。成功取决于纪律。

  • 已定义(Defined)—— 记录,标准化流程并将其集成到其他流程中。成功取决于自动化。

  • 度量(Measured)—— 对过程进行定量治理。成功取决于凭证生意方针衡量指标。

  • 已优化(Optimized)—— 经由增量和立异更改,该过程正在持续靠得住地获得改善。成功取决于削减变革的风险。

抽象完这段话,我们就可以提到这样的过程:

个人的实践 -> 团队的实践流程 -> 标准化流程为对象 -> 集成到此外流程,作为..的一部门 -> 持续完美..

再一次抽象就是:

实践 -> 模式 -> 对象 -> 流程 -> ..

对,就是这么简练。所以斥地这一种模式的对象,只需要寻找现有的成熟度模式,然后就成..了。


三、结论


没有轮子,哪来的 KPI?

没有手艺,哪来的轮子?

没有情趣,哪来的手艺?

最后,我又造了一个新轮子,一个『DevOps + 研发效能』常识..,迎接人人 Star:https://github.com/phodal/ledge/ 。

作者简介:黄峰达(Phodal),ThoughtWorks Senior Consultant,CSDN 博客专家。耐久活跃于 GitHub、CSDN,专注于物联网和前端领域。出版著作《自己着手设计物联网》,以及《Growth:全栈增进工程师指南》等六本电子书,并译有《物联网实战指南》。

【END】

作为“百万人学AI”的首要组成部门,2020 AIProCon 斥地者万人大会将于6月26日经由线上直播形式,闪斥地者们一站式进修熟悉当下 AI 的前沿手艺研究、核心手艺与应用以及企业案例的实践经验,同时还可以在线加入超卓多样的斥地者沙龙与编程项目。介入前瞻系列活动、在线直播互动,不单可以与上万名斥地者们一路交流,还有机会赢取直播专属好礼,与手艺大咖连麦。

谈论区留言入选,可获得价钱299元的「2020 AI斥地者万人大会」在线直播门票一张。  快来动着手指,写下你想说的话吧!

程序员造轮子的正确姿势

介绍阅读 
微软为一人收购一公司?破解索尼轨范、写黑客小说,看他彪悍的轨范人生!
☞中国无人机“老炮儿”回忆录
4 年 46 个版本,一文读懂 Spring Cloud 成长历史
☞京东商城背后的AI手艺能力揭秘 - 基于关键词自动生成摘要

☞互联网之父确诊新冠,一代传奇:任谷歌副总裁、NASA 接见科学家

从未如斯简练:10分钟带你逆袭Kafka!

无代码时代光降,轨范员若何保住饭碗?

自媒体 微信号:11jj 扫描二维码关注公众号
爱八卦,爱爆料。

小编推荐

  1. 1

    文明养犬,“宠”我做起

    为进一步规范市民养犬行为,提高市民依法养犬、文明养犬意识,起劲实现“钱塘门户·星城客堂”美妙愿景,近期,钱塘区综合行政法律局下沙中队

  2. 2

    湖蓝色(湖蓝色代表什么象征意义)

    大家好,小娟今天来为大家解答湖蓝色以下问题,湖蓝色代表什么象征意义很多人还不知道,现在让我们一起来看看吧!1、湖蓝色是类似于蓝宝石一

  3. 3

    秦时明月月神(秦时明月月神被星魂杀了吗)

    大家好,小乐今天来为大家解答秦时明月月神以下问题,秦时明月月神被星魂杀了吗很多人还不知道,现在让我们一起来看看吧!1、月儿已经被抓了

  4. 4

    美孚速霸2000怎么样(美孚速霸5w40多少钱)

    大家好,小伟今天来为大家解答美孚速霸2000怎么样以下问题,美孚速霸5w40多少钱很多人还不知道,现在让我们一起来看看吧!1、美孚速霸2000全合成

  5. 5

    冀屯镇开展“共读半小时”全民阅读活动

    春日念书合法时“胸藏文墨怀若谷,腹有诗书气自华。”为深入进修贯彻习近平文化思惟,充裕施展现代民众文化办事系统,雄厚人民群众精神文化

  6. 6

    黑泽尔 琳马瑞娜 乔娜波顿三人共舞狐步,太惊艳了

    黑泽尔 琳马瑞娜 乔娜波顿国标舞是力与美的连系,它或优雅,或华贵,或活跃,或热情,带给人们无限的美的感悟与联想!国标舞是非常美丽尊贵的

  7. 7

    圣安地列斯中文版(圣安地列斯中文版免费下载)

    大家好,小娟今天来为大家解答圣安地列斯中文版以下问题,圣安地列斯中文版免费下载很多人还不知道,现在让我们一起来看看吧!1、GTASA是没有

  8. 8

    请问成都市教育局的电话是(成都市教育局客服电话)

    大家好,小伟今天来为大家解答请问成都市教育局的电话是以下问题,成都市教育局客服电话很多人还不知道,现在让我们一起来看看吧!1、- 成都

Copyright 2024.依依自媒体,让大家了解更多图文资讯!