如果你想or即将成为一名程序员,那你需要知道这些东西!上岗须知~

       前两天公司学院的同学给我看了一下即将入职的应届生的数量,真是不少。感慨一下,一批新人即将到来,而自己又老去了一岁。码农是一个必将终身学习的职业。而相关的知识越来越多了。接下来该学什么?接下来该干什么?这个需要你对自己,对这个行业,对供需关系有自己的判断。

       码农需要学习的对于这么多的知识,我把它们分成这些类别:

       大致上每一类知识对应了一个分工的角色。

       这三个模块构成了所谓的基础架构。他们解决的都是机器,以及机器引起的问题。主要的问题就两个:

  ☆  可用性问题:

       机器都是会出故障的,软件也会有bug。利用软件冗余提高系统的可用性。利用良好的运维自动化系统,用人类来解决重大的系统性故障。

  ☆  成本问题:

       合理配置资源。运维自动化。理解硬件,最大化硬件利用效率。利用算法和数据结构,构造高效的系统。如何在性能满足的情况下,保证一致性。

       这四个模块解决的都是人的问题。现在还需要人来写大量的复杂的代码。因为代码量很大,就需要很多的人来共同协作。复杂的人性,加上复杂的代码逻辑和分工。共同构成了这么一个接近艺术的领域:

   ☆  解决分工的问题:

       这些复杂度需要被管理起来,使得代码可以被理解。管理的手段一般被称之为架构。从编程语言,到大量的框架和库,到业务的模块划分。大量的代码不是解决机器的问题,也不是在解决业务的问题。这些代码是在解决人的问题。

   ☆  解决个体开发效率和质量的问题:

       编码指的是类似测试驱动开发等教你如何做好写代码工作的知识。

   ☆  解决群体开发效率和质量的问题:

       测试指的是黑盒测试,白盒测试这些。

   ☆  解决无法按时交付的问题:

       项目管理的目标是把各种参与方整合起来,按进度完成目标。

       这四个模块一般都是割裂成不同的角色来分工的。但是实际上是互相关联的。比如不好管理的项目,往往是复杂度管理方面出了问题。

       所有其他的一切都是围绕业务来做的。最终的目标是用计算机来做一些有价值的事情。计算机程序有两种编码方式:

   ☆  用人来写:

       需要理解业务,编写业务逻辑。需要组织一帮人来写,需要分工。分工不能瞎来,得基于对业务的理解来。所以部分的复杂度管理是和业务领域高度相关的。

   ☆  用机器来写:

       同样也是需要理解业务,选取特征。在业务理解的基础上,用合适的数学工具,降低计算复杂度。但是编写程序的过程是由机器来完成的。而且学习出来的模型不需要人来理解和修改,所以不存在复杂度管理的问题。

       机器学习得到的程序是一种基于模式匹配的机器,目前这种机器仍然无法直接对规则类代码进行编写。看似和人工编码的规则是相辅相成的关系。

       但是某种程度上是在替代人工编码的规则的。规则类代码实现规则只是手段不是目的。从优化的角度来说,规则只是一种优化的手段。法律也只是优化社会稳定性这个指标的一种手段。

       然后可以列一个目录,我们可以看到和码农相关的知识类别还是很多的。很多年轻的朋友,一说起要学习。就是要学习golang,要学习网络知识。

       掌握底层技术栈的码农虽然仍然稀缺,但是这个问题领域的需求并不如过去那么旺盛了。不要把鸡蛋放到一个篮子里,综合性地建立自己地知识体系会对长远发展更有帮助。


解决机器的问题

       如何减少时间和空间复杂度:算法和数据结构

▶如何用排序提高效率

▶如何用哈希提高效率

▶如何用算法保证分布式一致性


       如何利用好硬件:理解硬件

▶CPU/GPU是如何应对内存延迟高随机读带宽小的问题的

● OoO: out of order

● SIMD

● SIMT

