在做程序员的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?

凭借着优秀的搜索素养,复制黏贴,拿来主义的能力(我不是在讽刺,这是一种编程必须的能力),成功地解决了一个又一个陌生的需求。

关于搜索技巧

   任何一个开发人员,都应当具备搜索能力,甚至是一定要具备搜索能力,搜索引擎的宝藏,是无穷无尽的,同样具备搜索意识的不同程序员,却因为搜索技巧的差异最终在程序开发质量、项目实施效率、甚至是工程产品质量上出现数倍的差异,因此,掌握高效、先进、灵活的搜索方法和技巧,是非常非常非常(重要的事情说三遍)有用的。其中主要的方法介绍如下:

1)搜索源选择

  • 虽然英文的编程资料更为准确高效,但中文的编程资料数量上却占优,因此遇到问题第一搜索选择还是百度
  • 谷歌对于专业中文词汇的处理能力有时候甚至比百度还要强,而且谷歌能搜出大量的英文资源,因此谷歌也是首选之一,但是由于谷歌被封锁,因此需要进行VPN、SSH等FQ操作,或者在百度搜索“谷歌镜像”关键词,通过谷歌的镜像网站进行访问。
  • 除了搜索引擎,专业的技术网站、论坛、社区也是非常直接有效的搜索源,比如国外的StackOverFlow网站,国内的Cnblogs博客园、OSChina开源中国等,都具备搜索功能,将问题关键词输入其中,也许也会很快的得到相关答案。
  • 对于QQ群,建议不要使用,除非QQ群主或者成员是非常闲或者非常非常热心的人,否则在QQ群询问技术问题,是非常低效率的搜索方式。

2)关键词构造

    搜索关键词的构造,直接影响搜索效率和正确结果的过滤,没有什么特别的技巧,关键在于搜索积累,但是总体遵循的原则是,准确和简洁,比如当出现一个描述,如何用C#对XML进行序列化和反序列化,非常愚蠢的关键词构造就是“如何用C#对XML进行序列化和反序列化”,而正确高效的关键词则是“C# XML 序列化 反序列化”,或者在谷歌里面搜索则是“C# XML Serialization”。在平时的编程中,一定要注意相关方法和经验的积累

3)联想搜索

    联想搜索,不属于搜索引擎的范畴,却是在搜索中很有用的高级技巧,举一个通俗的例子,比如想使用C#,利用某个.NET类处理一种HTTP通讯,但是一直搜索不到完美的结果,不过换个思路,考虑到VB.NET也是.NET体系,和C#完全相通,那么也可以试着用VB.NET关键词进行搜索,搜索到完美代码后再临摹成C#代码。这样的联想搜索,不仅能够帮助搜索正确结果,也是对大脑思维的训练,值得多多尝试。

4)资源搜索

    开源的框架、产品、工具、控件等开发辅助类东西越来越多,稳健性和迭代性越来越强,去寻找一款成熟的工具或者插件,也成为了大量开发者的必备方法和技能,而如何高效的搜索出想要的资源,也成为了一门学问,其核心方法就在于知晓资源网站的地址,常见的例如有开源中国、Github、CSDN下载、pudn等。资源类网站需要平时多积累,到用到的时候会非常关键。


你觉得自己走过了很长的路。这时候大概三年过去了,确实不短。

但也渐渐意识到似乎缺了什么东西,有一种不满足感,以前你只追求高效率地完成工作,现在你想追求得更多一点。

你也许想知道用过的某个库的实现原理,也许想实现自己的版本,你想理解框架的架构模式,想获得这种能力,你想把语言本身用得更自如更生动,想真正拥有它,而不是使用它。

你学会了做功能,用各种库,各种框架,项目形形色色,需求千姿百态,变化莫测。

这是你从developer到engineer的关键时刻。你将要学会的程序设计能力,而不是为功能而代码的能力,你越来越多关注质量,而不是数量。

如果你是PHP程序员,你将理解的这个概念可能是“data driven”,你尝试让数据来驱动程序,而不是层层嵌套的逻辑,无休无止的if else,你想把程序变短变平,你想把复杂的逻辑编程简单的“配置”,你想让这些配置来帮你写逻辑,而不是自己手动去敲逻辑代码。理解它以后,你会发现原来这么多的程序其实可以有更好的写法,更“快好省”的结构设计。你不再觉得“业务逻辑”是浪费时间,你看到了把任何业务逻辑转化为数据驱动的设计的途径,这时候你不再是原来那个PHP程序员了,packagist上的库你看过去,都是你的朋友,因为你知道在某个时候,你需要他们支撑(简化)你的一个设计,以前你看到一个包,看它的API,找到一个,require进来,发现可以,完了;现在你想看看它的“设计”,想的是“可以怎么用”,对我的项目有什么意义。

如果你是JS程序员,这个概念也许是事件驱动也许是异步编程,你懂得了以事件为中心来设计一个完成的架构,你驾驭了异步程序的技巧,以前你总是觉得驾驭不了复杂的项目,感到恐惧,错综复杂的事件流,异步程序写起来各种不自然,UI交互,因为你总是追着每个具体的功能跑,而没有想过高一两个层次的设计,事件如何统一起来管理,而不是让它们乱窜,UI的模块怎么分割,分割以后怎么交互,对你的要求不是去设计一个具体的模块,而是为设计任意多模块提供一种可扩展可维护的机制,你需要设计规则,决定程序的结构、层次、模式。这时候你不再只是document.getElementById那时候的JS程序员,这时候你具备了编程的“元”能力:剖析问题,设计程序。你会觉得即使不给你任何框架和库,自己也能设计出一套方案来。你选择库或者什么技术,开始处于非常具体的“需要”,而不是听说它“很好用”,那时候是它在选择你,你很被动。“我想用A,因为这时候A是最佳选择”,你有一种清晰感,也开始有了品位,判断力。

你不再是“码农”了,你是Engineer,你做事开始有了逻辑(你不确定以前做的事对不对好不好,只管做,现在你比较清楚了),很多东西在你脑子里开始有了主次,你用设计、架构来解决问题,而不是光用代码和搜索引擎。“你”开始真正成为解决问题的主角,而不是你“用到的东西”。你真正地驾驭了语言,这个语言可以怎么用,应该怎么用,而不是写成什么样算什么样。你能比较轻松的从别人的东西里看出苗头来。

这个时候,你走上了技术能力的phase 2。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值