我的大学

辍学经历

在很久很久之前,我在上了高中一年之后。由于成绩较差,以及当时心态爆炸。之后又由于很多原因,就离开了高中。后续过了段时间,虽然被家里人安排去初三继续复读,但始终郁郁不得志。

最后经过深思熟虑之后,决定辍学去打工。

之后陆续颠沛流离,基本上大多数稍微简单的工作我都做过,比如:保安、网管、普通工厂、电子厂以及装修工人,有段时间还靠游戏打金赚钱,用来保证自己不被饿死。如同“人间失格”一般,我变成了一个只会“活着”的机器。当然,虽然看似这段经历很惨,但是我并没有针对辍学这件事特别后悔过。唯一最后悔的事情,就是没有早点学习编程。

从小学三年级第一次见到电脑被震撼到以来,我一直被吸引着,那是无与伦比的吸引力,甚至超越了中二和现实的引力。不论是最早的打游戏,后来玩服务器,然后现在一直以来的编程,都是如此。

后来,当我厌倦了随波逐流之后,我终于开始了思考。我要做什么?我要成为什么?我所期望的未来是什么样子的?答案不言而喻。

之后,我报了培训班,学习Android,之后开始北漂,一直到现在。

自学考试

虽然,工作了两年多之后,我的技术还可以,完成工作完全没问题。但是,在找工作的时候,却还是很难进去中、大型公司。虽然可以选择小公司,而且普通情况小公司工资反而会更高一点。但是,对于我自身来说,技术和职业发展更重要一点。

之后查询了一些信息,最后决定了走自考这条路。虽然成人教育、远程教育等都可以获得相等的国家承认的学历,但是我除了学历之外,还想通过自考学习和巩固一下自己的科班的基础知识,能学到一些东西是很棒的。

报考大学

自己报考大学和专业的话,肯定是选择计算机相关的专业。虽然很想报考“计算机科学与技术”或者“软件工程”这种专业,但很遗憾的是自考没有相关的专业。最后我就报考了:

  • 计算机及应用(专科)
  • 计算机网络(本科)

未来计划

计划3-5年完成学业,拿到专科和本科毕业证。如果可以的话,后续有机会的话,会考虑上一个全日制的研究生。

出师不利

理想很美好,现实较残酷。虽然我编程能力还可以,但是毕竟已经离开学校好久,对于这种长期类型的学习不太熟悉,而且自己正好有很多事情需要去抉择,导致了挂科。首次报名3月,首次考试7月。首次考试报考科目7门,通过1门,挂科6门。挂科的科目中,有些是去了没考过的,大多是没有去参加的。去参加并没有认真学习过的考试,就算应为临时抱佛脚通过了,对我来说并没有很大的价值。

大学生活

最后,只属于我一个人的大学生活开始了~

2018年的第一场雪,在此许下誓言

今天,北京下了第一场雪,也是很多天没见到雨雪之后的第一次。我也在家呆了有一段时间了,从上个工作离开之后,到现在差不多快半个月了。

算起来,我在程序员的岗位也工作了两年多了。目前也算是在程序员的职位上算是站稳了一点,至少不担心找不到工作了。不过在目前更新飞快的编程的世界里待着,想一直呆着的话,也是无与伦比的压力环绕在身旁,至少比我以前的所有的工作都让人感觉很有压力。

不知为何,我好像无法很顺利的慢慢前进。期待的线性成长曲线总是被我自己所打破,总是会在一段时间后陷入低谷。陷入低谷之后便愈加的令人可怜,好像渐渐丧失作为正常人类所具有的能力,渐渐的很多东西都不会也不能去做了。

算起来,我也做过很多工作了:从最早的小城镇,到现在的北京;从网管、保安,之后的工厂、电子厂工人,到现在的互联网公司的码农;从下班之后想干嘛干嘛,到现在的必须学习更多;从工资不到千元,到现在的破万。我不断的得到更多,也在不断的失去更多。很多东西都在不断的变化,唯一不变的是在这变化前后的过程,抛弃和得到的过程,堕落和失格的过程。我也不知道该去享受呢,还是该去痛苦,唯一知道的是,如果无法离开这个过程,我就会一直待在黑暗之中。但是,离开之后又要何去何从,要抛弃什么,又要努力去争取什么?

在前方的道路上不断探索认知的巨大的高峰,不断地在我的眼前出现。压迫感和无力感越来越强,自我的身体和精神上的力量在不断加大的世界中变得越来越小。光是想要睁眼看清前方的目标,就需要付出巨大的代价。与此同时,由于我获得的东西越来越多,身体的负重越来越大,很多东西无法舍弃,我现在举步维艰。我清晰的了解到:我在燃烧,在渐渐的老去,在不断的向死亡逼近~

但是,我却无法后退和停止前进,因为世界在不断的消失,我只能走向我所能看到的安全的地方。因为在这前进的过程中,有属于我的幸福~

在此,抉择出未来,并为之奋斗。

  • 自考考试
  • English
  • Android Development
  • Full Stack
  • Rewriter

代码整洁之道 – 程序员的职业素养(片段摘抄)

代码整洁之道 – 程序员的职业素养

最好的软件开发人员都知道一个秘密: 美的东西比丑的东西创造起来更廉价, 也更快捷. 构建、维护一个美的系统所花费的时间、金钱都要少于丑的系统.
美的系统是灵活、易于理解的, 构建、维护它们就是一种快乐.

