打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
计算机学编程代码听了会了,但是一写就废的原因是什么?

如果就只听别人讲,只看别人的视频和代码,即光看不写,一定没法提升,但是在学习的开始阶段,其实先运行通别人的代码,并在此基础上通过修改理解关键技术。

再进一步讲,在IT行业学编程,乃至上班后写代码,再包括工作后提升技术以及跳槽拿高薪,其实要自己创新写代码的场景并不多,大多数是靠抄现成代码然后适当修改。即程序员在学习和提升过程中,如果过多地想自己发挥,第一会走弯路,第二效率不高。

比如用java举例,入行时一定需要掌握java spring boot方面的技能,这时推荐的做法是,第一知道该学哪些技能,即明白学习路线,第二看资料掌握语法和必要技能,第三是跑通现有代码理解。

具体操作时,如果光看资料不跑代码,这一定学不好,这点本人就不多说了。同时在制定java核心方面的学习路线时,应当结合找工作所需的技能,这样的话,java核心部分的UI,socket以及JDBC还有jsp等技能可以跳过,或者用少量时间学。

在写代码的时候记住这句话,在找到java工作前,可以跑通现有的全栈代码,或者在跑通现有全栈代码的前提下修改代码实现自己的功能,但是不要自己凭空写,如果凭空写的话入行都难。

1 比如自己凭空用swing JDBC 的方式写个b/s系统,或者用socket写个通讯系统,或者实现了某些游戏,可能在这个过程中用了1,2个月,也解决了很多问题,但真实项目开发时用不到这些技能。

2 或者自己照着书敲一些代码再运行,敲代码时大概率会敲错,真有可能是用10分钟敲代码,用1小时查错,再用5分钟理解技能,如果遇到复杂敲错的地方,还未必能找到问题。这真还不如跑通人家代码,再改关键位置,然后理解,这样效率提高的程度何止10倍。而且这种方式下,问题大概率会出在搭建环境,而搭建环境的问题是,初学者也得解决的。

3 再如面试时,初学者一般是通过事先准备外带口头说的方式,来证明自己做过商业项目,而不是现场去运行代码,更何况现场运行的代码往往是学习项目。所以哪怕初学者自己凭空写了若干个全栈项目,对找工作帮助不大。

4 换句话说,java初学者找工作的要义,不是自己写代码,而是在跑通必要spring boot代码的前提下,掌握做项目的必要细节,比如日志事务等,再通过项目真实性方面的说辞证明自己做过商业项目,再啰嗦一下,这和自己凭空写代码的能力关系不大。这块的技巧本人有专门的文章说明。


从上文里大家可以看到,计算机行业,至少是java,在入行找工作时,确实要动手练习,但绝不是自己凭空写,而是更看重跑通现有代码的能力,这个能力虽然难,但绝不是高不可攀。

再说下工作时写代码的情况,其实很多java新手前期发展不好,不是说能力不行,而是不知道努力的方向。比如进一个项目做spring boot的业务功能,这块很少有要自己发挥的,类似的代码,从配置到功能再到细节,其实项目里其它功能大概率是涵盖的。

这时java程序员应该先搭建好环境,跑通现有项目,然后结合现有项目的界面和现有的业务功能,问项目经理或其它同事,这个功能应该仿造现有什么功能。这时如果自己另起炉灶,自己写个spring boot mybatis的框架,第一可能会引入新问题,第二大概率没法按时完成,这也是不少初学者没法过试用期的原因。

这块抄代码应该关注哪些方面的问题?

1 整体框架,比如spring boot从控制器层到repo层的mybatis,以及连数据库的代码,其实项目里一定有,所以应该仿照现有代码,同时修改url请求参数和mysql操作语句来实现现有功能。

