撸过一万行代码,你看过这篇文章吗?

北上广深真的是技术的宝地吗?


犹记得刚刚参加工作之后,有人邀请我去深圳,说沿海地区是IT行业从业人员的宝地,只有在那里才会学到真正的技术,而且能拿到更高的工资,不管从哪个层面来说,都值得你去看一看。然而当时的我并没有听信他的话,甚至还在想,互联网是平的,只要你愿意学习,哪里都有机会。

这样的想法显然是错误的。在长沙这样的内地城市,也许你曾经一度对技术充满了兴趣,但是却不见得有机会让你实践新技术,往往很容易就开始接受公司领导层或前辈们的教导,一切以实现为重,最终把技术这条路给堵死。即使你想奋力一博,也往往年华不再了。

然而,真的只有内地城市才这样吗?那天我跟一位老程序员聊天,他说现在这个时代,技术发展太快了,就算他想学习,也看不到学习的方向,或者静下心来想学习也会被生活中的琐事所耽误。

他说,“而且现在的企业对开发者要求也越来越高,不像十多年前他大学毕业后去广州找工作那样,只要你有点开发基础,总能找到工作。公司对你的要求也不高,你代码写得好不好,是不是参考设计原则,都不重要,关键只有六个字,梭代码、梭得快就可以了。

我说:“在广州不是很不错吗?互联网技术应该也不错啊。

他说,“毛线,也只有顶级公司技术才会不错,大部分公司其实跟内地没什么区别。

好吧,我突然想起身边那几位去了北京深圳的朋友,他们也是从事软件开发领域,这几年都相继回到了长沙,我曾经问过他们觉得北上广深技术如何,他们都纷纷表示,也就那样吧,并没有想象中那么好,或者大部分都是吹得好。当然这几位朋友由于各种原因,也未能有幸进去顶级互联网企业,而且最终也未能在技术领域得以进一步精进。

当然也并非绝对,依然有许多人他们带着梦想而去,回到长沙时,已然成为出类拔萃的翘楚,在我把长沙.net社区拉起来之后认识的一些人,深深的感受到他们身上那些与众不同的感觉,显然有别于其他开发者,成为各家企业互相争夺的优质资源。还有许多开发者,他们的职场之路已经一骑绝尘,甩开很多个层次,成为技术世界中的顶级玩家。

是什么决定了这种区别?不得而知。

学不完的技术,哪些是自己的?


然后老程序员继续吐槽:尤其是人年纪大了,就越来越感觉技能脱节了,而且是近几年突然开始的,早几年还能写点移动端多端代码和后端代码,这一两年就开始有点跟不上了,虽然这一两年学了点python和go语言。

我说:“那也可以啊,这些语言都是目前最流行的互联网语言,学会了优势明显啊。

他说:“虽然学了那么多语言,但是却感觉根本只是一个搬运工,把网上的资料搬运下来,遇到的问题也根本解决不了。

我说:“好吧,那大概是学习不得法,或者没有获得积累吧。