优秀的程序员都因为爱好, 孜孜不倦的写了好多根本没可能去实际执行, 为人类创造价值的程序.

专业主义

“专业主义” 有很深的含义, 它不但象征着荣誉与骄傲, 而且明确意味着责任与义务. 这两者密切相关, 因为从你无法负责的事情上不可能获得荣誉与骄傲.

专业主义的精髓就在于将公司利益视同个人利益. 专业主义就意味着担当责任.

开发的软件有 bug 会损害软件的功能. 因此, 要做得专业, 就不能就下 bug.
当然, 软件开发太复杂了, 怎么可能会没 bug 呢? 的确, 但最重要的是, 要对自己的不完美负责. 代码中难免会出现 bug, 但这并不意味着你不用对它们负责; 没人能写出完美的软件, 但这并不表示你不用对不完美负责.

所谓专业人士, 就是能对自己犯下的错误负责的人, 哪怕那些错误实际上在所难免. 职业经验多了之后, 失误率应该快速减少, 甚至渐进于零. 失误率永远不可能等于零, 但你有责任让它无限接近零.

成熟的专业开发人员知道, 聪明人不会为了发布新功能而破坏结构. 结构良好的代码灵活. 以牺牲结构为代价, 得不偿失, 将来必追悔莫及.

如果你希望自己的软件灵活可变, 那就应该时常修改它

你应该每周工作60小时. 前40小时是给雇主的, 后20小时是给自己的. 在这剩余的20小时里, 你应该看书、练习、学习, 或者做其他能提升职业能力的事情.

业精于勤. 真正的专业人士往往勤学苦干, 以求得自身技能的纯熟精炼. 只完成日常工作是不足以称为练习的, 那只能算是种执行性质的操作, 而不是练习. 练习, 指的是在日常工作之余专门练习技能, 以期自我提升.

学习的第二个最佳方法是与他人合作. 专业软件开发人员往往会更加努力地尝试与他人一起编程、一起练习、一起设计、一起计划, 这样他们可以从彼此身上学到很多东西, 而且能在更短的时间内更高质量地完成更多工作.

让新人融入团队的最好办法是和他们坐到一起, 向他们传授工作要诀. 专业人士会视辅导新人为己任, 他们不会放任未经辅导的新手肆意妄为.

每位专业软件人员都有义务了解自己开发的解决方案对应的领域. 开始一个新领域的项目时, 应当读一两本该邻域相关的书, 要就该领域的基础架构与基本知识做客户和用户访谈, 还应当花时间和业内专家交流, 了解他们的原则与价值观念.

雇主的问题就是你的问题. 你必须弄明白这些问题, 并寻求最佳的解决方案. 每次开发系统, 都应站在雇主的角度来思考, 确保开发的功能能真正能满足雇主的需要.

专业人士知道自己自负, 不会故作谦逊. 他们熟知自己的工作, 并引以为荣; 他们对自己的能力充满自信, 并因此用于承担由吧务的风险. 专业人士不是胆小鬼.

需要尽可能做到的事情

  • 让 QA 找不出任何问题
  • 要确信代码正常运行
  • 自动化 QA
  • 不会为了发布新功能破坏结构
  • 每次读代码, 都别忘了进行点滴的改善

说”不”

专业人士敢于说明真相而不屈从于权势。专业人士有勇气对他们的经理说“不”。

你怎么能对自己的老板说”不“呢?毕竟,他们可是你的老板啊!难道不该照你老板说的去做吗?

不应该照做。只要你是一名专业人士,那就不应该照做。

奴隶没有权利说”不“。劳工或许也对说”不“有所顾忌。但是专业人士应该懂得说”不“。事实上,优秀的经理人对于敢于说”不“的人,总是求贤若渴。因为只有敢于说”不“,才能真正做成一些事情。

你的经理要求你在明天之前完成登录页面,这就是他在追求和捍卫的一个目标,那就是尽他的工作职责。如果你明知第二天之前不可能完成登录页面,嘴上却说”好的,我会试试的“,那么便是你失职了。这时候,尽职的唯一选择是说”不,这不可能“。

最要说”不“的是那些高风险的关键时刻。越是关键时刻,”不“字就越具价值。

这一点应该不证自明。当公司存亡成败皆系于此时,你必须尽己所能,把最好的信息传递给你的经理。这往往意味着要说”不“。

我们都听说过具备”团队精神“是多么重要。具备团队精神,意味着恪尽职守,意味着当其他队员遭遇困境时你要出手相助。有团队精神的人会频繁与大家交流,会关心队友,会竭力做到尽职尽责。

专业人士常常会成为英雄人物,但这样的荣誉并非是他们所刻意追求的。他们之所以成为英雄人物,是因为他们出色地完成了任务,不但按时,而且符合预算。

说”是“

做出承诺,包含三个步骤。

  • 口头上说自己将会去做
  • 心里认真对待做出的承诺
  • 真正付诸行动

但是,我们是不是常常碰到这种情况,其他人(当然不会是我们自己!)在作出承诺时,其实并没有包含这三个步骤?

很少有人会认真对待自己说的话,并且说到做到。有些人在说话时是认真的,但他从来不会说到做到。而更多的人在做出承诺后,几乎从不会认真去履行诺言。

