技术人员初入门,该如何突破早期瓶颈?

这是我在知乎上关于问题“只会 if, else, 数据库 CRUD 的 Java 程序员如何提升自己?”给出的答案。其实,这应该就是一个关于早期技术人员怎样突破瓶颈的问题。

作为一个爱好技术的人,我们最常见的技术入门——或者说技术切入点——就是开发有实际可见结果的应用——因为这个够简单,够有成就感。而无论哪个平台、框架上面的应用开发在现阶段都逃不开楼主所说的,某个编程语言的学习(Java、Ruby、PHP 等),某个数据库(Mysql、Sqlite、Mongodb 等),再加上楼主未曾说的该框架、平台(Rails、Android、IOS 等)的知识的掌握。

编程语言、数据库、应用开发框架——这三个部分构成了早期从事应用开发的程序员的全部。

所以当进行了够多的应用开发后,我们就往往会产生这样的思考——我会写应用了,但是我觉得我学会的技术别人学了也会,我的优势在哪里?我想继续提高,我该怎么走?以及类似于楼主这样更为具体的问题:只会 if、else,数据库 CRUD 的 java 程序员如何提升自己?

我觉得,一句话可以指点这个阶段的开发人员——向上走,向下走。

向上走,指的是进一步学习设计——没错,程序员的工作本质上也是设计(只是我们好多人都没有意识到):代码设计、算法设计、架构设计等等。之所以觉得自己在重复地做事情,是因为你的每次设计都采用了同样的方案——排序?用快排吧;生成实例并且要解耦?嗯,用工厂吧;要提高系统性能、可用性?嗯,用 cache 吧。虽然说利用现有的设计方案是设计人员的必经之路,但是如果一次又一次的重复利用相同的方案,你就会觉得自己并没有提高——虽然对于项目本身来说是安全、可靠的。在学会了基础的应用开发之后,你就算是学会了最基础的设计方法。然后你要提高,就得继续去学习更为优秀的设计方法:代码设计上,我们去参考设计模式;算法设计上,我们去了解针对同一个问题的不同的解决方案的可用场景以及相应的优劣性;架构设计上,我们去探索最适合现在我们应用所处的环境最好的解决方案(听过腾讯一位技术总监的演讲,他们后台的用户数据、关系系统的架构就有自己的选择:例如数据库中的读取尽量没有用到锁)。总之,学会了基本的应用开发,就可以尝试向上走,走“形而上学”的路子。我想楼主应该已经看出来了,我的建议具体化下来的时候,就是去学习设计模式、算法设计、架构设计(现阶段仅仅了解一下就好,将来在实际情况中去实践的话体会更深)等一系列关于设计的知识。

向下走,指的是去了解系统下面的世界——也就是说,去学习系统的运行机理,“知道机器在干什么”(我最敬佩的 C 语言老师所言)。一个应用程序运行起来,就得有各种支持它的系统——计算机硬件系统、计算机操作系统、编译系统、语言运行时系统。如果不去了解这些“土壤之下”的机制,你就会觉得自己写的程序有如空中楼阁,不得其中真谛——譬如,同样能达到目的两条语句哪个机器执行的效率最高?哪样的代码组织会导致最终程序执行的崩溃?怎样去避免代码中的内存泄漏?——所谓知其然,不知其所以然也。所以,代码要写的明白,咱就得往下走,去了解底层。我们可以去看看 linux 对于进程的内存、CPU 管理机制是怎样的,从而去优化我们程序的性能;我们可以去看看数据库的存储引擎,从而在深刻理解之后写出更为高效的 SQL 代码,并且进一步对自己的数据库进行设置、调优;我们可以去看看 JVM 是怎样进行垃圾回收的,从而避免 java 中恐怖的隐性内存泄漏。楼主向下走,可以去学习操作系统、计算机体系结构、编译原理以及运行时等知识——你会在学习的过程中对于自己曾经遇到的问题恍然大悟(我就经历过好多回了,每次都高兴不已哈哈)。

最后再提最重要的一点——不要把写代码本身作为终极目标,而应该把代码之上、之下的东西弄透。我想,这也是区别代码工人和研发工程师的界限之一吧!

时间: 2024-10-05 14:41:53

技术人员初入门,该如何突破早期瓶颈?的相关文章

技术人员本身的技术发展瓶颈的突破

http://jandan.net/2014/03/23/programming-languages.html在知乎看到一个问题,相当有代表意义,即技术人员本身的技术发展瓶颈的突破问题. 具体问题如下,通常情况下,技术人员在某一领域工作3-5年后,会成为团队内或者公司里的核心技术骨干,这个时候他们也会面临几个问题: 技术学习的困惑:当达到一个瓶颈时,可以学习的参考系越来越少,首先是因为高端技术人才呈现倒金字塔形态,身边缺少能引领你的人生导师:其次,业内的技术交流,大多数在做科普以及刷存在感,到达

技术人员如何转行(转载)