(其实,我的内心同样没有底气,和他本质上没有任何区别,要说自己在技能上的积累,其实也好不到哪里去。

一直在内地城市,我深深的感觉到包括我自己在内,开发者们很容易进入一个职场的误区,即容易成为多面手,而无法在某些领域专精。由于一些公司对于人才的专业技能没有特别的要求,往往把独当一面当成是基本能力,只要你拥有这样的能力,就会把你往项目上丢,然后就是项目管理,部门管理,然后就与技术脱节了。当然,这些项目看起来也会用到许多不同的技术,但这种技术的应用水平却只是停留在初级水平,遇到问题,通过百度快速解决往往是第一选择,至于下次遇到了同样的问题,你该怎么做?还是继续寻求百度的帮助。为什么出现的技术问题,只要把百度中搜索到的魔法值一设置,答案就迎刃而解?

好吧,大部分这样出来的高级工程师,大概只是CV工程师。(Ctrl+C,Ctrl+V)。

职业规划,如何规划?


是什么原因导致了开发者们,哪怕去了北上广深,也没有成为真正的技术大牛、或者程序员们,学了那么多东西,却依然只知皮毛呢?

从某种意义上来说,也必须承认,许多以外包项目研发的企业,实际上对于软件工程师的职业发展规划根本就是失败的,毕竟让这些非科班出生的企业家、以及一些依托百度搜索、靠掌握CV编程绝技成长起来的高级工程师或TeamLeader来对软件工程师们进行所谓职业规划根本也是不可能的事情,所以从某种层面上来说,需要开发者自己来明白自己的职业发展规划。

在《构建之法》这本书中,有一个章节《软件工程师的成长》专门提到了这个内容。在这个章节中,邹欣老师提到,初级软件工程师应该有以下几种成长:

1、积累软件开发相关的知识、提升技术技能(如对于具体技术的掌握,动手能力)。

2、积累问题领域的知识和经验。

3、对通用的软件设计思想和软件工程思想的理解。

4、提升职业技能(区别于技术技能)(例如自我管理的能力、表达和交流的能力、与人合作的能力)

5、实际成功。应该做出一些能够公开展示的工作成果。

同时,老师也提到了一些职业成长的建议,包括做好自我评估的一些方法,虽然不少开发者做的都是所谓的"CRUD”开发,但并非这种开发方式就是没有技术含量的事情,同样需要一些核心技术和扩展的知识。

例如,一个简单的单表增删改查,看似是满足数据存放到数据库的最简单的操作,每天的重复或许枯燥无味,但是与数据库技术相关的操作、大于大容量数据的数据库操作、并发、备份、以及进一步的关系数据库模型和数据挖掘和商业智能,都是属于可以进一步的扩展能力。

所以一个人的知识成长,如同早年一款流行的策略类游戏《帝国时代》中的知识树,往往都是从最基础的技能出发,推而广之,进一步扩展,最终才能打造出更加完善的知识体系。

而如何才能提高技能?邹老师认为,“答案很简单,通过不断的练习,将低层次的问题都解决,变成不经大脑的自动操作,才有足够的时间和脑力来解决更高层次的问题”。老师将问题分成3个层次,分别是:低层次问题(变成自动操作)=》容易精通;中间层次的问题(由于需要花一点脑力来解决,所以可以是不断的学习中);而高层次的问题,大部分情况下是无暇顾及、甚至很难遇到很难重现的,所以也很难成为所谓精通。

       640      

在工作过程中,尽可能的积累经验,让自己掌握的技术更加纯粹,形成自己的技能,除此之外,我们也可以有一些适当的自学来进一步扩充自己的知识面。在长沙.net技术社区博客兴趣小组中,有朋友指出,通过不断的自学和练习,也可以形成自己独特的学习方法,这些学习方法能够快速的应对技术变化带来的挑战。在这个知识大爆发的时代,靠死记硬背来记住某些问题的解决办法可能作用不大,只需记住具体的问题关键点即可。能力强的人不一定比其他人会许多东西,而是能够以更快的速度解决问题。

例如,像我曾经提到的作者邹琼俊,他的学习方式就非常独特,那就是自学一种技术,并出版一本书,然后把他应用到公司项目中,进而推动公司的技术变革。在此之前他已经出过.NET技术书籍《Asp.NET企业级开发实战》这样的畅销书,最近他又出版了一本新书,这本新书则是基于跨平台技术开发的书籍《H5+跨平台移动应用实战开发》,这本书通过模拟一个社区的维修功能模块来介绍如何进行H5+跨平台移动应用的开发,采用了一些目前主流的前端开发框架或语言进行编写,包括MUI、ES7等。

(据我所知,在目前的开发者圈子中,有关这一块的技术书籍似乎不是特别多,尤其是前端技术发展的非常快,所以许多技术与生产环境严重脱节了,而这本书则采用了目前都比较先进的一些技术,确实值得大家入手。)

当然,我的重点并不是介绍这本书,而是介绍邹琼俊学习的这种形式。难道还有比写一本书更好的学习方式吗?

结语


对于IT企业而言,如果不掌握技术革新的方法或抓住新的机遇期,或许迎接而来的是自然而然的内卷化到死亡。《浪潮之巅》一书中,将企业变革称为“转基因”,吴军老师认为,技术浪潮面前,要保持优势,需要具有不断变革的勇气和能力。

人何尝不是如此?学习,并不断的练习,进而形成自己风格的高效学习法,正是开发者们不断刷新自我知识体系得到的宝贵财富。

640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Codeforces Round #595 (Div. 3) F. Maximum Weight Subset 树形dp

传送门 文章目录题意:思路:题意: n≤200n\le200n≤200 思路: 明显的树形dpdpdp,所以考虑一下dpdpdp状态。 这个题状态挺神的。。可能是因为我太菜了,看了半天才看懂。 算法111: 复杂度O(n3)O(n^3)O(n3) …

利用ICSharpCore搭建基于.NET Core的机器学习和深度学习的本地开发环境

每个人都习惯使用Python去完成机器学习和深度学习的工作,但是对于习惯于某种特定语言的人来说,转型不是那么容易的事。这两年我花了不少时间在Python,毕竟工作的重心也从移动开发转为机器学习和深度学习。感谢我的老板给我很大的空间去开拓新…

Acwing 252. 树 点分治

传送门 文章目录题意:思路:题意: 思路: 好久没写淀粉质了,心血来潮复习一下。 淀粉质通常用来统计路径个数,将路径分为子树内的和子树之间的。子树内的递归处理,子树间的存下信息来每次都处理即…

CLR与JVM

首先要纠正垃圾回收在于JVM和.NET的CLR的平台功能而不是语言本身。存在一些历史差异主要是因为.Net的设计是从java(和其他基于gc的平台)演变中吸取教训改良后的结果。CLR一开始就设计成了分代垃圾回收,但是初始JVM没有分代垃圾收集器。第一代…

使用Mutex进行线程处理

Mutex就像一个C#锁(lock),但它可以跨多个进程工作。换句话说,Mutex可以是计算机范围的,也可以是应用程序范围的。Mutex是一个同步原语,也可用于进程间同步。当两个或多个线程需要同时访问共享资源时,系统需…

Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing 二分 + check

传送门 文章目录题意:思路:题意: 思路: 直接算不好算,考虑二分这个中位数midmidmid。 考虑如何checkcheckcheck,这个分情况来就好了: (1)mid>a[i].r(1)mid>a[i].r(1)mid>a[i].r&#…

【Linux】Linux常见指令解析上

目录 1. 前言2. ls指令3. pwd指令4. cd指令3.1 cd常见快捷指令 4. touch指令5. mkdir指令6. rmdir指令 && rm指令 (重要)6.1 rmdir指令6.2 rm指令 7. man指令 1. 前言 这篇文章我们将详细介绍一下Linux下常见的基本指令。 2. ls指令 语法: ls [选…

PYPL 7月榜单公布:Java份额出现下降趋势

PYPL(PopularitY of Programming Language,编程语言流行指数) 7 月份的榜单已发布,目前包含四个排行榜,囊括编程语言、IDE、ODE(Online IDE) 以及数据库四大领域。PYPL 是非常流行的参考指标,其榜单数据的排名均是根据榜单对象在 …

Codeforces Round #593 (Div. 2) D. Alice and the Doll 暴力 + 二分

传送门 文章目录题意:思路:题意: 思路: 还以为这个题有什么高深的算法,结果就是个暴力。 由于n∗mn*mn∗m达到了1e101e101e10的级别,所以直接暴力肯定是不行的,考虑有很多空格,我们…

远古魔力 | 在Windows 10和Azure App Service里跑上世纪的ASP

ASP(没有.NET) 即 Active Server Pages (动态服务器页面)是一项由微软公司在1996年推出的技术,能够在IIS中运行动态网站。也许许多90后及千禧一代程序员并没有听说过它,但很多老程序员曾经用ASP编写了诸如D…

P2375 [NOI2014] 动物园 kmp fail指针/倍增

传送门 文章目录题意:思路:题意: 思路: 由kmpkmpkmp中失配数组nenene的含义我们知道,ne[i],ne[ne[i]],...ne[i],ne[ne[i]],...ne[i],ne[ne[i]],...都是iii的相等的前后缀,但是可能有重叠的部分&#xff0c…

DDD“上吊绳驱动开发”,开发要想不被“吊死”,该如何自救?

话题缘起01今天在DevOps案例深度研究讨论群里,群友们围绕一种开发模式展开了讨论:DDD(Deadline Driven Development),期限驱动开发,大家似乎更愿意将其翻译成“上吊绳驱动开发”。这种开发模式是说在接到新…

「Sqlserver」数据分析师有理由爱Sqlserver-好用的插件工具推荐

在此系列中,笔者为大家带来一些以数据分析师视角去使用Sqlserver的系列文章,希望笔者走过的路能够给后来者带来一些便利。背景介绍在数据分析师的角色下,使用数据库更多的是为了从数据库中获取数据,和数据库交互的语言是SQL&#…

P4824 [USACO15FEB]Censoring S kmp + 栈

传送门 文章目录题意:思路:题意: 思路: 如果删除之后两个串不拼起来就是个裸kmpkmpkmp了,但是这个题能拼起来,拼起来之后还有可能生成一个新的串,而且起点在当前位置之前。 考虑是否能找到删掉…

使用kubectl管理k8s集群(三十)

前言Foreword在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理。命令和语法记不住没有关系,但是请记住主要的语法和命令以及帮助命令的使用。在下一篇,我们将讲述使用Kubeadm来创建k8s集…

P3435 [POI2006]OKR-Periods of Words kmp + fail指针

传送门 文章目录题意:思路:题意: 思路: 转换一下题意,就是求一个最小公共前后缀,显然可以暴跳nenene数组,复杂度O(n2)O(n^2)O(n2),注意到我们每次都跳的话会跳到很多重复的位置&…

架构杂谈《四》

分布式一致性协议一、引言在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本(replica),这些个副本会放在不同的物理机上,为了对用户提供正确的数据,我们需要保证这些放在不同物理机上的副本是一致的。为了…

Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes kmp + dp

传送门 文章目录题意:思路:题意: 思路: 通过完美子串的定义,我们不难发现满足条件的子串就是kmpkmpkmp中ne[n]ne[n]ne[n]不断向前跳得到的串,现在问题就是如何求这些前缀串在串中出现的次数了。 考虑一个前…

译 | 宣布ML.NET 1.2 及模型生成器更新(用于 .NET 的机器学习)

原文:Cesar De la Torre翻译:Edi Wang我们很高兴地宣布ML.NET 1.2 和模型生成器和 CLI 的更新。ML.NET是 .NET 开发人员的开源和跨平台机器学习框架。ML.NET还包括模型生成器(Visual Studio 的简单 UI 工具)和ML.NET CLI(命令行界面),以便使用自动机器学…

Codeforces Round #590 (Div. 3) F. Yet Another Substring Reverse 子集dp

传送门 文章目录题意:思路:题意: 思路: 之前做过类似的题,翻转一个字串相当于将任意两个不相交的串连在一起。再一看字符集≤20\le20≤20,那就是铁子集dpdpdp了。 定义f[i]f[i]f[i]表示状态为iii的串的长度…