你只能承诺自己能完全掌握的事。比如,如果你的目标是完成一个还依赖与另一团队的模块,那么你无法承诺自己能够完成这个模块,还能实现该模块与其他团队所负责模块的无缝集成。但你能承诺自己会采取一些具体的行动来达到最终目标。

即使目标无法完成,你仍能全力前进,离目标更近些。而弄清楚目标能否达成这件事,便是你可以采取的努力行动之一。

这样的事情时有发生。有些事情先前你可能没预料到,这很现实。但是如果你仍然希望自己能够不负众望,那就赶紧去调整别人对你的预期,越快越好!

如果你无法兑现承诺,那么最重要的就是尽早向你的承诺对象发出预警,越快越好,越早越好。

你越早向各利益相关方发出预警信号,整个团队就越有可能抓住机会,中止并重新评估当前的活动,并决定是否采取些措施或做出些改变(比如调整优先级等)。这么一来,你仍有可能达成之前的承诺,或者,用另一个承诺来代替先前的承诺。

在此,有一点相当重要:如果你不尽早告诉他人可能的问题,就错失了让他们帮助你达成目标、兑现承诺的机会。

今天的程序员肯定得去面对诸如估算、确定最后期限以及面对面交流等沟通活动。做出承诺或许听来令人有些害怕,但他能帮助程序员解决在沟通中可能发生的不少问题。如果你能够一直信守承诺,大家会以为你“是一名严谨的开发人员”。在我们这行中,这也是最有价值的评价。

如果进度比预期的要慢一些,你可能会冒险放弃原则。如果不写测试,你或许可以更快完成任务。如果不做重构,不运行整套回归测试,或许也可以更快完成任务。

此时,如果是专业开发人员,就不会放弃底线。首先,这种假设本身就是错误的。即使不写测试,不做重构,省掉完整的回归测试,你也无法更快完成 任务。多年经验告诉我们,打破这些纪律和原则,必然会拖慢进度。

其次,身为专业开发人员,你有责任根据标准规范自身工作。代码必须经过测试,代码必须要有对应的测试代码。要确保代码清晰整洁,而且必须确保没有影响到系统的其他部分。

作为专业开发人员,你已经承诺会遵守和捍卫这些标准。你做出的其他所有承诺,都应该和这份承诺保持一致。

专业人士不需要对所有请求都回答“是”。不过,他们应该努力寻找创新的方法,尽可能做到有求必应。当专业人士给出肯定回答时,他们会使用正式的承诺,以确保各方面明白无误的理解承诺的内容。

编码

能够感知到错误非常重要。说明你已经能够非常迅速的获得反馈,能够更为快速地从错误中学习。要熟练掌握每项技艺,关键是要具备“信心”和“出错感知“能力。

编码是一项颇具挑战也十分累人的智力活动。相比其他类型的活动,编码更加要求聚精会神。因为在编码时你必须平衡互相牵制的多种因素:

  • 首先,代码必须能够正常工作
  • 代码必须能够帮你解决客户提出的问题
  • 代码必须要能和现有系统结合的天衣无缝
  • 其他程序员必须能读懂你的代码

而且,编码时无可避免地会受到各种干扰。当你无法全神贯注地编码时,所写代码就有可能出错。

如果感到疲劳或者心烦意乱,千万不要编码。强而为之,最终只能回头返工。相反,要找到一种方法来消除干扰,让心绪平静下来。

软件开发是一场马拉松,而不是短跑冲刺。你无法全程一直以最快的速度赢得比赛,只有通过保持体力和维持稳定节奏来取胜。无论是赛前或者赛中,马拉松选手都会调整好自己的状态。专业程序员也会同样仔细地保存好自己的精力和创造力。

流态区

关于高效率状态,大家已经写了很多,这种状态通常称为”流态“。在这种状态下,程序员会感到效率极高;在这种状态下,会感到“绝无错误”。因此他们 一直苦苦追求进入这种状态,并经常以能在那种状态下维持多久来衡量自我价值。

一些曾经进入这种状态但最终摆脱出来的人给出了一点忠告:“避免进入流态区”。这种意识状态并非真的高效,也绝非毫无错误。这其实是一种”浅层冥想“状态,在这种状态中,为了追求所谓的速度,理性思考的能力会下降。

在流态区,你可能能够敲出更多的代码。你会收获一种愉悦感或者征服感。问题在于,在流态区状态下,你其实放弃了顾及全局,因此,你可能会做一些后来不得不推倒重来的决策。在流态区写代码可能会快些,但是后面你将不得不更多地回头审视这些代码。

帮助

编程并非易事。越年轻的程序员对此可能越没有什么感觉。但是随着经验增长,必须小心谨慎地将系统分解为易于理解的小单元,同时使这些单元直接的关系越少越好,这并非易事。

编程很难,事实上,仅凭一己之力无法写出优秀的代码。即使你的技能格外高超,也肯定能从另外一名程序员的思考与想法中中获益。

因此,互相帮助也是每个程序员的职责所在。将自己封闭在格子间或者办公室里与世隔绝,有悖于专业的职业精神。你的工作不可能重要到你不能花一丁点时间来帮助别人。事实上,作为专业人士,要以随时能够帮助别人为荣。

沟通

专业开发人员既要做好开发,也要做好沟通。“输入糟糕,输出也会糟糕”对程序与同样通用,所以职业程序员会重视与团队及业务部门的沟通,确保这种沟通的准确、流畅。

