如果单纯使用java,说实话非常难。一个稍微有点规模的应用绝非一种语言能够搞定。一般作为自由开发人员,抛开技术不谈,光是技术之外的东西就足够头疼。
首先还是谈技术。从应用场景出发,针对服务器后端开发,不用多说,spring技术栈全要会,但这绝对不够,还要会javabean sevlet jsp最底层,struts和hibernate也要会,因为不是所有的项目都是用最新技术,有些老系统做二次开发,在其原来的技术基础上增加新功能,如果用新技术甲方可能不会接受。服务器前端html4和5 css2和3以及js都得会,同时要会一些前端界面框架如easyUI,bootstrap等,这样才能独立做网站和维护老网站。web这块基础完了,然后就是架构上的加深,如负载均衡,反向代理,读写分离,数据缓存等等,这些是保障做的东西能够应对大规模访问不会崩溃。同时还要懂一些渗透的东西,用来检查自己系统是否有漏洞。当然了解但不限于nginx,mysql,sqlite,rabbitmq,redis,openldap,opendds等等,这些软件或框架是实现比较良好架构的工具。服务器应用完了就是桌面应用,虽然现在是bs天下,但是桌面应用也是有的,如果用Java开发桌面应用,那么就要注意Java桌面技术选型和部署问题。Java桌面技术主要有swing,Javafx,jface等等,以及eclipse和netbeans rcp,建议选择swing,一方面swing是oracle jdk保留项目,Javafx很可能会从jdk踢出捐给openjdk组织,另一方面swing虽然丑,但也可以做到非常美化,美化方法在swinghacks以及Java swing这两本书上有,的确可以做到极致的外观定制,不过难度非常大。netbeansrcp可以改善界面风格,与swing整合不难,eclipsercp采用了jface与swing整合时坑太多。部署时肯定不能强迫甲方必须安装jre,因此还要自己想办法将开发的东西连同jre打包,jre本身非常大,为了把桌面软件变得精巧,还要对rt.jar等包进行裁剪和封装。桌面之后就是手机端,不用太多说android开发也要会。最后是嵌入式系统,Java做嵌入式有点非主流,不过这不是问题,Javase配合Java se embedded可以实现当前大部分嵌入式需求。当然Javame也要会的,毕竟由于历史原因,有些贩卖机和机顶盒子居然还是用me开发的。基本上从ee到me都会,都要懂,这才不至于接项目太窄。技术只是一个层次,开发是第二个层次。代码要足够清晰简单,注释良好,可维护和重用,这样既能给甲方一个好映像,同时也避免给自己挖坑。因为是要拿Java吃饭的,不是炫技的。同时开发上要注意效率,能够快速交付东西,还要保证质量,能及时响应甲方需求变更,这才能积累良好的口碑。
其次是技术之外的东西。这里就比较考验情商了,一是需要能够和甲方沟通,能够准确抓住甲方的需求是什么,这里非常忌讳闷头开发,有可能自己做了半天却不是甲方想要的。这里的沟通要注意技巧,对自己的口才表达要求比较高,因为甲方很可能不懂技术,沟通时尽量多谈需求性和业务性问题,避免谈技术,这样甲方才会认为你是懂行的。而且沟通绝对不要停留在口头上,一定得形成书面文字由甲方确认,虽然这一步很多人深恶痛绝,觉得浪费写代码时间,但是书面文字比口头表达更有效,更能验证双方在同一个问题上理解是否有偏差,防止出现甲方想要飞机,你却造个飞碟的尴尬。二是及时反馈,因为自由开发者承接项目对于甲方而言是一个比较大的风险,一者对于开发者水平无法保证,二者对于开发者的进度无法保证,很可能等了几个月却告知无法完成,这不仅导致甲方浪费时间和金钱,也损坏了自己口碑。所以定期反馈是非常有必要的,比如每一周写周报,把软件界面截图或者把开发的功能模块描述一遍,这样既让甲方知道你当前进度,同时也能及时发现开发是否出现了偏差。这样做双方都有好处,因为对甲方而言,完成一个低端low逼的却满足自己需求的软件,远比完成一个高端却没有满足自己需求的软件来的重要。对自己而言开发也没那么累。
最后如果打算做自由开发者,一定要保持高度学习状态,不断地学习,高效的学习,带有目的学习。这里的学习不是随便找一本技术书看看,说实话看了也就忘了,必须结合当前项目需要来看书,看了就要上手做,把知识运用起来,这样才是最有效的。不然看了之后又长时间不用,很快久忘了,还浪费时间。而且自由开发者必须路子要足够野,车开得足够稳,视野足够宽,毕竟从深度和精度上比不过大厂的人,那就请在广度和邪门歪道上比别人厉害,也就是所谓的有两把刷子。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有