今天想在这里介绍一下作为新人培训或者自学过程中一种很有效的方法,那就是tiny project,在Dian团队体验过几次tiny project后,让我对这种培养模式非常地认同,的确很有效果。
什么是tiny project,翻译过来就是“小项目”,对,就是小项目。对于我们自学一门新技术,自学一门新的编程语言,或者刚刚接触框架(例如MFC),怎样才能让自己迅速地得到技术的提升?仅仅看书是不够的,我们需要在实际的项目中去锻炼,去学习,去提高,对于新手而言,我们一般并不容易直接接触到真实的项目,那么,怎样才能达到我们的目的呢?tiny project便应运而生了!这是一种浓缩的project,把一个比较大的项目中的需求浓缩化,简化到只定义一些最基本的需求,但是要求在完成tiny project的过程中一定要完完全全按照规范的要求去做,只有这样才能真正达到锻炼的价值。什么叫按照规范?比如,从需求分析,概要设计,到详细设计,实际的编码,从软件代码的规范,到完整地测试,以及项目文档的编写,从小组分工合作,到每个阶段每个流程的时间规划,都必须严格按照操作正式的大项目一样去实施。
其实,这样的tiny project在教学上已经得到了广泛地应用,我们一般称之为课程设计,一般由老师定一系列的题目或者大致的方向,然后由学生组成N个小组,每个小组选好合适的题目,然后运用课堂上所学的东西做出一个实际的东西出来,这样的培养模式我非常的欣赏,回想自己在本科期间,经历了 C语言课程设计,Nios课程设计,FPGA课程设计,嵌入式操作系统课程设计,每一次课程设计都让我收获颇丰,每一次都在感慨,如果大学工科的教学都以课程设计为主导该多好啊,动手实践永远是工科学习中最重要的环节。
我们相信,这样的tiny project实战经验,对于新人提高自己在书本上看到的技术以及对于新人尽快适应真实的项目是很有帮助的,而这样的tiny project方式的培训或者锻炼,难点就在于需求的提出,我们需要有比较好的需求,在这样的tiny demand的基础上,才能真正实现自己的tiny project 。
记得我刚开始自学c++时,当我把整个课本全部看完后,心里就非常想做一个实际的c++应用,但是苦于找不到合适的需求,当时多么希望有一个丰富的 c++ tiny project 库,可以让我挑选一些感兴趣的project做一做啊,现在想想,相关的网站或者论坛,是不是可以提供这样的新手板块,专门提供这样的tiny project的需求供新手们练习么?这样的需求不能太简单,也不要过于复杂,需要有一定的综合性,最好也有一定的创新,同时,对于完成的作品要有一些高手们来评分啊奖励啊什么的,我想,这样新手们才更有激情来做下去。呵呵,一点小想法而已。
在此,也贴出一个自己做过的tiny project的需求吧,新手们有兴趣可以做一做,但一定要遵守规范的流程哦!只有你用心认真地去做它,你才会真正有收获。
[ tiny project name ] :
func database (函数数据库)
[ brief introduction ] :
各个不同的用户,或者各个学科各个领域,人们在平时的工作中或多或少都会用到各种各种属于自己领域或者自己最常用的一些函数、或者说一些算法,比如:作为大学生,我们经常希望计算一下自己的加权成绩,这时我们不得不对着自己的成绩单,一点一点的往计算器上按,先把成绩加完然后又把学分相加,然后再相除,为什么不能开发一个软件,只要你按照一定的格式将成绩复制在文本文档中,软件就可以自动帮你计算出加权呢?如此等等,我们每个人都有着自己日常最常用的一些函数或者计算方法,虽然excel或者access都有着自建函数的功能,但很多人都不知道怎么去用,而且对于我们这样单一的需求而言,没有必要使用这些大型软件。
[ demands ] :
1. 它是面向特定功能(自建函数并计算数据)的小型软件。
2. 它是面向普通用户,即非专业人士(专业人士在自己领域有着更强大而全面的软件),特别适用于对电脑各种其他软件(如access)不太熟悉的用户。
3. 它主要提供两个方面的功能,一方面可以实现像普通的计算器一样计算各种常规的计算,另一方面提供使用函数数据库(包括用户自建函数和系统提供的函数)进行数据分析和计算。
4. 系统提供必要的许多常用函数,如:三角函数,求方差函数等等。
5. 系统提供多种数据录入方式,如:实时手工输入,按一定格式从txt文本文档中读入,从excel表格中读入,从word中读入等。
6. 函数数据库功能主要包括:显示已有函数,添加函数,删除函数至暂存档,恢复函数,清空暂存档,复制函数,调用函数,保存函数等功能。
7. 软件操作简单,界面美观,反应速度快,稳定并且计算准确。
8. 它有很强的扩展性,用户可以根据自己的需求很方便地创建特定的函数到数据库中,以便下次直接使用。
9. 它有良好的界面和良好的互动性。
[ note ] :
当然,这里的需求说得比较简单,关于没有涉及的,就由你自己来扩展了,比如用什么语言编程(c语言, c++),比如使用什么方式进行系统信息的存储(txt , 数据库),比如使用什么框架(MFC, QT, console),比如一些额外的功能(例如,可以远程通过网络进行调用,增加用户管理功能,不同的用户有不同的函数数据库)等等,你可以首先写出一个详细的需求分析,然后去实现它。
免费学习更多精品课程,登录乐搏学院官网http://www.learnbo.com/
或关注我们的官方微博微信,还有更多惊喜哦~
本文出自 “Jhuster的专栏” 博客,请务必保留此出处http://ticktick.blog.51cto.com/823160/384236
来源:oschina
链接:https://my.oschina.net/u/2920551/blog/798812