开发方与业务方之间最常见的沟通是关于需求的。业务方描述他们认为自己需要的东西,程序员按照自己理解的业务方表达的需求来开发。至少从理论上来说,应该是这样。但在现实里,关于需求的沟通是及其困难的,其中会表现出各种问题。

做业务的人和写程序的人都容易陷入一个陷阱,即过早进行精细化。业务方还没有启动项目,就要精确知道最后能得到什么;开发方还没有评估整个项目,就希望精确知道要交付什么。双方都贪求不现实的精确性,而且经常愿意花大价钱来追求这种精确。

在工作中,有一种现象叫做观察者效应,或者不确定原则。每次你向业务方展示一项功能,他们就获得了比之前更多的信息,这些新信息反过来又会影响他们对整个程序的看法。

最终结果就是,需求完成的越精细,就越容易被忽视,系统因此也谈不上完工。

首先,即使拥有全面准确的信息,评估也通常会存在巨大的变数。其次,因为不确定原则的存在,不可能通过反复推敲实现早起的精确性。需求是一定会变化的,所以追求那种精确性是徒劳的。

避免过早精细化的方法是尽可能的推迟精细化。专业人员直到到手的开发的前一刻才会把需求具体化。但是,这可能造成另一个问题:迟来的模糊性。

业务方常常会提出不同意见。这时候他们会发现,相比去解决分歧,更好的办法是换一种说法,所以会寻找各方都同意的关于需求的表述,而不是去解决争端。

需求文档的每一点模糊之处,都对应着业务方的一点分歧。当然,模糊不只来自于分歧或争论。有时候,业务方会想当然地认为看文档的人懂得自己的意思。

验收的目的是沟通、澄清、精确化。开发方、业务方、测试方对验收测试达成共识,大家都能够明白系统的行为将会是怎样。各方都应当记录这种准确的共识。在专业开发人员看来,与业务方、测试方协同工作,确保大家都明白要做什么,是自己的责任。

验收测试都应当自动进行。在软件开发的周期中,确实有时候需要手动测试,但是验收测试不应当手工进行,原因很简单:要考虑成本。

专业人员会避免手动测试。相比手动测试,自动化测试的成本非常低,让人手工执行测试脚本不划算。专业开发人员认为,实现验收测试的自动化是自己的责任。

请务必确保在持续集成系统中,单元测试和验收测试每天都能运行好几次。整套持续集成系统应该由源代码管理系统来触发。只要有人提交了代码,持续集成系统就会开始构建,并运行所有的测试,测试结果会用电子邮件发给团队的所有人。

保持持续集成系统的时刻运行是非常重要的。持续集成不应该失败,如果失败了,团队里的所有人都应该停下手里的活,看看如何让测试通过。在持续集成系统里,失败的集成应该视为紧急情况,也就是“立刻终止”型事件。

测试

尽管公司可能设有独立的 QA 小组专门测试软件,但是开发小组仍然要把“QA 应该找不到任何错误”作为努力的目标。

当然,这个目标定得有点高。毕竟,如果有一群聪明人联合起来绞尽脑汁找出产品中所有的瑕疵和不足,他们肯定是能够找出一些问题的。对 QA 找到的每一个问题,开发团队都应该高度重视、认真对待。应该反思为什么会出现这种错误,并采取措施避免今后重犯。

会议

会议的成本非常高。如果你去算算会议的成本,你会很吃惊。

关于会议,有两条真理:

  • 会议是必须的
  • 会议浪费了大量时间

受到邀请的会议没有必要全部参加。参加的会议太多,其实只能证明你不够专业。你应该理智的使用时间,所以必须谨慎选择,应当参加哪些会议,礼貌拒绝哪些会议。

邀请你参加会议的人并不负责管理你的时间,为时间负责的只有你。所以,如果你收到会议邀请,务必确保出席会议可以给自己目前的工作带来切实且显著的成效,否则不必参与。

还有些时候,有职权的人(比如其他项目的高级工程师或者主管)命令你必须参加某些会议。这时候应当问问自己,他们的职权是否比自己的工作计划更重要。同样,自己团队的同事和领导也可以帮忙决策。

领导的最重要责任之一,就是帮你从某些会议脱身。好的领导一定会主动维护你拒绝出席的决定,因为他和你一样关心你的时间。

如果会议让人厌烦,就离席。仔细管理自己的时间是你的责任。如果你发现参加某个会议是在浪费时间,就应当想个礼貌的办法退出来。

重要的是,你应当明白,继续待在会议室里是浪费时间;继续参加对你没有太多意义的会议,是不专业的行为。

优先级

专业人员评估每个任务的优先级,排除个人的喜好和需要,按照真实的紧急任务来执行任务。

专业开发人员会用心管理自己的时间和注意力。他们知道优先级错乱的诱惑,他们也珍视自己的声誉,所以会抵制优先级错乱。他们永远有多种选择,永远敞开心扉听取其他解决方案,他们从来不会执拗于某个无法放弃的解决方案。他们也时刻警惕着正在暴露的泥潭,一旦看清楚,就会避开。最糟糕的事情,莫过于看到一群开发人员在徒劳地拼力工作,结果却陷入越来越深的泥潭。

预估

