Blog

Blog

PHODAL

我的成长四步曲

这次我决定不耍流氓的写一篇鸡汤,这篇是以过程到结果的文章——以前老是写结果,总感觉不好~~。

Blabla,群聊的时候,看到一个网站有一个Most active GitHub users的排名,发现我在里面的位置是20——在我前面还有一个台湾的同学。虽然我现在已经超过他了,但是这个榜单没有更新。😊😊😊

Most active GitHub users

而实际上成为最活跃的中国大陆用户,只是有意图的练习的结果。。。

在我找到大四找到工作后,默默制作了一个计划。这个计划大概分为三步,而每一步大概会花一年时间去实践:

  1. 用更好的方法来实现功能
  2. Better Code & Architecture
  3. 运营(Growth Hacker)

所以,其实这也算这篇文章的三个小节。在你跟着这篇文章走之前,你需要具备一个根本的能力:能做到你想做的

能做到你想做的: Tasking与学习能力

虽然这看上去是一件很难的事,但是也不是一件很难的事。这也不依赖于你是否对某一个技术栈的理解,这只实际上只是学习能力的一种体现。

todo-example.png

在扯这些废话之前,先让我们来看看我们是如何实现一个功能、应用的。这也是在Growth里提到的Tasking:

  1. 有一个明确的实现目标。
  2. 评估目标并将其拆解成任务(TODO)。
  3. 规划任务的步骤(TODO)
  4. 学习相关技能
  5. 执行Task,遇到难题就跳到第二步。

以本文的写作为例,细分上面的过程就是:

  1. 我有了一个中心思想——在某种意义上来说就是标题。
  2. 依据中心思考我将这篇文章分成了四小节。
  3. 然后我开始写四小节的内容。
  4. 直到完成。

而如果将其划分到一个编程任务,那么也是一样的:

  1. 我们想到做一个xxx的idea。
  2. 为了这个idea我们需要分成几步,或者几层设计。
  3. 对于每一步,我们应该做点什么
  4. 我们需要学习怎样的技能
  5. 集成每一步的代码,就有了我们的系统。

所以,实际上这并不是考验你技术能力的点,而是考验你如何划分任务和学习能力的点。在我不断地实现一个个系统的时候,最后我才意识到了这一点——学习能力和Tasking才是最重要的。换句话说,你现在学会什么并不重要,重要的是你以后有没有学习的能力。

有了一直想着过安逸的生活,所以就会安乐的死去。不过反正人生在世,自己开心就行,不要管别人怎么说。随后,我发现大部分我想到的都可以实现。

那么问题来了:

  1. 用铅笔写字也是写,用钢笔写字也是写,用电脑打字也是写——到底要用哪个工具来写。
  2. 用楷体来显示也是显示,用宋体显示也是显示——到底要怎样的实现。

这实际上就是:用更好的方法来实现功能。

用更好的方法来实现功能

对于这一步来说,有太多的东西值得去探索:

  1. 更好的架构
  2. 更好的工具
  3. 更好的语言
  4. 。。。

对于语言这一点上来说,Python和Ruby是两个不同的极端,不过看上Ruby是继承Perl的思想的基础上,就不多说了。Python,一个问题只有一个方法;Ruby,一个问题有几个方法。因而在这两个语言来,想要快感就用Ruby,还有近年来流行的Scala。想要便捷就是Python,不容易出现别的问题。

而这些只是我得到的结论,每个人都会得到不同听结论的。因而,探索是一件很有意思的事~~,如图:

civ5-worst.jpg

所以实际上,这一步是去探索一个更广阔的天空。我们需要知道不同的语言和技术栈的一些优势,了解并知道如何去应用即可。

如,以前我用的是Django的RESTful方案Tastypie管理来解决问题。后来,又发现了Django REST Framework,又用它实现了原来的逻辑。大四时,我发现PHP语言中的Laravel在RESTful这件事情上,似乎很有表现力,并且更容易“部署”——LNMP。接着实习时,发现Java在部署上更不错,它只需要一个Java包。而这个过程,只是出自于部署方面来考虑问题的。

