个人博客-ASE课程最后一周总结_weixin_30525825的博客-程序员秘密

技术标签: python  人工智能  数据库  

回顾课程计划,完成程度如何?

当时的计划是学习完整的现代的软件工程知识,能够完成一个优质的软件。
能力调查表和课后期望:

技能 课前评估 课后期望 如何提升
程序理解 2 5 科研mentor监督读和修改最先进的算法代码
代码质量 2 5 高效利用时间,对于自己现在的水平,先埋头写就是了
架构设计 2 5 对于最后的团队项目,肯定需要学习开源的项目代码或者和组里其他同学学习才行,在此过程中学习成熟的代码结构设计和项目架构设计
线程进程设计 1 5 科研这边的程序跑在多个GPU上,会练习到
个人源码管理 3 5 使用git

现在看起来,学习完整的现代软件工程知识,完成一个优质的软件,基本算是完成了。比如现在对软件工程的认识,和完成的还不错的期末作业
对于技能表里的计划,程序理解能力提升,有提升,但是大概现在3-4分吧。代码质量感觉几乎没啥提升,因为埋头写代码,也不知道自己写的好不好,基本上就是能完成功能就万岁。架构设计提升挺大的,多亏了组里beta阶段来了王子博同学,跟他学习了很多。现在大概3-4分。线程进程管理有提升,现在大概2-3分。个人源代码管理基本完成,代码质量参考小组作业的开源代码同样的,也是子博给了很多的指导。

你在课程开始快速浏览了《构建之法》,提了 5 个问题, 请回顾那些问题, 自己回答它们。

在第一章的末尾,讨论了bug和feature之间的关系,有些人知道有些产品的质量不如另外一些好,但是也会选择那些不够好的产品,因为它们满足了顾客的需求,产品是否有理想的销量是和能否满足顾客需求直接相关的。在暑期科研中,小组研究的课题是去寻找深度学习库代码之中的bug,但是深度学习中某一层的bug有可能并不会对最后的预测准确率有很大的影响(此处bug指和理论算法中实现的函数有区别,错误的实现代码),因为在训练的过程中可能这个层的bug会起到像新的激活层一样的效果,甚至可能对预测正确率有好的提升。那么这种bug需要解决么?

现在感觉起来,bug是和软件不可分割的,软件中几乎不可能完全没有bug。bug的解决要考虑到成本。比如我们的项目中有一些已知的不足,或者没有实现的功能,但是考虑到同学的时间和项目的进度,只能砍掉。开发新功能和解决bug之间,工作量和代价之间,都要有取舍和平衡。
***

在第十章中提到,我们有不同程度的典型用户,有的对软件的专业程度需求高,有的需求低,这个在现在的软件产品的对应中,是否是家庭版、个人版、专业版、企业版等等区分呢?如果可以让比较弱需求低的用户在使用过程中不会有那种软件认为我太弱了不给我全部的功能一类的感觉呢?

用户选择合适自己的版本使用起来也会更流畅。新手不需要那些很复杂的但是根本用不到的功能。
***

在8.6.1以及14.1.2分别提到了项目目标预期与进度调整、开发过程的可见性的问题,在第七章微软MSF中也提到了给员工足够的信任的问题,如果任务紧,赶时间,项目参与人员也在尽力做,但是因为能力不足、或者压力大导致拖延症等等,畏惧汇报进度;这种情况下是应该要求让员工无论做成什么样都如实汇报,还是设置好ddl中途就不再追问了呢?

一定要定时汇报进度!当过PM之后对这个有了很多的体会。有衡量的标准和可靠的spec,即使员工遇到了困难进度缓慢,也一定要如实汇报,方便管理者心里有数,可以处理和协调。


私人问题,在14章质量保障中提到了若干互联网公司的安全事故导致用户用户名、密码泄露,作为软件开发很资深的研发总监,对于个人用户的密码设置问题,是否有什么建议?

是的,有很多软件开发公司对用户的密码保护不好,对于我们的密码没有进行合理的加密保护,甚至前一段时间的12306抢票软件明文密码泄露的问题。作为用户,我们应当分级设计密码,重要的软件用复杂的密码,不重要的软件可以用同一套密码,泄露了危险也不大。

看看还有什么新的问题产生,请列出来,建议列出 2-3 个新问题。 可以让老师和助教来回答


  • 非程序员出身的PM会在工作的过程中出现各种问题,为什么还会有很多大公司很多很重要的岗位的PM是属于不会写代码没有工程经历的呢?为什么不选择那些有代码经验的人做PM呢?
    ***
  • 作为资深的软件工程师,对于之前讯飞在demo中使用人工翻译把印度人的口音问题解决记录成文字版再使用讯飞自己的翻译和朗读软件完成,讯飞自己在宣传的过程中比较清楚各个技术的具体情况,在合理的范围类进行宣传,而翻译员曝光后媒体对其大肆批评的情况怎么看?软件的在一定程度上的舞弊是属于可以接受的呢还是尽量避免的呢?怎样避免被媒体抓住鞭子?

    你看了一些软件工程的文献, 你的团队也做了一两次 “事后诸葛亮”分析, 可以再去看一遍,现在有什么新的感想?

    第一次的事后诸葛亮分析是自己写的,第二次也参与了很多,我觉得当时的想法对于我的成长和认识有很大帮助,现在看起来也觉得收获很大。

    对比一些技能评价表,你有什么提高? 还有什么收获是不能用数字衡量的?

    在第一部分有写。主要是对完整的软件开发走了一遍流程,对于管理一个小团队,作为PM和作为Developer的体验和收获都是很大的,了解了情况,对于以后如果想从事软件开发,应该会更加心里有数一些。

    设想一年之后, 你到了你职业发展的下一个阶段(高年级, 读研,工作),回头看这门课, 你对于这门课的教学方法, 老师和助教的工作,和其他课程的衔接,有什么意见和建议?

    如果可以的话,可不可以尝试下增加以下功能?因为作为一个计算机科学的同学感觉下面的能力被培养的很差:
  1. 代码质量。当时只在最一开始学第一门C语言的时候老师有讲一些,但是那是基础的代码质量的规矩。能不能讲解一些优秀的代码,对于如何安排函数的文件、位置、配置等待来进行讲解。
  2. 架构。这个我基本完全没学过,之前完成某个功能可能都是简陋地完成,不太知道现在广泛通用的库函数和规则。比如写一个完整的网页,可以使用vue进行前端书写,django完成api的server如何配置,数据库可以放在某个服务器上,不停工作的引擎对数据库的内容进行完成可以放在别的服务器上,工作的方式是直接和数据库沟通。当时子博指的方向和指导文档很大地帮助了我们,但是如果他不在我们组里,我们可能会用奇奇怪怪的低质量方法完成。感觉架构的知识我在科大的培养体系里欠缺太多了

