在中博毕业后,去上海泓智公司做java开发。打算在IT行业混出名堂,和带着一颗并不比别人差的心,他工作干的很有动力。很快成为公司开发组长,就在职业发展迅速的时候,他突然提出辞职。用他的话就是:“我当时就是想走,并且我很快就走了,没有提前打报告。”
他说:在泓智我已经把公司的技术要求用得滚瓜烂熟了。那来来回回几个框架的使用效率太慢,并且已经跟不上主流,初的激情被磨没,没有新挑战,日子简直太难熬。
跳到文思海辉,果然又是一番新的天地,接触到更多技术。上一家公司还在使用struts1,现在用struts2,还可以接触到spring、hibernate,甚至还包括前端bootstrap。而后随着工作变动他又接触到了 spring springMVC myBatis 这些框架的使用。
今年初他回来。他说,在这几年工作期间,对于开发,我所接触到的主要技术涵盖很多方面,一部分是在实际工作中所接触到的,其中包括,Spring、SpringMvc、Hibernate、Mybatis、Redis、Linux、Jquery、Html5、Oracle、Mysql。另外一部分则是利用业余时间自学的,其中包括C、Python、Perl、Android、网络安全等。不敢自称是全栈,IT之路任重道远。
他现在学习已经不再是为了胜任岗位工作。而是用编程思想去让整个公司高效运转。例如现在公司中他都是用自己的想法封装组件。一是为了提高工作效率,保证代码质量;二是,这些个性化组件可以形成公司代码规范,用来提高团队工作效率。
对IT技术的感悟:
我不知道大家有没有听过一个叫破窗理论的故事,内容大概是这样的:“一个房子如果窗户破了,没有人去修补,隔不久,其它窗户也会莫名其妙地被人打破;一面墙,如果出现一些涂鸦没有被清洗掉,很快的,墙上就布满了乱七八糟、不堪入目的东西。而我的技术就是从这个破窗理论的故事给我的启示开始的。
一段结构工整,具有语义化,易于阅读的代码和一段结构非常混乱,命名非常随性,且不易于阅读的代码,你会选择前者还是后者?结果很明显。在工作中,实际我们大部分时间都是在做着代码维护的工作,可能新加一些功能、也可能对旧的代码进行优化。在你看来写的很好的代码,你可能根本不想去破坏它的原始结构,而是想让它变的更完美;而对一些比较烂的代码,你会心想着都已经这么烂了,无所谓好不好了,只要快速完成功能交差就行,破罐子破摔吧。
在刚开始工作时,我是一个非常注重代码质量的人,对于好的代码,看起来简直就是一种完美的享受,并不让我觉得编程是一项非常苦逼的活。我也因此在那方面投入了很多时间,而之所以叫投入,是因为那是值得的。《代码整洁之道》和《编写可维护的Javascript》这两本书对代码规范都有明确的要求。前者主要以概念为主,后者则是概念与实践的结合。但是其实好的方式则是学习源码,你会发现那些业界大师们所编写的代码是极其规范的。
可能此时又有人会问,不就是代码规范嘛,需要这么这么较真嘛?是因为代码规范教会了我一种学习的思维方式,通常我在碰到一个棘手的问题时,通常会先对它进行分解成若干个小问题,保证每个小问题都是各自独立,然后逐一进行突破,即便有问题出现,也能快速发现。这种思维方式,就是来自代码规范的启示。即使这里显得有些空泛,但是编程本身就是对思维过程进行归纳和总结的一种活动。所以还是先从代码规范做起,多花那么一点时间去设计个好的方法名、好的变量名、好的类名。
技术分享
如果在这,需要我分享一下自己编程思维的练习,我推荐大家去写“技术日记”。
1.你可以梳理一下每天的学习过程,有哪些收获,哪些遗憾,通常你会发现,即使非常糟糕的一天,也有很多亮点。
2.对印象深刻的某个知识点或困惑点进行分析,可以分析初为什么没有理解,又是通过哪种途径解决的,解决过程的思路是什么,解决后的感受是怎样的。
3.定期,比如以月考为分割点,每月进行回顾,对这个阶段学习过程进行反思和总结。
如果尝试一段时间,能够发现自己的改变,我们的思维能力和解决问题都会提高。遇到难题不再是即兴得这一点,那一点,而是一个逻辑清晰,条理分明的思考过程。
管理大师彼得·圣吉有句名言:要想教给人们一种新的思维方式,就不要刻意去教,而应当给他们提供一种工具,通过工具培养新的思维模式。而记日记是一个低成本,可操作性强的工具。
学好编程,没有捷径可走,就是要不断的练习,即使是天才,也是拿时间砸出来的。“这是一个非常考验自制力和耐心的事情,有时候我调个bug的时间,已经到了凌晨2点。如果想要上进,就必须要和人的弱点抗争。”
这就要求我们有发自内心对编程的兴趣,这也是促使我一直坚持下来根本的内驱力。每次我调试成功或者用更好的方法做出结果的时候,我很享受那种兴奋。”
这种动力会让我因为一个问题会思考很久,思考的并不是这行代码怎么写,而是用代码实现我的想法。我会画各种结构图,来锻炼抽象思维,这也是一件非常有趣的事情。程序的世界和现实生活真的很类似,这是一种直觉!如果有条件的话,我还是建议每个人都能学习下编程,因为它真的会教会你如何思考。
对于拓展技术方法主要是看书、网站和练习,家里堆满了编程书籍。读书一是要学会选好书来读,而鉴别一本好书的方法就是看里面的内容是否很有针对性地能够解决你平时练习中掉进去的那些“坑”。经常看书的人知道有的书籍是那种你翻10页过去了还没讲到重点,废话太多凑页数的。其次是将书里的知识进行操作检验,只有这样理解才会深刻。