2 一定要了解业务流程,尤其是每个业务细节,具体包括该读写哪张数据表,该向哪些模块收发哪些请求,再进一步包括该怎么用分布式组件和微服务组件。这块细化下,其实包括该怎么改现有的通过mybatis读写数据的代码,该怎么抄现有的连接nacos等组件的代码,在现有dubbo,kakfa框架的基础上如何调api传适合自己业务的参数。

3 在实现功能时一定会遇到新的问题,比如日期转换,或者异常处理,或者redis使用方面的问题,这些问题其实真可能别人遇到过,这时或者可以问人,或者可以看现有代码,再不济可以到网上去找,总之能找到现有的代码,而不是自己写。因为一旦自己写了,真可能引入问题。

4 这块如果有问题,绝不是靠自己解决,而是可以向项目经理问如下的问题:如何搭建环境,这应该项目经理会告诉你,这块代码我可以抄现有哪块?这个功能我怎么算做好,在界面上如何验证。遇到自己不会实现的功能,首先可以问别人,你有没有遇到类似问题,然后再到网上搜。

可以这样说,比如有3年开发经验的java程序员,和刚入行的java开发相比,其实不在于自己能凭空写多少代码,事实上工作中要自己发挥的点真未必多,而在于知道该从哪抄代码,以及遇到问题如何解决。

话再说回来,在项目开发过程中,出于项目稳定性方面的考虑,除非遇到不得已的需求,否则项目经理一般不会让引入新技术新组件。比如有性能瓶颈那不得不引入redis,否则用用mybatis就够了。所以项目开发过程中,抄现有代码然后修改是常态,比如要有所创新,哪怕是升级个jdk版本,这种事情谁也不知道会引入什么风险,是否会延误进度谁也说不好,所以反而很少遇到。

不少人认为,在java方面如果要提升,总得自己多写代码吧,恰恰相反,在提升阶段其实也是靠抄,只不过得知道该进一步学哪些技能,进一步该从哪里抄。

这里说个观点,提升技术靠解决实际问题,通过解决实际问题知道该从哪里抄代码,另外提升时,一定是先得到值钱技术的项目实践机会,然后再提升。所以比如在只知道增删改查技能的前提下,自己如果去写个个含高并发微服务项目,其实帮助并不大。

比如某java初级开发,在项目中大多数工作是做增删改查,那么在提升过程中,应该多去解决组件,微服务以及部署和运维方面的问题。在解决此类问题过程中,应当学会从日志里看日志,以及明确出了这类问题,该从哪些组件,哪些方向去找问题,至于找到问题以后的修改,其实大多有现成代码,照抄就行。

再进一步讲,在提升过程中,第一得结合项目的业务,这样在面试过程中能证明该技术的实践技能,第二得通过有人帮带或自己复盘,知道相关问题的查找方向,第三得多积累运维组件和部署方面的技能,这些实践要点远远不是自己凭空写代码。

同样地,在挑战高级职位的过程中,一定也是先通过项目细节证明自己用过值钱技术,也不是跑通一个高并发项目,这块其实也不是靠写代码,而是靠说。

当然,到了足够高的程度,一些大牛们确实要求从零开始自己写个项目框架,写好以后让手下人在其中开发,再进一步需要写个组件,甚至创新个算法。如果到了这个程度,这些大牛真可以去挑战七八十万的年薪了。

换句话说,程序员在提升阶段,一定得结合场景,优先靠“抄”代码积累经验,在此基础上再通过跳槽积累到一定程度,有了一定的底子后再考虑自己写。回到主题上,程序员固然得手写代码,但写的过程中一定得最大程度利用现有技能,这样才能高效地提升自己。

最后本人想说的是,本文更多地是说提升,提升后该如何通过面试来变现,大家更可以看我如下的文章。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一名合格的JAVA程序员需要点亮那些技能树?
分享6个国内优秀Java后台管理框架的开源项目,建议收藏!
工作两年简历写成这样,谁要你呀!
从技术上来说PHP好还是JAVA好?
最近面试 Java 后端开发的感受!
程序员看好!这五大编程语言最应该学
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服