预估是软件开发人员面对的最简单,也是最可怕的活动之一了,预估影响到的商业价值巨大,关乎声誉,也给我们带来了很多的苦恼和挫折。预估是业务人员和开发人员之间最主要的障碍,横亘在双方之间的种种不信任,几乎由它引发。

什么是预估

问题在于,不同的人对预估有不同的看法。业务方觉得预估就是承诺。开发方认为预估是猜测,两者相差迥异。

专业开发人员不随便承诺,除非他们确切知道可以完成。道理就是这么简单。如果你被要求承诺做自己不确定的事情,那么就应当坚决拒绝。如果要求你承诺在某天完成,但是需要每天加班,周末加班,取消休假,那么最后的决定取决于你;不过,不要违背自己的意愿去勉强。

承诺是关于确定性的。其他人会把你的承诺当真,据此拟定计划。如果不能兑现承诺,他们的损失,以及你的声誉受到的影响,都是巨大的。不能兑现的承诺也是一种欺骗,只不过比明目张胆的欺骗好一点。

预估是一种猜测。它不包含任何承诺的色彩。他们不需要做任何约定。预估错误无关声誉。我们之所以要预估,是因为不知道到底要花多少时间。

不幸的是,大多数软件开发人员都很不擅长预估。这不是因为他们没有掌握关于预估的诀窍——根本没有这样的诀窍。预估的偏差总是很大,原因在于我们并不理解预估的实质。预估不是个定数,预估的结果是一种概率分布。

专业开发人员能够区分预估和承诺。只有在确切知道可以完成的前提下,他们才会给出承诺。此外,他们也会小心避免给出暗示性的承诺。他们会尽可能地说明预估的概率分布,这样主管就可以做出合适的计划。

压力

即使有压力,专业开发人员也会冷静果断。尽管压力不断增大,他仍然会坚守所受的训练和纪律,他知道这些是他赖以战胜最后期限和承诺所带来压力的最好方法。

在压力下保持冷静是最好的方式,便是会规避导致压力的处境。规避的方式也许无法完全减除压力,但是可以大大降低压力并缩短高压力期的时间。

业务人员可能在没有事先咨询我们的情况下就向客户做出了承诺。发生这种事情,出于责任感我们必须主动帮助业务方找到方法来兑现这些承诺,但是一定不能接受这些承诺。

专业人士总会千方百计地帮助业务方找到达成目标的方法,但并不一定要接受业务方代为做出的承诺。最终,如果我们没有兑现业务方所作出的承诺,那么该由当时做出承诺的人来承担责任。

如果因为没能兑现承诺而导致业务失败了,你也将无法按时拿到薪水,这种情况下可能能感受不到压力。但是,如果此前你已经表现得十分专业,那么至少在找新工作时可以昂首挺胸问心无愧。

快速前进确保最后期限的方法,便是保持整洁。专业人士不会为了快点前进而乱来。他们明白“快而脏”是自相矛盾的说法。脏乱只会导致缓慢!

协作

大多数软件都是由团队开发出来的。当团队成员能够十分专业地互相协作时,整个团队是最为高效的。单打独斗与游离与团队之外都是不专业的表现。

专业程序员的首要职责是满足雇主的需求。这意味着你要和你的经理们、业务分析师们、测试工程师们和其他团队成员很好地协作,深刻理解业务目标。这并不是说你必须要成为业务方面的专家,而是说你需要理解手头上正在编写的代码的业务价值是什么,了解雇你的企业将如何从你的工作中获得回报。

专业程序员最糟糕的表现是两耳不闻窗外事,只顾一头将自己埋在技术堆里,甚至连公司业务火烧眉毛行将奔溃了也不闻不问。你的工作职责就是要让业务免于陷入困顿,让公司可以长久发展下去。

因此,专业程序员会花时间去理解业务。他们会和用户讨论他们正在使用的软件,会和销售人员与市场人员讨论所遭遇的问题,会和经理们沟通,明确团队的短期目标和长期目标。

简而言之,他们会将注意力放在与业务同舟共济上。

程序员与程序员

程序员直接通常很难密切合作,这就会带来一些不小的问题。

代码个体所有

不正常的团队最糟糕的症状是,每个程序员在自己的代码周边筑起一道高墙,拒绝让其他程序员接触到这些代码。我曾在需要地方看到过,不少程序员甚至不愿让其他程序员看见他们的代码。这是引发灾难的“最有效秘诀”。

协作性的代码所有权

将代码所有权的各种隔断全部打破、由整个团队共同拥有全部代码的做法,相较于此则要好得多。

团队中每位成员都能签出任何模块的代码,做出任何他们认为合适的修改。专业人士期望拥有代码的是整个团队,而非个人。

专业开发人员是不会阻止别人修改代码的。他们不会再代码上构造所有权的潘篱,而是尽可能多地互相合作。他们通过合作来达到学习的目的。

结对

“结对编程”是解决问题最有效的方法。专业人士会结对工作。

专业人士结对工作,还因为这是分享知识的最好途径。专业人士不会仅凭一己之力从零开始创建知识,而是通过互相结对来学习系统的不同部分和业务。他们明白,尽管每位团队人员都有自己的位置,但是在紧要关头,每位团队成员也要能够接替其他人的位置。