转载于:https://www.cnblogs.com/qiweizhen/p/10274290.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30525825/article/details/99034442

智能推荐

centos7简单安装_centos7简易安装_GuessHat的博客-程序员秘密

centos7简单安装安装包:链接:https://pan.baidu.com/s/1wgLbvCuLG2SDdvqB0tuyBQ提取码:1b2q进入软件选择选择带GUI的服务器三个带感叹号的都进去一下,然后不进行修改,让警告消失然后点击开始安装创建用户和密码密码较弱时连点两次就可以进入创建普通用户安装完成后初始化黑窗口和网络设置详见:CentOS Linux7虚拟机初始化操作...

Ubuntu启动黑屏解决方案_ubuntu启动后黑屏_cjn_的博客-程序员秘密

在启动Ubuntu的时候出现黑屏的情况,是因为升级了内核导致显卡不兼容,启动的时候应该告诉内核不要加载显卡:sudo vi /etc/default/grub找到quiet splash并在后面添加nomodeset。然后输入sudo update-grub更新了grub配置文件后,重启即可。

MDK 5 代码折叠功能_deepwater_zone的博客-程序员秘密

MDK 5有代码折叠功能,这个功能默认是打开的,但是有时候代码折叠功能调不出来,这里介绍一下MDK 5的代码折叠功能手动打开的方法:1、打开程序文件,【鼠标右键】—>【Outlining】—> 【Show All Outlining】;2、然后程序文件右侧就会出现折叠按钮,这样就可以【折叠代码】了。...

vue+element-ui select多选框赋值之后触发change事件和remove-tag事件_蜡笔小心丶的博客-程序员秘密

由于业务需求,需要在页面上使用element-ui的select多选框的方法,当select为空时,change事件和remove-tag事件可以完美呈现,但是当select中赋值后,change事件和remove-tag事件可以触发,但是页面上没有反应。<el-select v-model="debt.borrowers" filterable multiple placeholde...

随便推点

linux等待队列wait_queue_head_t和wait_queue_t_颇锐克的博客-程序员秘密

等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待

mybaits log 插件无法显示sql语句_城南蝈蝈的博客-程序员秘密

原文链接:这里0.前言mybatis log插件是一款可以在mybaits中显示你最终运行的sql语句的插件,好处就是可以直接看到操作数据库的sql语句,不用再去挨个看参数了。但是从2020之后这款插件收费了。破解版下载地址:https://box356.lanzous.com/iJ86hm00mba1.遇到问题这款插件一开始装的时候,运行测试文件,什么都不显示,一片空白,我一直以为是插件版本的问题,到网上下载了几个不同版本还是一样不显示,后来发现跟插件没有关系,是配置的问题。2.解决办法打开

怎样查找计算机cpu的频率,Win7电脑查看CPU型号和主频、缓存、接口等参数的方法..._Jakcwin的博客-程序员秘密

CPU作为计算机的大脑对电脑的工作是至关重要的,那么怎么查看CPU的型号以及有关的参数信息呢,比如CPU核数,CPU主频,CPU一级缓存及二级缓存,CPU插槽接口类型等等,怎么查看CPU型号和主频、缓存、接口等参数,下面和大家讲解一下查看CPU型号和主频、缓存、接口等参数的方法,仅供大家参考。工具/原料CPU-Z,鲁大师等工具怎么查看CPU型号和主频、缓存、接口等参数1、目前市场上见到比较多的CP...

Java封装之包_小宝是狗子啊的博客-程序员秘密

一、打包的意义标准java库是由一系列包组成,包括java.lang java.util java.net等等标准java包就是层次型包结构,就如同硬盘上嵌套的子目录一样,我们可以使用嵌套层次结构来组织包java的包是为了更好地规划代码,防止命名冲突和混乱。所以java出现了打包机制当把类组织起来放进一个包内之时,也就给包中的成员赋予了相互访问的权限,您就拥有了该包内的程序代码包访问权限吧类聚集在一个包中这一做法提供了意义和理二、Package声明包java程序猿都可以编写属于自己的ja

【题目】cv2.resize图像缩放函数的使用_C小C的博客-程序员秘密

【时间】2018.09.22【题目】cv2.resize图像缩放函数的使用目录一、概述二、语法三、各种内插选项的效果展示一、概述cv2,resize用于对图像进行尺度缩放,可以使用各种内插方法进行处理。二、语法 cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst interpolati...

推荐文章

热门文章

相关标签