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

简介: 这是我在知乎上关于问题“只会 if, else, 数据库 CRUD 的 Java 程序员如何提升自己?”给出的答案。其实,这应该就是一个关于早期技术人员怎样突破瓶颈的问题。 作为一个爱好技术的人,我们最常见的技术入门——或者说技术切入点——就是开发有实际可见结果的应用——因为这个够简单,够有成就感。

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

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

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

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

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

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

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

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

目录
相关文章
|
9天前
|
搜索推荐 数据挖掘 项目管理
"揭秘:产品经理如何借助软件工具实现工作飞跃"
在互联网行业,产品经理是产品生命周期的核心驱动力。本文介绍了五款提升工作效率的必备软件:Boardmix博思白板、Miro、板栗看板、Figma和Google Analytics,涵盖在线协作、项目管理、设计协作及数据分析等多个方面,助力产品经理高效完成工作。
|
3月前
|
存储 缓存 开发者
CPU的架构涵盖哪些方面
CPU(中央处理单元)的架构指的是CPU的设计和组织方式,包括其内部结构、数据通路、指令集、寄存器配置、存储器管理和输入输出等一系列设计原则和技术的综合体现。
89 1
|
4月前
|
存储 缓存 分布式计算
成为工程师 - 如何提升系统写性能(下)
成为工程师 - 如何提升系统写性能(下)
|
4月前
|
存储 缓存 NoSQL
成为工程师 - 如何提升系统写性能(上)
成为工程师 - 如何提升系统写性能(上)
|
7月前
|
存储 缓存 监控
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(场景问题分析+性能影响因素)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(场景问题分析+性能影响因素)
118 0
|
监控 算法 调度
转:单纯形算法在监控软件中的优势、运用与误区
在监控软件中,单纯形算法可是大有作为,尤其是在资源分配、任务调度和性能优化等领域。并且在解决线性规划问题方面可是一把好手,能够找到在约束条件下目标函数的最优解。
80 1
|
机器学习/深度学习 存储 人工智能
如何构建可持续的ChatGPT高性能服务器端架构?
与之前的版本相比,GPT-4最大的改进是其多模态(multimodal)能力——它不仅能够阅读文字,还能识别图像。值得注意的是,虽然之前有消息称GPT-4拥有100万亿个参数,但OpenAI并没有证实这个数字。与其相比,OpenAI更强调GPT-4的多模态能力以及其在各种测试中的表现。
如何构建可持续的ChatGPT高性能服务器端架构?
|
缓存 前端开发 NoSQL
程序员该知道大型网站架构的发展历程吗?如何有效地增加服务器?
前面介绍了大型网站的业务需求和大致的工作原理,但是不能简单地理解为只要增加服务器就能把一个网站变成一个能应对大量用户的网站。 通过增加服务器来达到支持更多的用户是大型网站架构的目的。 本节简要介绍大型网站架构的发展,并介绍大型网站架构如何有效地增加服务器。 本节介绍的技术点只要了解即可,后续章节会有更详细的说明。 大型网站系统的内部是复杂的,一般是多种网站架构的混合(包括静态网站、动态网站和B/S架构网站等)。
|
设计模式 缓存 算法
阿里逆天级调优方案,内部这套Java性能调优实战宝典,堪称教科书
随着互联网的发展,高可靠、高并发以及降本增效,已成为各大公司面临的现实挑战,性能优化需求愈发迫切,大到分布式系统,小到代码块的算法优化,都已经成为你日常工作中必须要面对的事情。对于开发者而言,性能优化也从加分项变为一个热门技能,缺乏相关知识将很难在面试或工作中脱颖而出
阿里逆天级调优方案,内部这套Java性能调优实战宝典,堪称教科书
|
持续交付 项目管理 监控
解放互联网项目管理瓶颈——阿里云效帮你搞定!
随着互联网的快速发展,各大项目的管理问题越来越受各大企业重视,同样项目管理问题也越来越制约互联网项目开发的效率。阿里巴巴技术开发团队致力于服务世界,解放劳动力,提高快捷化、自动化的高效办公理念——云效平台就应运而生。云效平台,创立于2012年  ,是阿里巴巴旗下一站式研发提效平台。通过项目流程管理和专项提效自动化工具  ,真正实现24小时持续集成持续交付,为企业赋能、助企业提效,为企业提供一站式 研发提效平台。
1536 0
解放互联网项目管理瓶颈——阿里云效帮你搞定!