前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础能力决定了程序员发展空间

基础能力决定了程序员发展空间

作者头像
用户5829239
发布2019-07-16 14:34:02
3010
发布2019-07-16 14:34:02
举报
文章被收录于专栏:可持续开发可持续开发

现在的软件开发人员被戏称为码农,一定程度上面也反应了当前开发人员的技术水平,真正的软件开发不是敲敲代码那么简单。中国还有很多B端商业和工业行业软件都非常落后,智能化设备需要软件开发,精细化的企业管理系统需要软件开发,现在的太多的软件开发多是一种低水平的重复劳动,造成了这种码农现象。

造成这种情况出现的原因很多,有兴趣请您参看我的文章”华为员工中年危机”,在文章”一流程序员的成长之路”中,我也讲述了什么是一流程序员,给企业带来的巨大经济效益和怎么样成为一流程序员。本文将对”基础知识能力”这个点做更加细致的举例说明,讲讲这个往往被人忽略的能力,为什么是一个开发人员未来发展空间的标尺。

什么是基础知识能力呢?软件开发的基础知识非常多,例如:数据结构,算法,操作系统,设计模式,TCP/IP系列传输协议等等。为啥加上”能力”两个字呢?因为掌握这些基础知识的目标不是死记硬背,知道这些基础知识,更重要的是在工作当中怎么灵活运用这些知识去解决实际的问题,真正的反应在经济效益上面,这就是能力,有知识无能力,对企业和个人发展还是没有太大的意义。

很多基础性的东西,往往非常枯燥和抽象,初学者很难真正的掌握,而且因为缺乏实用场景,更加让这些理论变得晦涩难懂,所以基础性东西的理解不是简单一步完成的,往往需要很多很多次的反复往复才能实现真正的理解和运用。很多人问我数据结构有啥用呀,人家都帮你做好了,而且很多工作场景都很少运用到这些东西。现在开源的东西越来越多,组件也越来越多,软件编程很多时候变成了”百度-拷贝-粘贴”,如果APP需要使用百度地图,去网上找到示例代码,稍微修改调整就放入到项目当中,根本不需要太多的基础知识,尤其一些培训班的”速成程序员"更是如此”,这也就是我们看到的很多软件非常烂的原因。

后台基础能力缺失,会导致问题发现和解决完全靠蒙和百度,简单的配置问题,可能可以百度的到,但复杂的多线程的问题,是不可能百度到的。之前团队遇到一个消息队列的问题,几个后台来回来去折腾了几天时间。

仔细去询问他们的解决思路,基本上都是去百度找答案,有些配置问题,我感觉提示已经非常清楚了,因为英文能力不佳,导致看不懂错误提示,错误提示和日志是最佳的查询问题的方式。当然能够看懂错误提示,一方面需要有英文能力,另外一方面还是需要有对该软件本身的原理结构理解,看错误最好有一见如故的感觉,这种感觉是基于基础知识的深入理解和平时的锻炼。这些错误提示里面可能有些计算机的专业术语,这些都是平时需要加强的基本功,毕竟现在大多数开源软件都是来自美国,多数文档也是英文的,英文能力太弱,只能去查看二手或者三手的资料。

配置问题解决以后,后面又遇到的了消息队列的监听问题,因为缺乏多线程基础,他们开始设计思路,没有使用线程block的方式,建立一个专门监听线程,导致导致读取不及时和丢消息的发生,而且因为没有仔细去看API,导致读了一个消息,而抛弃了后面消息这种低级错误的发生。其实学习一个新的的软件服务器或者框架,读懂API是非常非常重要的,开始可能读这些API比较枯燥,比较困难,但看多了,自然就会有感觉。比如数据读取,就是IO接口呀,一般都要批量读取和单个读取,或者block读取这些基本概念。而这些基本概念对操作系统的文件IO,网络IO,和这个消息队列的IO,都是具有一定的相似性的,当然不排除一些个性,比如网络IO,有独有的Socket异常问题,看懂这些异常的,就需要对TCP/IP底层的概念有一定了解,比如RST这个事件是怎么导致的。

如果是可以复现的问题,都不能算是问题,如果日志做的好,分析问题方式到位,解决起来非常高效快捷。真正难的是多线程高并发情况下的偶发问题,我之前处理过一些平均2个月左右才发生的问题,这种问题发生需要多维度的收集发生环境的信息,所以要解决这些问题,怎么打日志变得绝对重要了,而且打日志之前也是要做基于理论的推导分析,去分析可能发生的点和原因,在这些怀疑的地方,打上日志去验证,总不能到处打日志吧,这样乱的自己也看不懂了。

基础能力强,还有一个好处,就是阅读技术文章的时候会有很强的辨别能力,网络上的技术文章有好有坏,怎么能够迅速的找到有用的知识点,变得非常非常重要。之前团队一个做IOS前端的程序员给我推荐了一个缓存框架,说这个框架可以解决一切问题,我就问他,你能不能把这个框架为啥能够解决我们的问题,详细分析一下呢?他的回答就是,人家都做好的啦,调用就可以啦。然后,我反复跟他讲了,去理解缓存原理的重要性,缓存不是万能药,需要看场景的,给他讲了半天,他还是说,人家框架都搞好啦,只要使用就行。对于这样的讨论,一般我就是放弃去说服对方了,技术学习能力的缺失,导致更加迷信权威,迷信和固执导致自己进一步缺失学习能力,恶心循环吧。

写这篇文章,就是强调基础知识的重要性,要去带着享受的心里去啃这些基础知识,你一定会有大有收获的一天。更多精彩内容,请关注公众号哟。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 可持续开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 CMQ 版
消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档