那些编程水平很高的程序员是怎么练成的?

2024-01-21 11:48

本文主要是介绍那些编程水平很高的程序员是怎么练成的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

靠自学和培训班,程序员顶多只能达到能勉强糊口的程度。靠做增删改查业务提升经验的程序员,收入只能勉强达到中等水平,而且到了30岁就会被毕业生所顶替。

    要达到水平很高的程序员,第一要找能提供优质实践机会的大厂,第二要在诸如高并发或机器学习的项目里多解决实际问题,第三还要不断跳槽,不断地找更优质的平台和更优质的项目机会。

    接下来说下成为高水平程序员的流程,顺便提些中间可能会遇到的发展误区。

    在校生,或者是培训班的程序员,哪怕学得再多,学习阶段接触的项目看上去再高大上,只要没有项目实践机会,这些程序员基本没有价值,因为学习项目和实际做的项目差距很大,而且如果学成以后有三个月的时间不去软件公司,那么学到的技能很快就会忘记。所以这个阶段的程序员应当尽快找打一份工作,当然如果直接找到大厂工作最好,如果没有,别顾工资,也别看公司大小,尽快找到一份能接触到真实开发项目的工作机会。

    在工作中接触到编程技术后,你就会发现之前学的技术很多是用不到的,或者精心学的语法或框架甚至项目里不是这样做的。这和学习无关,哪怕当时学得再好也会遇到这类问题,毕竟学习升级到实践总会有个过程。

    这时,项目需要的技术才是你真正要学的。我这里不给出详细的技术,因为对没有实践机会的程序员来说,这没有意义,而对已经开始做项目的程序员来说,这方面的体会一定比我还深,也不需要我说。在这个阶段,甚至通过一周做项目提升的程度要比学习阶段一个月提升的还要多。

    但如果程序员仅仅停留于此,可能会非常熟悉本公司的业务,凭此能在本公司混得风生水起,但技术上可能仅仅停留在增删改查。由于在大多数小公司里,未必能接触到高并发分布式,或大数据,或机器学习或深度学习之类的高级技能,所以如果在小公司呆就了,可能接触到的也就是增删改查的技术。

    这种技术不值钱,任何一个毕业生顶多通过半年就能掌握。所以此类程序员社会上会有很多,能力上顶多成为初级程序员,哪怕能力是在初级程序员阶段的天花板,但如果仅仅会增删改查,也只能是叫初级程序员。

    我见过太多的初级程序员,在30岁之后,只能在多个小公司之间辗转,工资也就维持中等水平,或者工资比毕业生还低。为了能从初级程序员提升到高级程序员,办法只有一个,进大厂,或者进独角兽企业之类的好一点的平台,因为大多数小公司只能提供增删改查的项目实践机会。

    怎么进大厂:背面试题,或者按大厂的面试机会,好好准备简历上的项目,同时准备大厂面试时需要的项目说辞和技术说辞。这个阶段是很难的,因为平时只做增删改查业务的程序员,很难在项目中挖掘出分布式组件等技术亮点,而且大厂面试官眼睛很毒,只要通过三言两语就能甄别出求职者是真有值钱技术的项目经验还是只会说。

    说句题外话,进大厂要早。虽然现在有很多所谓的面试秘籍,或者面试项目,其实大厂面试官通过提问,一定能甄别出哪些没相关项目经验,但靠所谓面试技巧发挥的程序员。

这点大家别有侥幸心理,本人在大厂做了若干年技术面试官,哪怕求职者之前背了太多的题,只要求职者没在项目里用过技术,这一问就能问出。但比如求职者比较年轻,比如25岁到27岁,面试官会在看穿的基础上,感觉求职者有一定潜力,所以面试也可能让过。但如果求职者过了30岁,或者年级更大,那么如果仅具备增删改查技能,可能就未必能进大厂了。

    进了大厂,或者接触到诸如分布式,集群或者深度学习等技术的项目后,程序员会发现一些高级技能的进阶途径。所谓实践出真知,只有具备相关技术的实践经验,程序员才能进阶到高级。

    如果程序员在项目里多上点心,多解决些实际问题,或者多接触些搭建集群等运维的活,可能进步起来会更快。

    到了这个阶段,程序员自己根本就不用主动进步,甚至能被驱动进步。这话怎么说?在平时开始时会接触到大量值钱技术没,在解决日常问题时,也可能会接触到值钱或者是底层源码,这样一来二去就有经验了。也就是说,有值钱项目的实践能力外带多通过解决问题积累经验,程序员能升级到架构师,这从技术上可能就非常强了。

    量化一下吧,100个程序员里可能最后能达到架构师水平的,未必会超过5人,我在上海,达到架构师水平的程序员,一年70万年薪都不算多。

    后面再要怎么进步呢?其实就是更好地变现技术,提升技术变现成金钱的能力。比如可以找个小公司做技术头头,或者找个风头行业的公司,或者干脆找个创业公司。 这个阶段,提升就不能单靠编程水平了,而是要靠提升解决实际问题的能力。

    最后做个总结:

    1 程序员的编程水平不是单靠训练出来的,而是靠做项目积累出来的。

    2 程序员做的项目,或者说程序员所在的公司也有三六九等之分,要提升能力先要找个更好的平台或包含值钱技术的项目。

    3 单纯靠学习提升编程水平很不现实,提升编程水平其实更靠准备面试的能力,面试发挥的能力和跳槽找好公司的能力。

    4 程序员毕竟也是吃青春饭的,如果不提升,可能会舒服一阵,但如果不升级到资深开发甚至架构师,程序员在30岁或者35岁以后,会很难。

这篇关于那些编程水平很高的程序员是怎么练成的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/629437

相关文章

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

电脑死机无反应怎么强制重启? 一文读懂方法及注意事项

《电脑死机无反应怎么强制重启?一文读懂方法及注意事项》在日常使用电脑的过程中,我们难免会遇到电脑无法正常启动的情况,本文将详细介绍几种常见的电脑强制开机方法,并探讨在强制开机后应注意的事项,以及如何... 在日常生活和工作中,我们经常会遇到电脑突然无反应的情况,这时候强制重启就成了解决问题的“救命稻草”。那

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.