希望我能帮助你:关于软件开发的建议

文章目录

  • 关于学习方法、动手能力和职业发展
    • 给A同学的话
    • 给B同学的话
    • 给C同学的话
  • 关于软件发布
  • 工程实践的要求
  • 磨刀不误砍柴工:设计先行
  • 软件开发的分工
  • 我是谁

题图来源:https://nerdshizzle.com/product/funny-software-developer-job-description-t-shirt/

开学了,汇总一些我在博客园上给大学同学提的建议,希望能就软件开发的问题,帮到同学们。感谢《构建之法》一书的作者邹欣老师和策划编辑周筠老师搭建了这样一个平台,感谢他们的工作。

关于学习方法、动手能力和职业发展

给A同学的话

同学你好啊,我是一个非科班出身但是自己选择了做计算领域工作的人,我希望能通过我的亲身体会,给你实在的鼓励。

1.关于计算类的工程实践,是有一些方法和技巧的。可能大学老师不一定能用比较好的方式教你。没关系的,可以向工程界朋友请教。咱们有非常开发的计算类互联网资源,可以借助github、stackoverflow这样的平台。具体来说,你提到的对IDE的使用,是一个“无他,唯手熟耳”的过程,建议可以去看IDE的官方手册,以及所用语言的官方平台,当然最好看英文资料啦。也可以看一些视频资料,学习如何使用,多用多练很快就好了。至于其他工程的设计、开发和测试过程,也是需要长期积累,不要担心啊。

2.软件开发,最重要的过程是培养自己的抽象思维,不知道你是否经历过系统的计算思维的课程,如果没有,建议你看看清华大学出版社徐志伟等老师写的《计算机科学导论》这本书,可以参考我的文章 【计算机教育】看《计算机科学导论》,发展计算思维能力 ,看看自己在思维方式上的问题,然后再逐步培养自己的软件需求、设计、开发、测试等能力。请一定记住,软件设计这一步非常重要,后面的编码是基于设计的。

3.关于你提到的想做计算领域测试的问题,非常好,软件测试是软件质量保证中最重要的一个方面,这是非常重要的,目前国内的软件测试和软件质量并不高,你可以在这个领域里好好发展。当然软件测试也需要很强的软件设计和开发能力。

4.欢迎你到github上来看我分享的一些内容,也是bettermorn(更美好的明天的意思),我希望能帮到你。计算领域里有很多很有趣的事情,希望你能享受hard fun,我们一起来探索吧。

给B同学的话

感谢你的真实总结。希望我的以下文字能给你一些帮助。
软件开发中的学习比较复杂,要牢固掌握一些理论和方法论,需要把所学变成自己的知识,所以建议以后学习以后,试着用自己的方式做一个宏观的系统总结。比如对面向对象的学习,可以做以下总结:
面向对象的本质是什么?解决了什么问题?其与面向过程的区别在哪里?面向对象方法的几个特点解决了哪些问题?适用于哪些场景?

具体的一些内容,可以参考我的文章

【实战指导】暑假了,找问题,做作品

https://mp.weixin.qq.com/s/Mi_BtyDrRZzWEnnKu-0-Jg【实战指导】寒假了,找问题,做作品【1】:找问题
【实战指导】寒假了,找问题,做作品【2】:开发和使用模型

【脑洞大开】如何学习新的科学理论和关键技术

欢迎你与我交流。

给C同学的话

谢谢你的真诚而真实的总结。综合你的描述,我觉得可以从以下维度发展自己。
1.关于沟通和协同能力
软件开发是集体项目,非常需要锻炼良好的沟通和协调能力,你已经迈出了很好的一步,继续努力吧。沟通和协同有一些基本方法,可以去寻找相应的资料。简单举例,比如沟通,可以考虑,不同事情沟通的频率、方式等等。
建议可以看看我的文章。
【实战技能】关于程序员的沟通技能

2.学习时如何把握本质
看到你谈到学习面向对象的问题,以后可以尝试,学习后,试着用自己的方式做一个宏观的系统总结。
面向对象的本质是什么?解决了什么问题?其与面向过程的区别在哪里?面向对象方法的几个特点解决了哪些问题?适用于哪些场景?

3.如何总结软件开发过程的经验和教训
建议思考下:
软件开发是个完整的过程,从问题分析到设计、到开发、到测试,每一个环节都很重要,每一个环节除了良好的思考方法也需要应用工具。问题分析和设计是开发的关键和基础,再小的项目也需要这个过程,以后可以注意在这个环节多花些时间,“磨刀不误砍柴工”。当然开发过程中写好代码,是需要代码量熟悉开发工具,熟悉语言的使用情况的。

关于软件发布

请问,如何区分新功能和新特性(function and feature)?建议说明两者差别,这样用户可以理解版本发布的内容(release notes)
另外建议用行业通用的版本说明,可以参考这里。

major.minor.maintenance.build

major是最大的版本编号,minor为其次,maintenance为维护版本号,某些软件可能再细分作build,为更小的版本编号。例如:1.0.0.1

major:主要版本号
minor:次要版本号
maintenance:维护版本号(仅限bug修复)
build:非发布版本号,内部版本号(或源控制版本号),通常自动增加

可参考链接 Firefox Release Notes/

谢谢回复。我前面指出这些问题是为了提醒同学,做工程要求准确、清晰和完备。
请注意下次发布的时候,写清楚相关内容。
另外,关于发布内容条目,可以参考github的种类

工程实践的要求

解释下,课程提出的要求并不是职业标准,而是工程实践必须要达到的目标。另外说一下,根据美国K-12科学教育框架和计算机科学框架,很多地方米国的中小学科学和工程实践要求确实比我们大学的要求还要高一些。可参考A Framework for K-12 Science EducationK-12 Computer Science Framework