专业人士之所以结对,是因为结对是复查代码最好的方式。系统中不应该包含未经其他程序员复查过得代码。代码复查的方法很多,但大多数方法效率都极其低下。最有效率且最有效果的代码复查方法,就是以互相协作的方式完成代码编写。

团队与项目

形成团队是需要时间的。团队成员需要首先建立关系。他们需要学习如何相互协作,需要了解彼此的批号、强项、弱项,最终,才能凝聚成团队。

有凝聚力的团队确实有些神奇之处。他们能一起创造奇迹。他们互为知己,能够替对方着想,互相支持,激励对方拿出自己最好的表现。他们攻无不克。

成员克服个体差异,默契配合,彼此信任, 形成真正有凝聚力的团队,是需要一些时间的,可能需要6个月,甚至1年。但是,凝聚力一旦真正形成,就会产生一种神奇的魔力。团队的成员会一起做计划,一起解决问题,一起面对问题,一起搞定一切。

团队已经有了凝聚力,但却因为项目结束了就解散这样的团队,则是极其荒谬的。最好的做法是不拆散团队,让他们继续合作,只要不断地把新项目分派给他们就行。

专业的开发组织会把项目分配给已形成凝聚力的团队,而不会围绕着项目来组建团队。一个有凝聚力的团队能够同时承接多个项目,根据成员各自的意愿、技能和能力来分配工作,会顺利完成项目。

团队比项目更难构建。因此,组件稳健的团队,让团队在一个又一个项目中整体移动共同工作是较好的做法。并且,团队也可以同时承接多个项目。在组建团队时,要给于团队充足的时间,让他们形成凝聚力,一直共同工作,成为不断交付项目的巨大引擎。

Rewrite 天王寺瑚太朗 墓志铭

在很久以前, 有那样一位青年
他是一个善良的人, 像所有同龄人一样承受着无比的焦虑

他曾是一名军人
他曾懊悔的扣下扳机, 却从未向权威屈膝
他杀人如麻
沉重的罪孽使他无颜以对世人

我尊重他的理想并追随他的足迹
然而有一件事你理应知晓
如今, 这颗伤痕累累行星已然消耗殆尽
人们失去了对生存的渴望, 陷入了绝望的深渊

这世间仍存在着一缕希望的光芒
不是别人, 那便是他
我们曾是他的拥护者
延续他的梦想, 将那被专政所垄断的科学技术由网络公诸于世

每一个人都可以阅读
任何组织与机构都无法阻止
大多读者将之视为荒谬无稽之谈
学术权威机构对它不屑一顾
但是我们相信, 唯有这些真相能够拯救这个世界
人类所能得到的, 与工业革命相比肩的最后火种
存在于我们的灵魂之中

广阔无际的生命的海洋
小鬼, 龙, 野兽, 天使与精灵, 都沉睡在那无边的黑暗之中
我们定会将一切征服一切
神话时代终将会到来
或许这是一种亵渎
即便如此我等亦将被这颗行星所宽恕
如同宽恕诋毁母亲的孩子那般

然而事实绝非如此
这是一条洒满光明之路, 唯一的, 通向美好未来的希望之路
请谨记
这条路是由那位无名军人所开辟
愿这段故事被人们世代传颂, 跨越千年
愿天主的恩宠, 与吾等同在–

2015年终总结与2016年终展望

转眼间, 一年的时光又过去了. 在这最后一刻, 稍微总结一下吧!

2015年做到的事情

  • 在2015年的展望中, 我说好了要努力, 虽然不够努力, 但还是勉强的成为了一名程序员.
  • 在2015年, 我来到了北京, 这是真正意义上的出来闯荡了…
  • 熟悉了一点Android的开发

在过去的一年中, 从天水到西安然后到北京, 从无知到了解然后到可以做一点事情, 工资从之前的一两千到现在的七八千. 好像在飞一样, 但是, 在这急速的背后是巨大的空虚与压力. 我在这压力中努力 坚持. 唯有不断的给自己安慰, 然后向前爬行!

当然, 也有没做到的事情: 英语还是一如既往的糟糕, 态度也没有比以前好多少, 时间的价值也没有提高, 自己还是没有喜欢上自己.

2016年要做的事情

2016年马上要到来了, 其实数字什么的,意义并不大. 但是, 时间却对每个人都很重要.

