软工——个人总结

自我提升

团队名称

望岳

团队项目

物业管理系统

学习和使用的新软件

  • 墨刀
  • Apicloud
  • apploader

学习和使用的新工具

  • apicloud
  • apploader

学习和掌握的语言和平台

  • 语言:html5、javascript、CSS、database
  • 平台:apicloud

代码量

共计三个功能,三个功能包括20个左右的页面,代码量除去框架大概2000行代码量

学习和掌握的新方法

  • 软件测试
  • js、css的使用
  • app开发的一个方法流程

总结与展望

经验总结

  • 一个项目的开发往往是团队式的,团队之间的沟通交流显得及其重要,闷头做项目往往会在衔接的时候出现很多的问题
  • 然后,在分配任务时,一定要考虑到开发人员的能力水平,开发人员的实际情况等来合理分配
  • 最后,做项目的时候难免会遇到自己不会的地方,我们需要做的是耐心地查阅资料、询问他人,慢慢学习来解决问题

对学弟学妹的建议和告知

这个项目由于一些局限性,尚不是很完善,希望你们可以将其完善,是个很好的事,然后,在选择项目的时候,一定要看清团队成员的能力,选择合适的,切勿想象过于美好,往往做的时候就会发现很大问题,不会做,难做等等

团队分析

我们团队相处还是不错的,在开始的时候磨合是难免的,因为之间的协作也是从来没有过的,我们从最开始的萌芽阶段,磨合阶段,到后来我们团队成员都能默契合作,到达了融合阶段,随着项目的完工,我们进入了项目的整合阶段和测试阶段,测试中出现了一些bug,所以进入了修复阶段,最后再次整合,这次项目开发圆满结束。

个性发挥

对于其中的一些存在的功能缺陷以及拓展块,由于时间原因没有完善,但是解决方法和拓展块的想法我是有的,如果有需要,很乐意协作

团队项目感受

说实话,我是那种习惯自己做事情的人,但是随着前面结对编程到后面整个团队项目的开发,我感触很多,真的,一个团队中,学到了很多,专业知识,怎么相处,怎么协同合作,团队的效率往往是惊人的,效果也是亮眼的,不是有句话常说:“三个臭皮匠赛过诸葛亮”,这句话在此次团队开发中感触颇深。
附上一张团队合照

再次回答第一次作业中五个问题

  • 优化问题,引用原文:

看了邹欣老师博客,在《构建之法 部分草稿 老程序员去金融公司的故事》一文中邹欣老师提到了“过早优化”一词,我对于优化方式不是很了解,所以通过百度查询优化方式,百度给出的答案是基本都是一些优化内存、网络这些的方法,或者一些软件,比如“优化大师”、“优化精灵”等,而没有给出一些比较详细的方法方式讲解,根据我个人的经验,一个软件的优化就可以通过优化代码部分的算法、算法结构,而一个软件在开发时,开发人员通常是采用了时间复杂度较低的算法,所以我想了解一下优化的方式可以从哪些地方着手?

  • 现在来回答这个问题,我觉得优化的话一般可以从算法本身来,算法的选择,不同算法的时间复杂度也是不同的,整个结构的设计,好的结构会让服务器更快检索到需要的东西。
  • 开发选择策略,引用原文:

涉及到期末作业的问题,我们小组选择了做一款手机端app,但是在开发的时候,因为我们组员多数接触图形化界面手机端app开发比较少的,所以我们打算采用混合式开发,利用“搭积木”的方式来开发一款app,但是在开发过程中,我发现需要我们自己了解的就会相对较少,很多我们是采用别人已经开发好的模块,通过有机整合我们自己写的模块和他人封装好的模块,但是对他人已写模块的运行机制的理解不到位,我查询了网上很多贴吧以及近年中国开发环境,我了解到一部分中国程序员在开发时会采用他人已写好并且封装好的模块,从而缩短开发时期,提高开发效率,而一部分程序员还是支持原生态开发,所以自己很纠结,想请问做一款产品,是采用原生开发,还是应该混合式开发,合理去使用
已有的模块,减少开发工作量?

  • 现在来回答这个问题,我觉得我会首先选择混合式开发,毕竟这个对技术要求没那么高,开发效率也会高很多。
  • 模板问题,引用原文:

在《构建之法》第二版 第205页中,我看到“有Spec的模板么?很多同学问。似乎很多同学都有这样的希望,一旦搞到某文档的模板、某课程的ppt,事情就成功了一大半。盲目地套用最全面的模板,对项目有大的副作用。PM对此尤其要注意。其实,把上面正反的例子综合起来,就是一个模板。”我在想,我们到底是否该用模板?我们是应该去把别人优秀的套用,还是应该采用自己的方式,慢慢创新出一种好的属于自己的模板?对于这个问题,网上的呼声各有不同,有支持套用的,有反对的。而我个人是更反对的,希望可以自己创新。所以,我想听听老师关于是否套用模板的看法。

  • 现在我来回答这个问题的话,我觉得模板还是尽量借鉴为好,毕竟模板只是提供一个参考,更多的需要时我们怎么想的,怎么做的,只有了解了实质,才能写出自己所需要的。,套用模板会更限制思维。
  • 单词词频统计,引用原文:

在邹欣老师的博客中,《个人或结对编程项目 英语单词词频统计》一文中谈到了单词词频统计的方法,自己完全没看懂,在网上查询了关于这个程序的代码,也是不很理解,没思路,所以想问这个单词的形态是怎么通过程序区分的,每个单词的过去式有可能和过去分词一样或者一个单词的过去分词和另外一个过去式相同?

  • 针对这个问题,我的选择是”字典树+基数排序“
  • Boss-Driven Process,引用原文:

在《构建之法》第二版 第99页中,书中提到“老板驱动的流程 笔者在和中国一些企业的软件开发者交流的时候,听闻不少人提到开发流程事实上是由行政领导主导,或者由公司的老板驱动,我们姑且把它命名为老板驱动的流程”。那么,我们可不可以认为开发者也是在适应一个模板,一个领导者制定的模板?网上很多开发者的心声也是如此,拿着工资,适应着老板给的模板。如果,作为开发者,我们可以给老板提出一些有利于公司盈利的开发流程,但是老板不理解,不接受。我们是应该说服老板相信自己,还是只是去适应老板的模板?

  • 我觉得,适应老板的驱动就好,作为一个公司的程序员,你拿着别人的钱,你就得听别人做事,的确很多公司有那种提出很好的创意而被老板看重加薪升职的,但是,你就得首先考量你这个想法的价值有多大,可行性有多高。

《构建之法》五个新问题

问题一

  • 在《构建之法》第32页中,有这样一段话 :

”我们先进行抽样分析,在效能浏览器中开始效能分析。”

  • 我的问题是:“效能浏览器?what is this?”经网上百度,给出的不是“效能浏览器”的定义,而是关于“效能”的一系列说法,引用“ac米兰吧”中一个吧友的说法:“现在许多网站大都是使用JavaScript与使用者进行互动,以减轻伺服器的负担,因此JavaScript的执行效能,现已是用来衡量一个浏览器好坏的准则。”,根据我的理解:“效能浏览器就是浏览器的效能”,所谓效能即指为达到系统目标的程度,或系统期望达到一组具体任务要求的程度。我的困惑是:针对吧友的说法,JavaScript的执行效能是评测浏览器效能的准则,那么JavaScript的执行效能是不是就能代表浏览器的效能?其他因素呢?

问题二

  • 在《构建之法》第66页中,有提到’断言”一词,原文是这样的:

如何验证正确性呢?那就要用断言(Assert)。断言和错误处理是什么关系呢?

  • 断言?什么是断言?百度是这样定义的:断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。断言,即一些布尔表达式。那么我们什么时候用这些呢?书上该处说的是:“当你觉得某事肯定如何时,就可以用断言”,那么如果我们不是肯定某事,就不用断言了?断言只是可有可无的?