● SMT


       如何让人类更好地在半自动化系统下工作:自动化

▶ 如何让人类更好地影响自动化了的部分:发布变更

▶ 如何让人类更好地收到反馈,分析处理灾难:监控告警


解决人的问题

       解决分工问题:复杂度管理

▶ 按结构分工

▶ 按时序分工

▶ 按层次分工

      ● 按同时同地发生的不同特性来分工

      ● 按计算的依赖层次分工:具体场景的,模板业务逻辑的,流程平台的,基础架构的


       解决个体开发的效率和质量问题:编码

▶ 如何最大化对个体的反馈

▶ 测试驱动开发

▶ 日志

▶ 可视化


       解决群体开发的效率和质量问题:测试

▶ 如何让一群人获得整体的反馈

▶ 解决按期交付问题:项目管理


解决业务问题

       人工编码

▶ 让一群人干好活:复杂度管理

▶ 在这个业务场景下,如何分工才能最小化沟通

    ● 如何才能理解业务之间的联系:沟通来自业务内在的耦合

        ○ 微服务

        ○ 领域驱动开发

        ○ 面向对象:单变量派发,多变量派发

    ● 干好我的活:业务逻辑

        ○ 熟练的使用框架和库:踩在巨人的肩膀上,快速落地。要能快速学习新的语言和框架

        ○ 证明业务收益:效果评估,置信度

    ● 找到业务价值:数据分析

        ○ 理解业务如何运作:业务流程的理解和建模

        ○ 软件可用性:如何让用户喜欢,高效。基本的交互设计能力

        ○ 视觉设计:至少得会画界面原型

        ○ 产品设计:竞品分析,市场研究


       机器学习

▶ 提高业务得到的收益

▶ 降低计算成本

▶ 复杂度管理部分,展开一下


相同空间,相同时间:在一个点上多股“不相关”的逻辑汇聚到了一起

    1、功能性需求和非功能性需求的同时处理,比如计费和内存分配,同时管理。很多类型申明的活是为了硬件优化,比如const和immutable。处理特定编解码的逻辑,和

    2、正常流程和多种异常流程的同时处理,高可用需要额外加很多代码。但是和主线业务的理解是无关的。

    3、同时操作多个CPU核:用一条指令操作说明多个并行的计算流程,比如SIMD本质上是把并行的计算用一个指令流来操作

    4、多线程共享的代码:要考虑同一段代码被多个线程并行执行的各种交错的时序

    5、不同侧面的业务需求同时处理:发单和促销和运力撮合

备注1:相关和不相关和阅读者有关。特别是非正交的业务需求。

备注2:分开了之后也未必就不复杂了。有些时候存粹就是解决方法太笨拙。有些事情是问题本身就是一个逻辑上很复杂的求解过程。


相同空间,不同时间

    1、不幂等的代码。有副作用的代码。全局变量多的代码。两次执行会有不同的结果,需要考虑之前的状态。


不同空间,相同时间

    1、在多份代码上保持概念上的完整性。极端例子是拷贝的代码。让多个模块都认一个概念(比如n元组),也算是维护概念完整性。

    2、在多个存储上保持数据上的一致性

    3、完整的一段逻辑被拆成特别细碎的小函数,造成每个函数都没法说明自己到底干了啥。这里函数也可以换成微服务。


不同空间,不同时间

    1、同一个流程的多个步骤逻辑被打撒到了步骤的代码里,和该步骤的其他业务混到了一起。没有一个视觉上可见的实体来代表一块前后有密切联系的“功能特性”。

    2、跨越多个代码库,多个时间点的职责上的循环依赖

简单来说可以归纳成两种:

    1、需要关注到一个物体的时候,没法聚焦。分散到很多地方了,或者被其他逻辑淹没了。

    2、同时跟踪多个物体


程序员编程学习基地【点击进入】!

涉及:游戏开发、课程设计、常用软件开发、黑客等等...

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342