2016年是我和未来的自己交流的一年, 我会与未来的我交流学习打赌互相帮助.

  • 这个博客将只写一些生活方面的 , 所有的技术类的都会转移到github pages上面(虽然我很少写技术博客, 但是明年我会努力的
  • 心中有一个时间管理的想法, 我会努力的做出来, 至少自己能够使用. (当然, 需要的技术栈是全端, 绝对的独立开发
  • 学一个服务器方向的语言(计划是python, 能做的事情很多, 也比较好掌控, 而且是另一种风格的
  • 稍微学点英语( 今年大多数时候都没去学英语, 毕竟刚入行, 各方面的压力比较大, 等明年稳定之后, 就是需要去提高了, 英语是我过去唯一的伤痛
  • 加入一个业余或者兼职的团队, 跟随大牛学习
  • 多和家人沟通
  • 争取买个MacBook(大牛们好多都是这样, 毕竟win不爽, linux相对来说不够方便, 而且也懒得折腾
  • 还上所有欠的债( 毕竟之前没有任何积累, 直接凭空打入编程界, 所有的资源都是借来的, 所以导致现在签了一屁股债, 有时候真的亚历山大
  • 最后, 如果可以的话, 找个女朋友(这个真的是非常困难, 感觉比学英语还困难啊

时光的墓志铭

  • 偶尔的刺激是可以去追求的,  但是你首先要懂, 这个东西为什么这么刺激
  • 同事真的很难成为朋友, 除非公司氛围真的非常适合友情
  • 人际交往真的非常难, 没必要刻意去追求, 顺其自然
  • 有时候, 一年只需要交一个朋友就足够了
  • 当你在大牛的圈子外的时候, 不要放弃, 或许有个机会就能使你进入, 就算是无法交流也没有关系, 至少有机会
  • 不要放弃任何一个虐待自己的机会, 你会感觉挺爽的, 但是, 记得不要让自己受伤
  • 节约资源, 不论是现在的, 还是未来的, 因为资源意味着需要努力去获取, 要付出代价(甚至有些无法再生

记一次非常逗比的错误, 以及惊险刺激的排错

在某一次重启之后, 我输入了正确的密码也无法登陆我的Ubuntu了,不论是账号登陆,还是游客登陆, 全部不起作用。

我非常惊恐, 因为电脑里面还有我刚写的代码, 以及辛辛苦苦配置的环境。难道就这么毁于一旦了?

思考

有几个可能:被黑了(我随便下的一些程序代码,以及我的服务器好久不用了, 但我还是连上去了), Ubuntu又挂了(我用的14.04 STL的Ubuntu Kylin), 键盘字符集输入错误?

排错

刚开始, 我是搜索的Ubuntu忘记密码怎么办?Ubuntu如何进入单用户模式?

blog.sina.com.cn/s/blog_a2d4803001013vqo.html 百度第一的链接, 你根本不知道他在说什么, 因为现在的Ubuntu 已经不是过去的Ubuntu了,GRUB也换了

很多链接都是直接抄别人的, 图片和文字完全对不上, 搬运信息的更本不知道操作性,就随便复制粘贴, 然后当做一篇文章, 更本没想过看的人该如何操作。

我目前的解决方法也找到了, 实验了很多。我也就直接说正确方法了。

  • 一般需要进入GRUB界面, 我是用Shift进入的
  • 然后在启动项上面按E,进入编辑(好多文章写的是在recovery上面,但是我实际是怎么样都可以的,如果不行的话,可以再考虑进recovery
  • 然后找到 linux /boot/*****  ** ** ro *** 一般是这样的(当时操作截图也没有
  • 将ro 改为 rw 然后 在最后面加上 single #注意:我加上之后进去是一个光标一直在闪,或许是我的错误比较特殊,然后 我又测试了在后面加上 init=/bin/bash 之后才进入shell的
  • 之后就是passwd了 , 或许会有read-only错误,可以试试( mount -rw -o remount /
  • 但是我的错误是 Authentication token manipulation error. password unchange
  • 然后, 就是我逗比的时刻了, 我查了好久, 最后发现, shadow文件被我和 shadowsock配置文件一起删掉了  rm -rf shadow*        QAQ
  • 不过幸好, /etc/passwd 文件没有删, 然后我查了一下, 用 pwconv 重新生成了 shadow
  • 然后, 重新启动, 一切正常 QAQ

工作一月纪事

好吧, 工作已经开始了一个月了, 前两天刚拿到整月的薪水. 感觉还不错!

从6月份决定的借钱&贷款去培训, 到努力的找工作, 然后到第一个需求的实现, 最后是偶尔一段时间的轻松.  从天水到西安再到北京, 经历了好多, 见过了好多, 努力了好多. 最后获得的是薪水翻倍的增长, 以及对未来生活的信心和希望.

时间, 是我们每个人最宝贵的财富, 和出生和成长不同, 他不会因为这些因素而影响. 你的就是你的, 区别是你怎么去使用. 我觉得现在就好, 努力的赚钱, 然后去做想要做到的事情, 所谓的拼搏不就是这样吗? 所谓的人生也不过如此吧!

安全感会影响人生活的状态, 我现在也是这样, 有比较稳定的工作, 有比较稳定的还过得去的收入, 有比较稳定的个人时间以爱好.  同样的也会有缺点, 他会让你无法稳定的去做一件事, 会让你无法稳定的去使用自己的时间, 因为, 这种稳定性只是相对的: 没有稳定的房子, 没有稳定的家庭, 没有稳定的能够无惧的用来赚钱的能力, 甚至连稍微稳定的家族和女朋友都没有, 相对的世界与正常的世界, 同样都是自己的世界. 而你自己需要在两个世界的夹缝中为两个世界而努力, 一个是自己看到的幸福的世界, 另一个是自己看到的不幸福的世界.

世界的恶意是存在的, 而且很大部分世界的恶意, 其实是别人对你的恶意. 当你选择帮助别人的时候,  当你不选择帮助别人的时候, 只要你与人打交道, 这种环境都会靠近你.

美好的生活是快乐的, 同时也是痛苦的. 因为你不知道它什么时候会离你而去. 因为不曾拥有过, 数据不足, 而无法做出比较准确的判断. 恐惧判断, 是每个人都有的, 只是每个人的看法不同, 而且对出错之后的处理能力不同, 所以, 每个人决定的轻重也是不同的. 而我喜欢判断, 喜欢分析, 同样的我也恐惧失败.

从以前的无所谓, 到对世界感兴趣, 对人类感兴趣, 这种体验, 我也说不出来是什么! 所以我最近经常上知乎, twitter, G+, v2ex 我希望能够找到, 我到底喜欢什么样的人? 到底该向什么样的人们学习, 努力成为什么样的人?

北京

刚到北京的时候, 对这儿期望很大的, 但是当我了解之后, 然后再结合人来想的话: 或许每个地方, 其实都差不多, 都有自己独特的魅力所在.

北京有CBD, 高楼大厦, 也有乡间小路, 地摊, 垃圾. 世界是相同的, 只是人们选择在哪儿生存而已. 因为人, 所以城.

北京也有很多很赞的地方, 当然, 基本上是与人相关的. 我去过香山, 索道很赞, 去过故宫, 感受到了时代, 去过水立方, 感受到了城里人的生活. 都很不错, 这是在老家的小城市里所体验不到的. 大城市的味道.

同样的, 只有在大城市的能玩的游戏Ingress, 我真是非常喜欢. 我因为它去过颐和园, 去过清华北大, 和那边的博士/学生, 一起吃饭, 感受他们的生活, 以及他们的努力和能力, 认识很多工作, 结婚之后仍然在玩Ingress的朋友. 为了玩游戏, 翻墙. 为了玩游戏, 坐飞机去曾经没去过的地方, 参加战争. 为了玩游戏, 出国参加战争. Google在游戏方面, 基于lbs的游戏, 走在了世界前面, 我很期待, 未来的vr和lbs的混合, 真正的游戏人生.

同样的, 在北京, 我感受到了什么叫差距. 在我们那 500 可以租一套农村的房子. 在西安, 可以租一间卧室带独立卫生间和厨房, 在北京700元,只能住地下室. 而我现在就在地下室住, 气味有点土味, 偶尔有蟑螂出来散步, 卫生间20多人用一个, 洗澡的也一样, 而且都要交钱.地铁坐一次就能在家乡吃一碗饭, 每天做地铁都够午饭钱了. 而且, 同样的牛肉面, 在北京都是翻了三倍.

最后, 美好的生活仍然在前方, 你需要更加的努力前行.

 

时间好快, 转眼间已经学安卓半个月了

已经半个月过去了, 不知道我学的怎么样, 反正我自己感觉差的太远了. (QAQ)

不过, 最近过的很充实, 虽然比较累, 但是感觉每一天都很努力. 如果我能够经常保持这样的状态, 或许在未来的某一天, 我真的会喜欢上自己也说不一定.

不过也渐渐的了解到了安卓, 了解到了Google在安卓的努力, Material Design 也非常赞, 很喜欢那种给人一种很清楚生动的设计.

不过可悲的是, 安卓比web前端更加的碎片化, 各种屏幕适配. Web虽然浏览器不一, 但是已经有了各种优秀的库, 用来轻松解决浏览器兼容的问题, 虽然我现在还没有碰到大的兼容问题(其实是因为, 我只用过虚拟机和自己的手机), 没有碰到平板什么的. 估计之后会适配起来比较麻烦, 至少我在手机上看到的和虚拟机上看到的差距比较大. 只能祈祷了…

前两天休假, 就花了半天的时间看视频, 学习如果做小项目, 结果都太难了, 我只能挑一个简单的做了. 然后就做了一个单页面的2048小游戏, 有空玩玩也不错, 不过UI我也是没法看的下去.

2048 这就是那个游戏了, 有兴趣的可以玩玩, 顺便给点评价, 我想要知道自己还有什么不足的地方.

最后, 明天的世界, 我会正面上自己…

稍微折腾下博客

主要做的事情就是把主题换了一个颜色鲜艳点的,然后就是因为多说的头像点击起来无法跳转,而且很多博友都已经使用Disqus,所以我就也来试试这个,顺便把多说暂停使用了。

最近也过得比较充实,每天都有新的东西需要学习,有接触到了很多新的名词。比如:

  • Material Design
  • Android Studio
  • ADT
  • SDK
  • NDK

以上这些,都去稍微的了解了一下…… 发现自己要走的路还很远啊,一个小小的APP目前都很难写出来。

这个新主题我还是很喜欢的,因为使用了 Google Material Design 设计规范,有一种很特殊的时尚感以及年轻感(或许会有自豪感?)。Google 在世界上还是比较良心的公司,当然弱小的公司是打不过流氓的,所以只能妥协了。

最近感觉自己好像对于一些Android上的小东西能够参与开发了,但是不知道做个什么,估计比较大的项目还是有点困难的,哪位朋友有不错的开源项目需要帮手可是试试找我,虽然我不一定能够帮上什么忙,但是我会经历努力不添乱的(来个Master带我飞);

明天就是端午节了,最近越来越发现,真正和家人在一起的日子估计会变得越来越少。我要更加努力,争取能够自由的工作和生活,而且要能够经常陪家人,当然也包括未来选择和我一起在这有趣的人生之路上前行的另一半。

还有就是,不知道是不是越来越热了,不出去的话就会穿的越来越少,甚至有时候是拖鞋内裤。难道这是我向猿类进化的信号吗?会不会以后直接在家里裸体,然后我就走上了暴露狂的不归路了!(/▽\=)

渐渐的越来越了解自己,渐渐的越来越接近自己…… Are you ready ? Become the Programmer.