问题三

  • 在《构建之法》第292页中,有这样一段话:

首先,我相信有分工是好事,软件团队中应该有独立的测试角色。所有人都可以参与QA的工作(报告bug什么的),但是最后要有一个角色对QA这件事负责。不但角色要独立,而且在最后软件发布时,必须得到此角色的签字保证。分工是社会和行业进化的结果,开发和测试其实是软件工程的两个分支,对于不同的软件/服务,测试的方式和程度都有所区别。独立的测试角色从用户的角度出发验证产品质量。独立专业的测试等同于代表客户对产品进行认证。

  • 其实,对于软件的测试,很多大型公司都是有独立的测试团队,开发团队负责开发,两者互相联系,但明确分工,对于一个软件的测试,我有个自己的想法,除了项目开发测试组的人员,其实我们可以把顾客也带入到我们的测试中,我们的测试团队可能是从多个角度方面去测试了软件,更多的是偏向与专业性方面的测试,那么非专业性的测试呢?如果我们能把顾客也带入到测试中,通过用户对软件的使用,对软件的使用风格,功能的实现风格等等,来进行反馈,我们可以更知道顾客最想要的,我们可以给予这部分顾客相应的奖励作为测试的回报,也可以激发他们对这款软件的热情,他们觉得好用了,也可以带给身边的人,这也是软件开发的初衷把,服务于人们。

问题四

  • 在《构建之法》第366页,有这样一段话:

一个团队中,总有几个人的资历、成绩和口碑差不多,这时要怎么分出一二三呢?微软公司流传着救生艇练习(Lifeboat Drill)的办法——如果大家在海上遇险,一帮人挤在救生艇上,眼看就要沉没,必须扔下一个人下海才能得救,你选谁呢?或者是你要启动一个项目,只能带走一个人,你会带谁呢?这当然拷问大家的直觉,但直觉往往是有道理的。

  • 针对这段话中的“沉船扔人事件”,如果里面有一个人是正在为国家某项研究的青年,核心技术在他手上,这个研究很重要,另外是三个妇女加一个孩子,你会扔谁?其实是很难抉择的?但是我相信,那个青年如果面对此情况,他会自己跳下去,他为这次选择做了抉择,而针对后面启动项目带人的问题,我相信自己自己不会靠直觉来选择,我会首先根据以下准则来选择把:一、平时的业绩(或相应的成绩);二、个人的口碑,平时个人做人处事的风格;三、交流能力等等,我会根据几个方面的打分有个综合排名,再选择合适的人,对于作者说的“直觉”这个词,我觉得我的想法还是有些出入吧,我觉得“直觉”这个词语有效的是建立在平时对于一个人或者一件事的数次过程及结果评测的一种经验的基础上,直觉也是需要一定的基础的,我觉得评测一些事情或者人,还是需要有一些相应的标准或者准则来衡量吧。

问题五

  • 在《构建之法》第380页中,有这样一段话:

在大学里,网上选课非常讲究时效——因为好的课程不多,大家都想上。大家页讨论过“刷课机”、“换课机”这样的小程序是否合乎道德和公平。春运火车票也是同样的抢手,那么程序员写一些浏览器插件/专用小软件去搞票是好事,坏事,还是不好不坏?这些行为应该用哪些道德/规定/法律来约束?

  • 针对此我的疑问是:软件,我们都知道,是服务于人的,所以很多软件都是带有商业性的。在这些无数的商业想法中,可能违背道德的软件就会应运而生,这些软件一部分想开发它,一部分人愿意用它,可能它是违背了一些人的道德准则,那么到底这种类型的软件是否该产生呢?如何来评测一个软件的好坏呢?
posted @ 2017-06-21 14:40  莫先生96  阅读(375)  评论(4编辑  收藏  举报