思沃大讲堂的四周,从一个没有git账号的门外人,成长到初窥门径的“学徒”。短短四天的培训课程,课下努力却吃劲的做作业这个过程中,体会到了第一次用html、css写出页面的喜悦感、本地上传到git仓库中的小小成就感、初次用java试着TDD的方式写小程序的充实感。小白的我是个多容易满足的人(吐舌)~
bg:就像所有的小说故事一样,每段成长都是有背景线的。
在培训之前我在思沃短暂体验过,期间感受到思沃的文化与工作形态,所以在老师讲课的过程中能够切身体会到敏捷开发的原型,以及思沃的追求技术、乐于分享、共同成长的工作常态。期间同事的lesson,我是一腔热血跑去,傻呵呵听完的,之后我明白如果想要做好自己的工作,我成长的路会很长,可能得跪着走、爬着走、辛苦的走、付出巨多时间的走,才能量变达到质变成为思沃的其中普通的一员。
以上是工作的背景线,当然我自身也有bg。从上学到工作再到上学,我已经被IT浸濡7年多了。不过在code这条路上,我还是baby。只做过c++、c#项目,却连“大众款”的java、“热门款”的python都不会。有人说“没有版本控制意识的程序员不是一个好的程序员”。嗯,我就是其中一员,以此可知我的程序员文化水平,对应学历来说可能小学生在读 :-D。此外,培训期间,适逢我生活中受挫非常,很想像鸵鸟一样,“逃避虽然可耻但有用”。但咬咬牙坚持下来,因为身边的同事前辈和一起进来的baby TWer很优秀,我追赶着别人的步子走尚且不及,哪有理由逃避呢?唯有哼哧哼哧的用心听课和做作业。技术渣,但我真的是非常热爱这个行业。我喜欢用代码做出东西的快乐感,与“农药”五连绝世后的感觉可以类比。我也喜欢学习新技术,学习NLP时的热情,看斯坦福大学的machine learning的视频犹如煲好剧的一样的专注。
那我学到了什么?先来一波甜品,软知识开开胃。
文化(Culture)。思沃文化可能真是业界“奇葩”。男女比例1:1,可见一斑。女性+程序员不再被歧视,这点我在找工作的过程中明显地感受到。不会被质疑我曾经付出汗水的项目的真实性,也看到了我真的会代码而不是被推荐找人助攻。以前看到思沃的评论,有一说思沃文化像“传销”,每个人都被洗了脑。这是玩笑的说法,只能说思沃的文化太具有感染力,会感受到一群人在一起热情与忘我的工作,与互相传授经验,还会一抬头看到一个个乐呵呵工作的人(微笑时的皱纹已挥之不去)。
敏捷方法(Agile Methodology)。敏捷是个抽象词汇,实践起来却很具体。我不搬定义,也不专业的来讲。简单来说我们有迭代的开发周期,每人有每天的任务卡,有不同的角色、......
演讲技巧(Presentation Tips)。一个不会“输出”的程序员不是容易“升段位”的技术爱好者。在思沃,lesson需要演讲技巧、与客户沟通需要演讲技巧、结对编程需要演讲技巧......无处不是自我的表达输出。总的来说就是:Simple、Core Message、Smile、Contact 、story、body、relax、prepare。然后,久炼成钢。
反馈(Feedback)。程序员也要会feedback,反馈到对方心里,达到目标却能全身而退。qa反馈bug给dev、dev反馈技术问题给其他dev、一起retro项目时反馈问题......互通有无的工作环境下常常需要会反馈来推动进程。每个人接受feedback的承受力和接受方式不同,因人而异。
TW Journey。思沃学习福利,英语是沟通的桥梁。TW Journey,每个baby TWer都有一次出国培训的机会,全球的思沃新人一起学习。Jouney,我还未去过但目前会觉得是一个苦行僧的修行,会面临高强度的培训学习与英文环境的压力。
Scrum Ban。看板让开发过程像一个阶梯,不同角色一起踏实的向前一步步走。任务卡布满看板,看板分线上、线下同步更新任务状态。不同的角色一起推动任务卡直到done。简单来说这个过程就是,Backlog → InDev → Integrating → Dev Done → In QA → Done。
接下来,正餐“硬货”的技术。作为初步学习的小白做的总结,大神可以跳过以下。
Git & Github。Git如果是一门语言,Github就像IDE。在刚开始了解git时,看到一个不正经的说法,“github是全球同性交友平台”。那么git和github是什么呢?git是分布式版本控制系统,让我们一个项目小伙伴可以同步异地的更新管理代码。而在github是可以进行直接简单的应用git的平台。我们在git上创建仓库,仓库就像我们的一个文件夹,放着我们的代码等等。git的分支就像多个并行的流水线,代码会因为功能版本不同而产生分支。以上就是我才学习的理解,请多批评指正。我才使用git,如果也有和我一样刚开始学习的小伙伴可以私下交流git地址。想要深入了解的,可以和我一起学习廖雪峰的教程。
Tasking(任务划分)。软件开发应“化整为零”。引用我们志愿者的话,“将复杂任务拆分成更加易于维护,易于实现,易于验证的子任务”。
Unit Test(单元测试)。1+1 =2测试通过,!=2代码有bug。用廖雪峰的话来说,“单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作”。我们输入简单的1+1,来测试这个代码模块是否等于2。刚开始写单元测试,我犯的错误,我的小buddy教会我,单元测试不应加入自己的逻辑去判断自己写的另一个逻辑。
集成测试(Integration Testing)。机器人的各部位单元测试OK了,拼起来后能使用吗?那就集成测试吧。我的小buddy用很简单易懂的话告诉我,集成测试就是对多个模块的集成后的系统进行测试。具体做的时候,就是屏蔽集成后系统所有调用的子模块,比如将调用的函数默认给出输出的结果,再对其进行单元测试。
TDD (Test Driven Development,测试驱动开发)。执果索因逆向开发。以前都习惯开发一气呵成的写完算法,刚开始TDD时,我是排斥的,感觉被拧弯的感觉。首先写测试用例,再驱动开发。我要通过这个单元测试,于是我要开发时要有哪些功能。首先按先后层次分类罗列出所有的有代表性的用例,然后一次次驱动完善开发。有同事开玩笑说TDD还有一层功能是为了防止开发完不想写单元测试了。(⊙o⊙)…
Refactoring(重构)。功能不变前提下,代码漂不漂亮在于重构。重构是为了“易读,易维护,易扩展”。比如起名、封装、继承........好的代码方便你我他,同时也体现一个程序员的素养。
HTML。写网页的基本语言。简单来说,就是会用标签啦。按照网页设计的布局,来使用不同的标签和设置标签的属性,来实现一个网页。我刚开始犯的错误是,虽然实现了页面,但是乱用标签不用div,重写之后发现用div可以为CSS的使用铺路(⊙o⊙)哦。
CSS。HTML是身体,CSS是我们穿的漂亮的衣服。CSS可以和html写在一起,放入.html文件中;也可以单个建成.css文件中,与html搭配使用。CSS包含所有html标签元素的style。不仅美观,也可以一个大型项目组一起使用同一风格的控件样式。
以上就是我在思沃培训,线上线下学习后简单的“不正经”(旁观他人技术之专业的博客后的感受)总结。毕竟第一次认认真真的写的技术类的blog,大神请多多指正我的错误知识点,同样段位的我们握爪~~另外,我农药段位不是青铜,O(∩_∩)O哈哈~
网友评论