一个IT老兵的个人感悟--程序员如何选择赛道

    好久没有写一些东西了,最近团队的同事也对工作方向产生了迷茫,正巧看到CSDN也有这个话题的讨论,那我就以一个20年IT行业的所谓“老兵”这些年走过的路,和大家聊聊关于程序员选择赛道的问题吧,希望能够帮助到有需要的、迷茫期的朋友们。声明:以下都是个人的观点,不喜也请轻喷。

关于程序员这个行业

    首先我认为,程序员这条路,和其他任何行业都一样,都是需要不断的学习、学习、再学习的过程,没有人能随随便便成功。很多年轻的朋友都认为程序员是高薪职业,都是冲着这份报酬还不错的工作,才选择的这个行当。但是,随着时代的发展,科技的迭代,大量计算机人才的涌入,编程这个大的领域,也被越来越细分化了。遥想当年,我刚参加工作的时候,懂一点点C/C++或者JAVA,能画个C/S架构的前端界面,能根据业务需要写出个SQL语句,就能在当时拿到很高的工资,这样的时代真的一去不复返咯。

  当然即使是今天,仍然还是有很多高薪的程序员岗位,坦率的讲,要想拿到高薪,那么所要付出的成本,较之200X年,真的要高许多。因此,选择程序员这个行业,我觉得一是要有足够的热情,是真心喜欢,二是真的要有持之以恒,不断学习积累,才有可能成功。希望能读到这里的朋友,尤其是刚打算入行的朋友,扪心自问,是否能够有坚定的走下去。

程序员能干什么

聊到这个话题,大多数人可能都简单从前端、后端这些角度来讲,我的角度可能和别人不同。首先要认清,程序是什么?程序就是将人的想法流程化,然后按照计算机的“规矩”告诉它执行的步骤和方式。

    而程序员的工作职责,就是将人的想法,处理问题的办法,告诉计算机去执行。计算机就是一种工具,举例的话,计算机就像一台拖拉机车头,挂上不同的配件,就可以耕地,可以拉货,可以推土,甚至可以临时充当防弹的坦克。现在的计算机,算力已经非常强悍了,如果再加上云架构,算力强悍到几乎可以解决绝大多数需求的问题了。所以单独讨论程序员,范围还是很大的。我觉得大体可以有以下几个分类吧:

硬件类

    1)单片机开发,工控机编程,驱动程序开发......(智能硬件、底层的开发、工控机编程...)

    2)通用操作系统类研发(计算机架构,数据结构,存储结构,调度算法......)

软件类

    -科研/专业领域研究(数学,物理,化学等理工科的专业知识)

   -日常应用类(这类是最广泛的,程序员的数量也最多,要解决各行各业实际问题的大类,也是综合能力和专门的业务能力要求最高的)

   -安全开发类(代码安全审计、防病毒软件、逆向、漏洞研究与研发......)

   -AI方向(当下最热的专业,统计统筹学,人脑科学,各种数据分析归类算法......)

前端设计类

      之所以将前端设计单独划分,是因为我认为以上所有的软硬件的分类,最终都是要人来使用的,要人去使用,就离不开前端的工作。(美工、js框架的使用、数据库与sql、web应用协议和数据交互(HTTP协议、HTML XML YAML JSON......))

程序员的路该如何选

    上面是我对当前的计算机程序员的简单分类和理解。个人建议:

    1)无论是软件、硬件还是前端方向,都需要学习和掌握:计算机的基本原理,至少一门编程语言(无论什么语言,C/C++/JAVA/PYTHON/GO/PHP/CGI,甚至是BASH/POWERSHELL.....)目的是理解计算机语言的处理“规矩”,所谓万变不离其宗,任何计算机编程语言,都是要遵循“顺序、选择、循环”,任何计算机语言,也都会涉及常量变量、数学/逻辑运算、函数调用、内存/数据的管理......这些无论是那个方向,都是基础必修课。

    2)至少要学习一些数据库SQL的基础知识,无论是MYSQL、SQL SERVER、ORACLE...甚至是ACCESS,还是新兴的REDIS等NO SQL的数据库,同样,目的不是精通,而是学习掌握通用的SQL,增删改查(CURD)等操作,因为是程序员就一定要处理各种数据,处理数据就一定涉及到数据的存储和加工处理(CURD),就一定会用到数据库。

    必修课就好比是考驾照,有了驾照,才算是程序员的敲门砖。至于考完驾照,买什么样的车(选什么样的路),我个人的理解是:

    一、专业领域方向:在这个领域,专业的知识比计算机知识更重要。记得我上学的时候,老师讲过一句话我至今记忆犹新,真正写程序的高手,不是你们计算机系的,而是数学系的。现在想想真的有道理。计算机其实最早的用途就是科学研究的计算,数学是逻辑性极强的学科,数学系的演算、推理、统计、优化算法的能力,比纯计算机系的人要强多了。这类专业程序员的朋友,建议学一门PYTHON就足够了。一是PYTHON足够简单,二是其拥有足够多,足够好用的包,比如科学计算的numpy,绘图的Matplot等等

    二、偏硬件的编程领域,这个层面因为大多数开发都不是X86架构的,更多的可能是ARM架构,或者其他单片机架构,PLC工控等特殊的架构,这就意味着必须去研究对应硬件手册,开发环境(上位机),特殊的标准等等了。此外,一些标准的通信协议(比如串口的RS232/485)蓝牙协议,WIFI协议等等,也是根据从事的行业,产品的要求去深入学习。

以上两种专业领域的程序员,我个人认为,入门难,学习时间成本高;但一旦入门深耕的话,不可替代性更强。

    三、通用的前端,基础是JS,从JS发展出来的各种框架至少会一种,当然可以学习几种,要清楚各自的优缺点和适用场景。中间件和HTTP的数据交互,WEB页面的各种元素,也要深入的理解学习(谷歌浏览器的F12是个好东西^_^)。

    四、通用的综合应用(偏后端)。这类程序员我认为是目前最多的。工作的目标就是用计算机去解决不同行业的不同问题。这类工作面向的不再仅仅是计算机类的知识,更多的是要根据具体的应用行业的特点,比如12306抢票的特点和某个企业的物流管理系统亦或是某个论坛系统,不同行业面向的服务对象的特点是完全不同的,因此所适用的技术栈也是完全不同的。随着数据量的越来越大,通常来说,分布式的处理概念,多并发的架构,以及中间件,负载均衡等技术,都是需要深入学习理解的。

     这类解决实际问题的应用类程序员,需求量大,就业和入门相对更容易一些,但同样也意味着会更“卷”,淘汰率高,不可替代性也差,一旦有新的技术出来,新的架构出来,可能之前学习的各种软件、方法都不适用了;此外,因为这些应用有其自身行业的特点,通用性其实也较差,还是刚才的例子,一个某企业物流管理系统的研发,未来想跳槽到某外卖的数据管理业务研发岗,往往是很困难的。

     洋洋撒撒写了一堆,总的来说,程序员这个行业,无论什么端,最终都是用计算机去解决人的问题的。无论选择什么行业,什么端,有效的学习和经验积累,才是最重要。机会总是留给有准备的人的,程序员这个职业的特性,就注定了不能懈怠,注定了只能不断的学习再学习。一起努力吧,写下这些文字与诸君共勉。

  • 27
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值