进入一家新的公司,一般来说不会那么巧合就遇到项目刚好开始,最多的情况就是加入一个已经处于开发之中的项目。作为一名开发人员,我是这样来熟悉一个陌生的项目的。
一.主要技术:了解项目所用的主要框架技术。首先,通过项目结构判断项目是普通的web项目还是maven项目;其次,寻找配置文件,通过配置文件了解该项目的框架技术以及数据库;最后,找到jar包,通过jar或者pom.xml文件可以了解项目运用那些主要的技术。
二.项目结构:一般来说,现在的项目都会是MVC的分层架构。这时,首先做的事情就是将整个项目运行起来。找到项目入口,一般是login.jsp/html或者index.jsp/html这类文件,或者直接问同事。其次,选择一个模块,以debug模式一步一步从web层运行到业务层,到数据层。搞懂web层,业务层,数据层。
三.操作单表:选择一个模块,然后自己按照项目的MVC层写一个单表的增删改查功能,只要能够实现单表的增删改查,那么基本上就可以开始简单的开发了。
四.实际开发:在进入项目的实际开发中,你会发现项目已经被搭建好了,其实每个模块的结构都差不多,只是在实现功能的业务逻辑上有所不同而已。而且大多数代码都是可以直接复制粘贴,只做简单的修改即可。我想这也是程序员经常自我嘲讽说“搬砖”,“码农”的缘故吧!
我可以预料得到,一直这样复制粘贴,要不到半年,我就会变得迷茫,变得不知道怎样提升自己。趁自己现在还能思考,先立下几个Flag。我现在认为,站在开发者学习的角度看,可以深入学习的地方有:一.项目为什么要这样架构,和常规的架构方式相比有什么优缺点;二.分层中使用的自定义包装类,就是使用底层技术例如反射等封装的类用在MVC架构中,这些类极大的简化了开发代码量,应该阅读这些类,了解是怎么实现的,应该对我们的设计思想有极大的帮助(23种设计模式);三.数据库,数据库的重要性不言而喻,无论是常规的sql语句的书写,数据库结构等都有很大的学习空间;四.代码优化,很多代码在逻辑上做些简单的修改就能够极大地优化体验感觉(有这种体验:例如在只有使用的时候,才去加载数据,而不是一次性将数据全部加载出来);五.每一种技术是否完全掌握,例如:云端的上传与下载(例如:七牛),微信端口号信息推送,支付功能等等,有很多独立的技术点,都有学习的余地。
我一个程序员朋友说,其实人人都可以编码,作为一名合格的程序员的价值体现是 能够解决别人不能解决的问题以及改正Bug的能力。我也比较赞同这种说法。我希望自己是一个会思考的程序员。