首先,此短文不会提及任何具体的编程经验(为了能通用),并且本文的‘经验’是‘个人’的经验,我想在看本文的你8成也是具有中国特色的‘独立’程序员或是小团队程序员吧,所以以下也没有任何团队开发的‘管理’经验。本来是写在我自已的blog上的,但是感觉还是发到CSDN让更多的我的‘同类’看到更好一些,可以得到更多的点击和回复率,以满足个人的‘发布欲’^_^,也许这点点东西不算什么,但的确是我通过实践体会出来的,其实还有一些,但凑个整数正好,欢迎看客再帮忙添加‘经验’。
另外在CSDN上发文章也算是一种冒险,还好我上回发的文章没使我的‘冒险精神’受到挫折,反而增加了一些,所以这回斗胆再发一篇,愿真主保佑我。
正文:
这几个月来独自一人开发一个多层进销存软件,以前从没搞过类似开发,甚至没有独自设计开发做过一个太像样的系统,这几个月来的努力除了为达到一些具有功利的目的外,对我个人更重要的意义就是做为一个软件开发人员,能够独立的从分析设计到编码来完成一整套系统的开发,也算是在职业技能上的一个很重要的里程碑,也是一个挑战。还好,现在软件的大部分重要的工作已经完成,在这几个月中除了在编程上有些提高外,另外也悟到很多‘道理’,个人感觉在不断探索中能在专业技术上领悟到一些东西,对于提高专业水平比起一些具体的编程技术来说重要的多了。具体领悟到了哪些有用的东西,我看就只能是只可意会不可言传了^_^,所以说有时自学成的比老师教的要好,也就是这个道理了。
下面是总结的一点(你可能认为理所应当但还是会知法犯法)的经验:
1开发软件要用熟悉编程工具和语言,特别是在有时间规定或是不想花过多时间的情况下一定要这样做。不能用一些时尚的但还不熟悉或是本身不成熟的技术来开发。
2不能急于编码,在这之前多花时间进行分析思考到最后完成工作,其实这样会相对更省时间。
3不要受一些‘先进思想或工具干扰’搞形式主义,如果可能的话按照自已以往的习惯进行开发,最合适的方法才是最好的方法,最合适的工具才是最好的工具。
4但要注意在可能的情况下有分寸的常识新技术新工具,或新的思路,但前题是保证软件质量和开发进度。
5这也是我体会最深的一条:年轻’绝对不是‘经验’的对手。(btw:我是新手且年轻)对某项技术没有经验,往往会费更多的时间来学习如果正确使用这种技术,可能有经验的老手1小时能完成的工作,没有经验的新手有可能花2小时或是1白天时间。所以就算程序员很老,老到1天只有精历工作3,4个小时,那么按照上面的推论年轻的程序员仍然可能没有能力超过老程序员。所以经验还是最重要的。另外对于学习新技术而言,应该也是经验最重要,因为‘温故而知新’,新技术往往是由旧技术演化而来,老手根据已掌握的旧技术花1小时间就能学会的新技术,那么新手可能要花更多时间。当然除非老手放弃不学也不做。
6最后再去问‘人’。单独开发身边根本没人可问,就算团队开发别人也不是你的专职顾问,偶而问问叫做加强沟通,别人也有工作要做,问多了就不见得是好事了。所以充分利用网上资源,到相关技术论坛提问或查找,应该是最优先的办法。
7论坛提问要引人注目,不然没人理你。所谓引人注目到不见得一定是写个吓人的标题,还在于问法,发问粘子写长了人家看起来会烦,写少了不明确,所以要找关键的写,费话少说,语气谦虚,OK绝对有人会回答你。
8‘自动’的有时真的不如‘人工的’。有些‘自动化’的技术看DEMO挺好,但用于复杂的实际情况,往往还不如自已‘人工’完成,这样自已的控制权更多,出问题时的可控性更强。
9设计以及编程时随时想着留后路(扩展性)。再好的设计将来难免会有变动,编码也一样,所以实现时要权衡这些变动因素。
10软件是有可能消失的!所以--备份!备份!再备份!并且要检查你的备份是否能真的能恢复原状!并且还要不只有一份备份!!并且最后还要保证你的这些备份存在于不同的物理介质上!!
大约1个月后完成这个软件第一个版本后,因为需要可能会找别人合作开发一个B/S结构的版本。其实个人对B/S并不十分有好感,但根据我和一些软件销售人员的接触,‘市面’上B/S的明显比窗口的要好买。没办法,还好有Asp.net不用再去碰Asp了,不然用Asp做应用系统简直就是一种‘乱伦’(按照技术上的特点来说这个比喻其实一点也不过份就像算说国内计算机教育是XXX一样,其实一点也不过份,而且从所周知)。这个软件完成时会发到CSDN上Share的。然后找机会尝试‘团队开发’到时再来点合作开发经验总结吧^_^