加油吧,同学们,计算科学和技术发展的黄金时代,需要你们的贡献。

磨刀不误砍柴工:设计先行

友情提醒同学,要做好软件开发,重要的环节在于设计,敲代码是开发实现,如果在设计环节上多花些时间,也许到开发实现就没有那么难。至于要提高开发的效率,“无他,唯手熟尔”。熟悉语言语法,熟悉开发工具,多练练就没问题了,毕竟,现在软件开发的条件,比以前好很多啦。
继续努力吧!学会熟练使用开发工具,多花些时间做设计。

软件开发的分工

问题:
在真正的软件项目开发中,前后端对接具体是怎么做的呢?有没有一个规范的流程去确保前后端连接的正确性?或者有没有专门的组内几个成员来负责对接这部分呢?

我的建议:

虽然业界很多公司提出了前后端分离的方法来做一定分工,但是作为业界人士,我更建议基于功能模块分工,每个人完成相应功能的前后端以及数据库设计,而不是前后端分离,因为从某种角度来说,前后端分离并不能提高工作效率反而恰恰相反。

另外,友情建议,不要太强调前后端,作为一个软件开发者,一定要有能力做一个完整的系统,即使前端、后端和数据库有不同的擅长点和不同的偏好。

我是谁

科技工作者,独立顾问,“以我之爱心,以我之专业,以我之真实,助您成就有趣的事业”。曾在HP和盛大遇见良师益友,有幸获HP CIO奖。作为HP 资深技术专家和内部技术讲师,也有幸在HP硅谷和休斯敦工作。积极地参与学术社会活动,是中国人工智能学会高级会员,美国计算机学会 ACM 高级会员,ACM SIGCSE 美国计算机学会计算机教育研究中国分会理事,中国计算机学会CCF走进高校讲者。我也牵头了一个开发者社区DevHub。擅长将新兴计算科技的理论和关键技术应用于各种服务,成功为数十个创业创新企业落地数据分析和人工智能产品设计和解决方案,行业涉及教育、医疗养老、工业制造、证券、新兴商业服务、信息产业、文化创意等。喜欢有感而书,在国内外会议及杂志发表人工智能及计算类教育及技术类中英文论文多篇。

(0)

相关推荐

  • C# 面向对象

    面向对象: 面向对象方法是软件工程.程序设计的主要方向,也是最有效.最实用和最流行的软件开发方法之一. C#是完全面想对象(OOP)的程序设计语言,具有面向对象程序设计方法的所有特性. 面向对象方法的 ...

  • 面向对象语言实现健壮性要遵循的原则

    健壮性又称鲁棒性,是指软件对于规范要求以外的输入情况的处理能力.所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式. 虽然软件需求是由用户提出的,但是并不是 ...

  • git使用教程9-pycharm 使用 tag 打标签

    前言 当我们的代码完成了第一阶段的需求,版本稳定后,希望能出个稳定版本.于是在 commit 后需要打个 tag 标签,也就是我们平常说的版本号,如v1.0版本 本篇讲解如何使用 pycharm 打 ...

  • 软件开发有什么作用·

    前几年,模板网站和现场软件开发爆火,如今却销声匿迹,人们纷纷放弃现成软件,转而青睐于定制开发.为什么呢?        因为定制软件相比于现成模板软件,可以大大提高资金使用率.提高员工的工作效率.降低 ...

  • 让开发者相见恨晚?!华为云软件开发云实现云上敏捷开发

    [51CTO.com原创稿件]弗吉尼亚鹿是现存最古老的一种鹿.这并不是偶然的,而是因为350万年来,这门优雅的物种延续了一种有效的生存办法--它们保存了灵活的本性和迅速适应环境的能力.这恰恰佐证了达尔 ...

  • 在线教育培训软件开发未来的发展趋势

    近年来,不少公司趁着"#情绪焦虑#互联网+教育"的东风,纷纷进军教育培训行业,将"互联网+教育"做得风生水起.而在去年,突如其来的疫情又让线下课外培训机构大受影 ...

  • 关于软件开发,都应该知道的10个常识

    2011年,马克·安德列森(Marc Andreessen)写了一篇文章,预言"软件吞噬世界".观点主要有两个:第一,许多传统业务正在被软件公司所取代:第二,所有其他公司都发现,他 ...

  • 软件开发的两大经典模型:瀑布模型和迭代模型

    软件开发的两大经典模型:瀑布模型和迭代模型

  • 小视频软件开发

    一.小视频软件开发APP开发注意事项 1.视频特效一定要多 视频已经不再是记录的手段,而成了具备化妆品功能的"美貌魔镜了"请注意,一定要及时更新新的视频模板.音乐.贴纸.滤镜--因 ...

  • 短视频软件开发,最优解的开发方案是什么

    短视频软件开发的开发方法有三种,原生开发.HTML5开发和混合开发,原生开发是指根据特定的官方提供开发语言.开发工具进行的APP开发,优势在于,原生开发的短视频软件交互体验和性能是最佳的.但一般大家都 ...

  • 教育软件开发缺的从来不是机会,而是思考

    从2020年开始,教育软件从在线教育市场迸发出了"前无古人后无来者"的发展势头.无论是在行业规模或是市场热度,在线教育好像在一夕之间便实现了脱胎换骨把握住这个机会的在线教育企业和机 ...

  • 教学网站源码:在线教育软件开发的教学模式分析

    如今,随着科技和互联网的发展,智能化时代已然到来,无论哪个时代,都离不开教育,教育的话题也永远不会落后,如果没有教育,我们的素质和能力就不能得到提高,社会就不能进步,就会落后于世界其他地区.但是随着人 ...