一、个人总结
自我评价表:
类型 | 具体技能和面试问题 | 现在的回答 | 毕业时找工作 |
---|---|---|---|
语言 | 最拿手的计算机语言之一,代码量多少? (偏web前端, PC/Mobile App) | 前端HTML,代码量1000左右 | |
语言 | 最拿手的计算机语言之二,代码量多少? (偏后端,数据处理,网站后台,机器学习,等) | C、Java,代码量不清楚 | |
软件实现 | (阅读代码的能力,实现,单元测试) 你有没有在别人代码的基础上改进,你是怎么读懂别人的代码的,你采取了什么办法来保证你的新功能不会影响原来的功能? 你在开发中碰到最复杂的bug是什么,你是如何解决的? 这个bug出现的原因是什么,你在将来应该怎么去避免bug再出现? | 有,参考代码规范读懂,多做单元测试来保证功能不受影响。复杂的bug还是关于算法理解的多吧,需要学习的知识还很多。 | |
软件测试 | (测试方法、测试工具、测试实践、代码覆盖率) 你如何测试你自己写的代码? 你如何测试别人的代码? 你掌握了多少种测试工具和方法? 你写过测试工具么? 你如何对一个网站进行压力测试和]效能测试? 你如何测试一个软件的人机界面 (UX/UI)? | 用具体的测试工具来测试代码,像eclipse上就有自带的测试插件(如JUnit),没有写过测试工具。 | |
效能分析 | 效能分析,效能改进 你写过的最复杂的代码是什么? 你是如何测量和改进它的效能的,用了什么工具,如何分析的? | 没写过什么太复杂的代码,复杂的代码都有其生成的道理。 | |
需求分析 | (需求分析,典型用户,场景创新) 你做过多少个有实际用户的项目,用户最多有多少? 你的项目有什么创新的地方? | 还没做过有实际用户的项目,目前软工课上开发的微信小程序有望发展实际用户,创新的地方主要在于微信小程序不占用手机内存,用完即走的特点吧。 | |
行业洞察 | 你最感兴趣的领域是什么? 这个领域过去10年经历了哪些创新? 你分析过这个领域前10名产品么? 请分析一下他们的优劣,你要进入这个领域,应该如何创新? | 我最感兴趣的领域:AR,是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。这种技术1990年提出。随着随身电子产品CPU运算能力的提升,预期增强现实的用途将会越来越广。 | |
项目管理 | 你参与过项目管理么? 请描述一下两个当下流行的开发方法在你的项目中的具体应用情况;请问你如何决定项目中各种任务的优先次序,有什么理论来支持你的做法? 如果你突然发现项目不能按时完成,你作为项目领导,有什么办法? | 无 | |
软件设计 | 你做过架构设计,模块化设计,接口设计么? 请说明一下你为何是这样设计,你比较过什么不同的设计方式,你的设计取得了什么结果? | 无 | |
质量意识 | (代码复审代码规范/代码质量) 你是怎么做代码复审的,你加入我们团队后,能帮我们提高代码质量么,请具体说怎么提高? | 参考代码规范,做适量的单元测试,再做整体的代码测试。能,严格参照代码规范,项目完成过程中就要不到那对其进行单元测试。 | |
工具/社区 | Software Tools (performance tool, version control, work item, TFS) 你在各种开发平台(web, linux, PC, mobile, machine leaning) 都使用过什么样的工具,自己写过什么工具来改进工作效率?给社区贡献过什么工具和代码?Github有分享代码么?你写的技术博客坚持了多久,读者最多的是那一篇? | 工具:Visio Studio, Dev C++, Eclipse, Netbeans, Gitee...... 没有贡献过,Gitee上有分享,博客都是作业要求,读者最多的也是作业内容。 | |
团队协作 | Work with others (协同工作,提供反馈,说服别人) 请描述你在项目中如何说服同伴采用你提出的更好的解决方案,或者你如何听取了别人的意见,改进了自己的方案?你如何说服懒惰的同伴加紧工作,实现团队的目标? | 讲道理嘛,详细地画出ER图草图,详细阐述各个类和对象之间的关系,谁的方案更有实践意义就听取谁的意见。其实很少遇到团队里有懒惰的同伴,大家都有惰性,Deadline是第一生产力。 | |
理论素养 | 你上过什么数学,计算机或其他理论课,请举出具体的例子,说明你学到的理论知识如何帮助你解决实际问题。 | 理论课:高数、线代、概率论、数构、计组、离散......举一个具体的栗子:编码的时候给数据建立具体的模型和关系,所学的数据结构这门课就能够提供很大的帮助,能够利用栈模型、队列模型等等。 | |
自我管理 | 全年级你专业排名多少?你从刚入学(大学一年级)到现在的排名有变化么? 如何解释你的排名的变化? | 前二三十左右,排名变化不大。大一时候大家都比较努力,我也比较努力,到了后来大家相对懒散了,我也懒散了下来,所以排名变化不大。 |
二、回答问题
结合自己提出的问题进行回答:软工网络15个人阅读作业2
问题一:
- P75:
结对编程让两个人所写的代码不断的处于“复审”的过程,程序员们能够不断地审核,提高设计和编码质量,可以及时发现并解决问题,避免把问题拖到后面的阶段去。
- 在此,我有些疑惑:结对编程这种模式是否不大适合我们这些在校学生,而更适合上班族?
- 就我们在校生而言,排除上课时间,课余时间相对零散,而大部分学生都有自己的安排。按照结对编程模式,结对的两人必须同步同台共舞,这就需要至少一人改变自己原有的计划。再者,每个人的编程能力不同,像之前团队作业中就有不少的人选择抱大腿,并美名其曰为结对。在此过程中,这部分人仍然得不到足够的锻炼。
- 而就上班一族而言,一周工作5天,每天固定时间上下班,且能坐在同一间办公室的程序员大体上都有相当的编程能力。这样就能很好的解决以上问题。
答:
- 时间就像海绵里的水,或者牙膏管里的牙膏,挤一挤总会有的。
- 作为在校学生进行结对编程,最重要的还是要两人商量后,合理地安排各自时间。不过,上班族相对在校学生而言就有更规律更有效的进行编程时间的安排,这是必然。
问题二:
- P109:
冲刺到一半的时候,产品负责人突然发现要马上做重要的改动!或者某个大佬要看牧歌不在计划中的功能的演示,怎么办?这种情况非常考验Scrum Master。如果一个运动员在跑一百米冲刺,但是跑到一半的时候,领导突然想看一百一十米栏的比赛,前面马上回摆起栏架,大家要准备8步上栏!怎么办?
有正常头脑的运动员和教练员会说:去你的,要改主意,也要等到老子冲刺完了再说啊!
- 我的疑惑是:产品的冲刺以一百米冲刺为比喻是否不够恰当?
- 个人认为:产品要做重要的改动和大佬要看功能演示,二者的优先级不同。如果只是不在计划中的功能演示,大可以冲他喊:“等老子冲刺完了再说!”但如果是重要的改动,我认为不得不让开发者中途停下。也就是说,重要改动的优先级高于功能演示。
- 若需要在做出重要改动时,Scrum Master 及时让开发者停下,等到整个冲刺过程结束后再提出。产品出现了一系列诟病,必须从头再一次准备冲刺,试想开发者会不会有“怎么不早说!”这样的抱怨?这样岂不是浪费时间与精力,更打击了员工积极性。
- 以我之见,当必须要停下时,该停则停。Scrum Master应做的是为冲刺者争取足够的时间并为其加油打气。
答:
- 或许不够恰当,但这也体现了冲刺过程的特点。
- 例如我们现阶段在做的微信小程序,虽然已经完成Alpha阶段,实现了主要功能,但我们都知道它还存在着不足有待完善的地方。当初限于时间紧迫,我们也只能硬者头皮说:要改主意,也要等到老子冲刺完了再说啊!
问题三:
- P238:
在设计软件界面时,我们的设计师经常会画新功能的UI设计图,来征求大家的意见。我注意到大部分设计都假设用户是第一次使用产品,所以没有任何积累的文件、照片、处理过的图像、曾经做过的选择等数据。我同意第一印象很重要,但是当用户已经是第N次使用你的产品时,你的UI能否为这些用户提供方便呢?
- 我存在的疑问是:当产品发布过一段时间,用户已经使用过N次,是否就意味着UI界面不能再做大的改动,而要习惯于之前的界面风格?
- 在阅读全书之后,我看到在第16章提到创新的概念。那么在UI设计上是否也可以大胆尝试创新呢?若我公司开发的产品一直沿用之前一贯的风格,而有后来者大胆尝试了新的界面风格。那么不谈功能设计,就用户体验的角度而言,会不会因为用户更适应新的产品而放弃现有的惯用产品?
答:
- 也许创新并不意味着颠覆吧,用户使用过N次,说明用户已经习惯了当前的UI设计,如果要谈创新,还是要在遵从用户习惯的基础上吧。
三、再提问题
问题一:
- P7:
说到商用软件和爱好者写的程序的区别,我们还可以看看这个例子:
如果一架民用飞机上有需求,用户使用它的概率是百万分之一,你还要做这个功能么?你会选择:
1、根本不考虑
2、如果没时间实现这个功能,就算了
3、做了,但是不用告诉用户
4、做了,而且不厌其烦地告诉用户如何使用
- 在本段文字的下方作者提到了飞机安全功能的问题,但我的疑问是:有需求的使用概率极小的功能就一点是至关重要危及生存的功能吗?
- 实不相瞒,在课堂上我第一次看到这个例子,我的选择是 1、根本不考虑,因为我没有想到这样的功能是直接关乎到用户利益的,我以为一款软件的开发就应该满足大多数用户的需求,并且保证使用率高。
- 假设我在使用某宝时,选择将商品添加进购物车,但每次该系统都不厌其烦地问我是否确认,并且不厌其烦的告诉我该如何退货,那我大概会果断卸载它吧。
问题二:
-
P52-54:
-
这一节我来回看了几遍,我看作者在书中举了魔方案例,将玩魔方类比了编写程序。列举了魔方技能有哪些层次,主要说明如何提高技能及锻炼技能。
-
所以,技能的反面究竟是什么呢?
问题三:
- P55:
如果你是病人没希望你的一生是下面的哪一种呢?
a)刚刚在树上看到你的病例,开刀的过程中非常认真严谨,时不时还要停下来翻书看看……
b)富有创新意识,开刀时突然想到一个新技术、新的刀法,然后马上在你身上试验……
c)已经处理过很多类似的病例,可以一边给你开刀,一边和护士聊天说昨天晚上的《非诚勿扰》花絮……
d)此医生无正式文凭或正式意愿的认证,但是号称有秘方,可治百病。
- 想知道作者会选择哪一位医生呢?
- 也许大家都会倾向于第三位医生,我也不例外,但是在现实生活中我谁也不敢选(好的,我知道没有其他选项了)。在我看来,一名合格的医生在成熟操刀的同时也应该给患者足够的安全感,至少别和身边的护士闲谈吧。
- 正如一名合格的软件工程师,在成熟编写程序的过程中也应该给客户踏实可靠的感觉,至少别边敲代码边看动漫吧。
问题四:
- P160:
软件项目计划的一个重要环节就是估计项目各类工作(特别是各种功能)所需的时间。
- 估计这两字说起来容易,如何能够真正做到准确的估计的?
- 当我们团队进行Alpha阶段冲刺过程前,开了一个多小时的站立会议讨论我们Alpha阶段应该完成的功能。我们删减了我们的杀手功能,减轻任务,就为了能够顺利度过Alpha阶段。
- 但是一开始上手时我们就遇到了困难,一些简单的问题我们却花费了大量的精力去解决,以至于我们到Alpha阶段结束时没有如期完成任务,勉强实现了其核心功能。
- 所以所谓的估计,应该如何做到准确的估计呢。
问题五:
-
P183-185:
-
问一个无解的问题:为什么没有人再情愿做项目PM?
-
Alpha阶段我见过了许多类型的项目PM:有些能得到队友的支持,开发过程顺利;有些团队成员之间意见,矛盾鲜明;甚至作为项目PM就是一带五,为了队员都能顺利拿到学分。
-
不可否认,在一个团队之中,项目PM所承受的压力最大。不仅要适当安排任务,督促大家完成,还要努力协调队员之间的矛盾。必须同时具备创造力、亲和力、决策力,还考验其承受压力的能力。所以没有人再情愿做项目PM也是可以理解的。