我(作为一名开发者)所犯过的错误
我2006年开始工作,至今已经10年。10年是个里程碑,我开始回顾自己曾经犯过的错误,以及我希望从同行那里得到什么类型的忠告。一切都在快速改变,10年了,我不能确定这些秘诀是否还有用。
不管您是新人还是老手,您都会发现我的话是有用的。我期待听到您的观点,所以请不吝赐教给我回信。
坚持使用一种平台,框架或者语言
在过去10年间我所犯的最大的错误是:每次换工作时我都会换一个软件平台。
开始我使用Enterprise Java Development,然后是嵌入C软件,然后,对于Windows桌面应用我使用VB, C#和C++,然后对于iOS应用我使用Objective-C,然后使用NDK做Android库,最终做Android应用。
这一职业生涯确实了不起,但是老板们并不在意。你花费10年时间进行软件开发并没有什么意义。如果你不能创建Android应用,你将不会得到一份Android开发人员的工作。
更换软件平台会对您的简历产生极大的负面影响。让一位雇主决定花大价钱雇佣一位开发者,而他却并非某一特定软件产品的专家,这确实很难。
许多公司并不在乎你的过去。相比于所有那些年在其他软件平台的工作经历来说,技术面试更为重要。这就是为什么好的开发者即使没有多年的开发经历也会找到工作的原因。
我们要怎样才能适应市场呢?你能做到的,就像我一样。但是你需要对自己投资:在空闲时间学习新技能,如果需要的话甚至可以休假去学习。还要降低您的薪金预期。您需要退一步然后再进两步。
一旦您发现一种软件平台、框架或者语言让您充满热情,那就坚持下去。长期来看您的预期薪水和您的就业能力会比频繁转换软件平台要好得多。找到对此技能组合具有需求的最好的公司,跳槽进去。我知道这个道理其实显而易见,但是我却用了很多年才意识到这些。
不要为了钱而谋求管理职位
过去我一直认为薪水高的工作是为穿套装和做行政决策的人准备的。虽然对于小部分人这是真的,但是熟练的开发人员通常比中层管理人员工资高。
在职业生涯中我一直想要成为项目经理。学习了许多有趣的东西后我成为了项目管理硕士。但是,作为产品经理工作了一段时间后,我最终意识到那不适合我。
作为开发者我们的挫折感来源于不好的公司文化,更确切的说:不好的技术文化。我看到了(企业间在)这两方面存在的巨大差异,我离开了西班牙。(现在)我感到更受欣赏了并且我也更喜爱我的工作了。
作为一名开发者如果你工作的不开心,晋升并不能解决问题,不如跳槽,换公司,旅行,打开你的心扉并且去国外工作,世界上有许多技术中心急需开发人员。
开发人员中的沮丧和失败感比我们想象的要普遍。我们的经理们很少理解时间紧迫导致的心力交瘁会影响代码编写,结果和数量。有时候我们仅仅需要出去走走透透气。就象下面我写的诀窍所提到的。
休息一段时间
我从未失业过,直到今年。10年了,我需要休息一下来“重构”自己的职业生涯,这是我做的最好的决定之一。
我休息了5个月,离开我的工作成为自愿的失业者。我能感觉到每个人都多么的担心我的职业生涯将就此终结,但是结果恰恰相反。
从10年间一个一个的换工作,期间仅仅休带薪年假,到现在不用工作,真是太爽啦。在我们的行业中没有什么比所从事的工作不能给你带来快乐更糟糕的事情了。
就我来说,4年了,我想要坐下来学习德语,却从未抽出时间去做。在这5个月里我学习了精读课程,一天三小时,这让我的语言水平从A2上升到B2,足够应对日常社交活动用的了。
回去重新工作比我想象的容易得多。所以,如果你需要休息的话就不要害怕休息。在我们的行业里,您简历中的一段空白是容易解释的。但是,如果您这样做,就必须确保按照我下面的建议做。
ABC:永远不要停止编码
在我5个月的休息期间,我开始了一项个人项目:一个使用Discogs.com API的Android应用程序。我想拥有一个易用的应用程序,以便从我的收藏中添加和移除记录。我还想磨练自己的开发技能。
多亏了这个可爱的小项目,我才能够信心慢慢的应对求职面试。它让我尝试了新型的库和开发模式,今天我在工作中还在成功的使用着它们。
我希望我早就开始这样做。我们的工作趋向于重复化,并且经过几年后变得更无序化。所以我们进行探索试验和自我提升的空间就越来越小。
拥有个人项目,阅读(书写)播客并且尽量说出自己的想法,从长远来看会让您成为一名更好的开发人员。为了图个乐儿,请将您的代码放到GitHub上,并且在社区中分享您的经历吧。
参与社区
还是一名学生的时候,我总认为自己没有时间参加小组和社团活动。当我有了第一份工作后,我最不想做的事情是和其他开发人员一起消磨时光。
我错了。
聚会和用户组是有趣的并且是您的工作圈子之外与开发者同行们相遇的好地方。如果您想好好利用这些就表现得积极些。提供您的帮助,分享您的经验,与身边的人交谈。每个人都喜欢谈论自己的经验,而且您或许将会遇到一些潜在的雇主。
一些新手组总是需要培训师。您还可以去指导新人,开讲习班,甚至发起赞助活动。
如果您不知道从哪儿开始,在Twitter上提问,在Meetup.com上搜索。查找Google Developer Groups,Cocoaheads 或者JS usergroups。本地组总是好于全球社区,去参加见面会吧,玩得开心些。
当然,要注意行为举止。学习他们的行为准则并严格遵守。去获得不同类型的人的喜欢,不要怕与他们交谈,以便您多元化发展。
忽略招聘公告
我的最后一项智慧。不要通过各种招聘公告获取工作。
招聘公告已经被玩坏了。过分复杂的人力资源流程,候选人追踪系统,简历垃圾邮件以及缺少必要清晰的沟通,这仅是各个公司不再依赖猎头公司的小部分原因,猎头公司不可能找到天才人物。
真正的天才会忽略招聘公告。网络是一个途径。如果处于本地社区中,您将获得最新消息——何时有人离开了一个重要岗位,何时一家您感兴趣的公司获得了资金以及谁在招聘。
您还会知道一些公司比另一些公司更好。许多正在招聘的公司内的开发人员会对您很真诚,他们会告诉您他们的经理是否厉害,甚至他们的工资如何。
如果您看到一个感兴趣的工作机会,请查看您的网络。看看您的用户组或者LinkedIn中是否有人在那里工作或曾经在那里工作过,或者问问是否有人认识那里的人。直接和他们联系,与首席技术官、人事部经理或者公司的其他开发人员交谈。
猎头公司确实不错,但是不要依赖它们。他们的任务是赶在别人之前填补一个职位空缺,他们不是在那里帮助您找工作,他们不为您工作。如果他们提供的位置恰好是您要找的,那就去努力争取,如果不是您要找的,就说谢谢,但是没必要真的感谢他们。
我希望我的文章对您有所帮助。我想这些归根结底是快乐和有趣的。不要有太高的追求,仅仅把开发作为一项爱好来喜爱,这样您会永远喜爱您的工作。
坚持使用一种软件平台,框架或者语言。从长远来看您的职业生涯将会更好。
如果您真的想成为一名开发人员,不要被迫担任管理职务。
如果需要的话休息一段时间
不要停止编写代码,拥有个人项目并且把开发当成一种爱好来享受。
参与社区活动,参加聚会,玩的开心并获得恢复。
忽略招聘公告,构建您的网络,如果您想要找一份新工作的话就和人们谈谈。
谢谢阅读。
- Java并发学习之ReentrantLock的工作原理及使用姿势
- Linux基础(day63)
- IOS WebView控件详解
- Java并发学习之synchronized使用小结
- 18.3/18.4/18.5 用keepalived配置高可用集群
- JDK容器学习之Queue:DelayQueue
- React-Native组件之 Navigator和NavigatorIOS
- JDK容器学习之Queue:ConcurrentLinkedQueue
- JDK容器学习之Queue: PriorityQueue
- React Native导航器之react-navigation使用
- Nginx 路由转发配置笔记
- React Native控件之ListView
- Java学习之深拷贝浅拷贝及对象拷贝的两种方式
- [周末课程]什么是“页面业务流程”分析思维导图?如何编写页面假JSON数据? &下一个前端组件“日历”
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- LeetCode96|二叉搜索树中的搜索
- LeetCode95|字符串中的第一个唯一字符
- LeetCode94|Pow(x,n)
- LeetCode93|数值的整数次方
- LeetCode92|排序数组
- 缓存 | 从本地缓存到分布式缓存, Guava, Caffeine, Memcached, Redis
- WebView三问—B站真题
- C++核心准则T.140:为所有可能重用的操作命名
- Service三问
- 事件分发机制三问
- C++核心准则T.141:如果你需要只在一个地方使用的简单的函数对象,使用无名的lambda表达式
- 基于DOM的XML文件解析类
- C++核心准则T.143:避免无意中编写非通用代码
- XML文件解析实践(DOM解析)
- golang 多协程的同步方法总结