即使现在我是一个使用Node.js的人,我还是觉得Java的打包就是优势。

在探索的过程中,我们就知道挖掘技术哪家强

Better Code & Architecture

在实际编程的过程中,我们就会遇到很多代码问题。在这时,我们尽管有好的架构,然而并不能从根本上解决问题。只能保证从蓝图上看是对的,而不能导致质量问题。

better-architecture.jpg

代码的腐烂都是源自于平时的工作习惯问题,而在很多时候是需求导致的。这些看上去就是噩梦——加班,没有时间学习,效率低。没有时间学习,效率低,加班。

eff-worknight.png

而对于代码质量来说,也是如此的一种循环:

code-time.png

而在这时可以学的东西可多了,如Bad Smell,重构,设计模式,编写测试等等。

最后,我只得到了一个短句:

重构到设计模式

好的代码是重构出来的。

再往深层次之上就是架构,而架构往往是一种不容易得到的。尽管我看了一系列的书:

  • 《领域驱动设计》
  • 《企业应用架构模式》
  • 《领域特定语言》
  • 《恰如其份的软件架构》
  • 《面向模式的软件架构》
  • 。。。

最后,我还是依据一本书的书名,才领悟了一本书的书名《浮现式设计》。也是同样的话:

好的架构是演进出来的。

而这些都依赖于我们的实践,听信别人说的话,并不能让我们学会什么。只有自己做了,才知道什么是好,什么是不好。

Growth Hacking

当我们有了一个好的Idea,一个好的架构以及一份良好的代码,并且我们还能将其执行下去。那么,我们还需要什么?

what-is-growth-hacking.jpg

这也是我现在正在尝试的领域,也是过去我想做的,但是却找不到一个好的方向。后来,想了想就有了Growth这个APP。毕竟从一个领域到一个新的领域,最好是通过现有的领域作为过渡。

自媒体正在最近几年内崛起,同时由于聚合网站的存在,信息在不断地爆炸。一个好的作品、文章要传播起来已经越来越越难了。

在现有的领域里,知乎、微博、公众号已经开始在垄断人们的碎片时间。一个东西可能在火了几天之后,你就很难得到他的信息了。

所以在适当的时候去推销,在适当的时候持续下去。

小结

在那之前你需要明白的一点是,你要成为一个怎样的人?是行业的专家?还是领域的专家?等等!

cat-interest.jpg

我想的是一直可以做一些有趣的事,单纯深入一个垂直领域对我来说太枯燥了。对于我来说,我只会在造轮子的时候去研究一个轮子。而不是深入研究某个轮子,我会得到造某种轮子的方法。我只会在创造一些有意思的东西的时候,才会深入某个领域去学习。而不是为了深入某个领域,再去学习这个领域的知识 。。

每个人都可以用不同的方式成长,知道自己的喜欢的然后去计划。

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806

新书《前端架构:从入门到微前端》

《前端架构:从入门到微前端》是一本围绕前端架构的实施手册,从基础的架构规范,到如何设计前端架构,再到采用微前端架构拆分复杂的前端应用。本书通过系统地介绍前端架构世界的方方面面,来帮助前端工程师更好地进行系统设计。

前端架构包含以下五部分内容:

  • 设计:讲述了架构设计的模式,以及设计和制定前端工作流。
  • 基础:通过深入构建系统、单页面应用原理、前端知识体系等,来构建出完整的前端应用架构体系。
  • 实施:通过与代码结构的方式,介绍如何在企业级应用中实施组件化架构、设计系统和前后端分离架构。
  • 微前端:引入6种微前端的概念,以及如何划分、设计微前端应用,并展示了如何实现这6种微前端架构。
  • 演进:提出更新、迁移、重构、重写、重新架构等架构演进方式,来帮助开发人员更好地设计演进式架构。
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 与我沟通

标签