和大学同学祥子聊天讨论到这几年对开发的体会的时候,他说:“我在用友的时候就是在框架的基础上把需求转换为代码,一没有学到业务,二没有学到技术!那是非常的抑郁!
”。软件发展到今天,就是需要在框架的基础上大规模的复制API,把相关的需求转换为代码,让公司能够在最短的时间做出项目或者是一个新的产品。这样的操作对公司的好处是:1:分工细化,缺少了谁都行;2:可以大规模的利用外包来节约成本。一句话形容一下:提高开发效率,降低开发成本
。但是对程序员来说,这样对个人的成长非常的不利。继续拿出几个问题来反思自己!
1:你在奉献智慧么?
书写代码的过程中,必然会涉及到N多的老代码的维护,有没有考虑去抽象公用方法,有没有考虑去改造包结构,有没有考虑一些代码上的重构,有没有考虑解决系统的性能瓶颈和可用性的问题?思考是必须的,只有在思考的过程中人才会成长起来。想办法去奉献智慧,人才可能慢慢的成长!
在项目组中,动手去解决问题要比说出自己的想法更加重要。因为在你考虑是否应该这样做的时候,别人很可能就走到了你的前面。所以,在提高软件可用性的前提下,任何的尝试都应该动手去实施,作为行动的巨人。(这个地方本人是吃亏不少,总是想着和系统架构师的想法保持一致了,有些情况下,系统架构师是错误的。)
2:看的知识是不是越来越底层?
在平时接触到不同的框架的时候,一般花上一天的时间看看架构图并且理解其中关键环节的配置调用就可以了。但是如果想提高自己的架构水平,还是不断的看别人的源代码,吸取别人思想的精华部分,然后自己在工作中去发挥智慧。Rod Johson写的spring框架也是在不断吸取别人思想的基础上逐渐的发展壮大起来的,在他大声疾呼“develop without EJB”的时候,这个人对EJB非常的熟悉,不信的话可以去看看《Expert One-on-One J2EE Development without EJB》看看前面几章的分析。其实EJB2.0是一个思想库,只是我现在还没有时间去研究这个。
cache对象的时候,有没有考虑到对象的clone,HashMap中的clone的方法是深clone还是浅clone,ArrayList和LinkedList呢?什么时候在创建ExectorService对象的时候使用newFixedThreadPool而不是newCachedThreadPool?java nio你知道多少?如果一开始我写了足够理解并发,积分计算和公共出发拉直的代码我会写成另外一个样子。那个为了改善性能的jobs我TMD也不会写一个quartz的job了。我只能现在慢慢的修改其中代码来提升系统的性能和程序的健壮性。我需要花大功夫研究java的基础知识。
3:和高手交流了么?
其实网上很多技术blog写的都很好,尤其那些持续更新的架构和技术的程序员们更是值得学习。找到他们,和他们讨论一个方面的技术。真正的高手都是谦虚的,讨教一些他们知道的东西,这些人会不遗余力的指导你,前提是他们不是很忙。
4:必杀技是?
行走江湖,怎么能没有看家本领,其实大部分程序员都没有。有人说自己精通java,但是我问一下他对concurrent包的了解情况的时候,却是一问三不知。如果是我写简历,我更乐意写:精通java 的并发编程和nio。其实其他方面也需要关注,但是谈到精通就差一点了。
如果未来和别人讨论技术的时候,我希望总是能够谈到一些让别人觉得成长的知识。
学习技术不怕慢就怕停
,每天坚持编码,坚持总结,成为那个“焊火箭的民工”也是完全可能的!
分享到:
相关推荐
【高端专业人才“民工化”现象分析】 随着中国经济的快速发展,一种名为“民工化”的现象正在高端专业人才群体中显现。这种现象的核心在于,专业知识丰富的人才被压缩到执行重复性、低附加值的工作,失去了应有的...
在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他...
通过对魏猷君分享内容的总结,我们可以看出成为一名优秀的程序员不仅仅需要扎实的技术基础,更重要的是具备良好的职业态度和个人品质。希望每一位程序员都能够不断提升自己,成为真正意义上的Good Coder。
初入职场的程序员往往在项目开始时并不需要深入理解业务,而是通过需求分析和用户沟通来逐步熟悉业务。 3. 培训内容广度与深度: 面对快速变化的IT行业,培训内容广泛有助于适应各种需求。虽然短时间内无法完全...
会 Java 的人越来越多,但是一直徘徊在语言层次的程序员不在少数,真正掌握 Java 中接口或抽象类的应用不是很多,大家 经常以那些技术只适合大型项目为由,避开或忽略它们,实际中,Java 的接口或抽象类是真正体现 ...
购房、结婚和养家糊口的重担往往让他们感到力不从心,甚至有人调侃自己在购买房产后,生活状态如同民工。这种压力可能会影响到他们的斗志和工作表现,因此持续的职业发展显得至关重要。 软件白领的职业发展主要包括...
《Android 2.3源代码解析与开发指南》 Android 2.3,又被称为Gingerbread(姜饼),是Android操作系统的一个重要版本,它带来了许多性能...对于有志于深入Android开发的程序员来说,研究源代码是一项必不可少的技能。
总的来说,Python作为一种解释型、高级和面向对象的编程语言,其简单直观的语法、丰富的库支持和跨平台能力,使其在科学计算、网络开发、自动化脚本、人工智能、数据分析等多个领域得到了广泛应用。随着教育和工业界...
通过对这些基本概念和技术的理解和掌握,可以有效地提升程序员的算法设计与分析能力,从而避免成为所谓的“代码民工”。 通过上述内容的学习,我们可以更好地理解和应用二叉树的相关知识,在实际工作中更加高效地...
4. **批处理文件**:通过编写.BAT文件,可以将一系列DOS命令组合在一起,形成自动化任务,这对于日常维护或重复操作非常有用。 5. **低级I/O操作**:DOS允许直接访问硬件设备,如键盘、屏幕和磁盘,通过INT 10H...
而MySQL是一个广泛使用的关系型数据库管理系统(RDBMS),它利用结构化查询语言(SQL)进行数据库管理。PHP与MySQL的结合为开发功能强大的Web应用程序提供了可能。 书中所提到的“PHP的介绍是迄今为止最为全面的”...
源码则是游戏开发的核心部分,它包含了程序的逻辑、算法和结构,是程序员智慧的结晶。 首先,我们要知道Flash游戏的开发主要依赖ActionScript语言。ActionScript是一种基于ECMAScript规范的脚本语言,它为Flash提供...
Eclipse 3.3中文包是一款专为Eclipse 3.3版本设计的语言本地化工具,旨在为用户提供简体中文的界面,使中国用户在使用Eclipse开发环境时能够更加便捷地理解和操作各项功能。Eclipse作为一个开源的集成开发环境(IDE...
《InfluxDBStudio:Windows平台上的InfluxDB可视化管理工具》 InfluxDB,作为一款高性能、专为时间序列数据设计的开源数据库,被广泛应用于监控、物联网(IoT)等领域。为了方便Windows用户对InfluxDB进行管理和操作...