作者:janua 作为一名技术人员,我总是对未来的前景感到一阵阵悲哀.有感于对这个投票贴的名字,发表一点自身的感慨. 做为技术人员,大家都觉得工资高,工作稳定,还能学到很多的东西.是大部份走出校门或性格内向,或希望过平静生活的人的必然选择.其实,你们有没有问过自己,这条路到底走对了吗? 一个刚毕业的大学生,从事销售和从事技术两种不同的工作,可能工资的差距会达到数倍之远.对于初出校门的人来说,不无一种极端的诱惑力.刚毕业的年青人,当然会果断的选择技术之路. 两年后,我们再看看,由于经验的积累,

技术与技术人员的价值

在我工作到第四年出头时,总是感觉自己的价值被低估了,换个说法就是感觉工资低了. 当时,总觉得技术不如管理,但又听闻有人一直做技术也有到年薪百万的,虽不在身边,但江湖总有这样的传说.再环顾周身环境,似乎除了去伊拉克做技术能让收入立刻飙升(补贴超过工资),让我不禁怀疑江湖的百万传说是不是被高估了.再加上工作几年后,技术提升感觉明显变慢,第一个天花板已近在眼前. 分类 又过了七.八年后,再回顾走过的技术道路.感觉技术的价值有时被高估,有时又被低估,但长期看,很少有人能一直享受到高估的溢价,同样也很少有

丹东市国土资源信息中心派专业技术人员外出学习培训心得

丹东市国土资源信息中心派专业技术人员外出学习 来源:丹东市国土资源局 作者: 时间:2015-12-08 10:25:00 丹东市国土资源信息中心根据工作需要,近日派出2名技术人员到中科地信(北京)遥感信息技术研究院学习.信息中心承担国土资源专项工作较多,专项工作技术性强.软件系统复杂多样,在日常工作中经常遇到难解问题,多项工作都是在干中学.学中干,遇到难题经常需要邀请其他技术单位做指导.根据这一实际情况,信息中心派2人到中科地信(北京)遥感信息技术研究院学习.该院是地理信息系统技术在地籍管理.

技术人员应该如何让产品合理的妥协

文章背景,来自于群内周五晚上的一次头脑风暴式的思维碰撞交流活动.活动主题由无痕哥发起.文章版权属于群内发过言的任何一位同学,我只是做了简单的梳理或整理. 1. 技术人员了解产品这个岗位所需要做的事情,然后试着从产品的角度出发,考虑当前页面功能的真实需求,挖掘更深层的可扩展需求,从而在另一个方面去引导产品. 比如:一个注册页面,当前产品想到的是一个普通的用户注册,但是在整个的平台中,可能还有vip邀请注册,这时候可以试着想两个能不能合在一起,如果不能合在一起,就要分别处理. 2. 有的公司没有专门

技术人员职业规划(二)

技术人员的困惑主要来自于两个方面: 1.如何选择一个适合自己的方向 2.如何“立足于现状”达到目标职位的“实际要求” 一.如何选择一个适合自己的方向 首先,对于技术人员来说,典型的发展方向就两个:技术路线和管理路线. 技术路线:工程师-架构师…科学家 管理路线:工程师-项目经理-部门经理…首席技术官 各个企业可能因为自己的业务特点,进行大同小异的调整,比如我们公司是这样的: 技术线:工程师-高级工程师-架构师-高级架构师-资深架构师… 管理线:工程师-高级工程师-项目主管-项目经理-部门经理…

技术人员职业规划(一)

几乎每个企业都需要技术人员的支持,生产制造型企业需要现场生产控制和工艺流程方面的技术人才:IT等高科技行业需要大量软件研发和设备维护的硬件工程师:房地产.建筑工程领域需要建筑设计师.土木工程师和施工技术人员.此外,不论是国企.民营企业还是外资公司,都需要大量的基础技术工人.甚至很多在豪华写字楼office内工作的白领,从事的工作都是和技术相关的. 不过,一个严峻的现实是,大量的技术类人员对自己的职业定位和职业生涯规划显得非常迷茫和困惑.中国有句古话:劳心者治人,劳力者治于人.与管理类岗位相比,技

技术人员如何改变自己的前途和命运

在中国,技术人员或者说互联网开发者如何来改变自己的前途和命运呢?      这个问题我们争论了好多年,也思考了很多年.目前中国的现状极其悲观,能走出的开发者比例非常之少. 大多数情况都是技术被压制.不被尊重,至少我遇到的九成开发者是这样,技术人员的命运可以用"惨淡"两个字来形容.       究竟是什么原因导致这种现象的出现呢?我想,这跟中国的社会环境不无关系.        在美国,很多公司可以把一整个项目全部交由技术人员去完成,而中国,全部交由技术人员去完成的项目往往在市场上行不通

web技术人员-推荐书籍

学习是技术人员成长的基础,本次分享20本技术方面的书籍,这些书不是每一本都是经典,但是每一本都有其特点.以下20本大部分本人都看过,因此推荐给大家.(本次推荐的20本只是一个参考,比如像Head First,Java编程思想等经典书籍是大家都知道,因此不在推荐之列) 本次分享大纲 大型网站架构系列 分布式系统系列 BAT技术文学系列 架构设计系列 本次分享总结 一.大型网站架构系列 第一本:<大型网站技术架构:核心原理与案例分析> 这是本算是国内大型网站架构的经典之作,由阿里人李智慧创作,听名