你必须掌握这个技能,跳出码农职业的“生命周期”

本文编译自medium题为The one essential skill that will set you apart from other developers的文章,作者Isabel Nyo认为除了提升专业技能,还应学会换位思考,高屋建瓴,了解任职企业的真正需要,发展蓝图,这才是一个优秀员工的必备技能。希望能对您有所启发。

根据埃文斯数据公司的调查显示,目前全球共有2200万程序开发员,而这一数字将在2022年攀升至2600万。

码农占领世界,这句话真不是开玩笑的。

如果你正是这两千万人之中的一员,你肯定会思索如何让自己鹤立鸡群。今天,我想跟大家分享一个重要的技巧,许多程序开发者对其无比推崇,但并非所有人都了解其重要性。不要搞错,我说的不是公众演说技巧。

我思考许久,把这项技巧命名为“培养像CEO一样思考和行动的能力”。

我曾经营自己的网站开发事务所,也曾与别人一同创业。我亲身感受到这项技巧的重要性。即便我现在担任技术经理,我发现,掌握这项技巧的员工会更受领导的器重,在公司的发展也会比其它同事更好。专业技能固然重要,但如果你同时具有CEO般的思考和行动方式,你的表现自然就变得突出。
你也许会想:“不行吧,我从来就没当过CEO,我也没有当CEO的朋友。”其实,程序员身上就有许多和优秀CEO相似的品质,所以技巧的理解和锻炼才是更为重要的。下面我给大家分享5个小技巧,这些技巧灵活实用,无论你身处职业发展的哪个阶段,都能派上用场。

这里写图片描述

1.了解公司衡量商业成功的标准

如果你认为CEO最担心的是公司能赚多少钱,那你就大错特错了。处于不同发展阶段的公司会有不同的标准衡量商业成功与否,关注的重点也会不同。比如,初创公司成立早期,成功的衡量指标就是订阅的客户数量;而上市公司的指标则会是它们的股价;还有些公司把员工跳槽率看作指标。由此可见,不是每项指标都需要和财务或市场挂钩,它们会随着公司的发展有所转变。

因此你需要问自己:我清楚我们公司对商业成功的衡量标准吗?它是你掌握技巧前需要清楚的重要事项。有些程序员认为代码写得好对公司是最重要的,实则不然。了解公司的商业蓝图和取向,老板才会器重你。

2. 有效利用数据

程序员对数据一定不陌生。用数据支持你的发现和解决方案,这点非常重要。举个例子,如果你想改进应用程序的响应时间,你着眼于数字,获取现有数据,并在毫秒内得到改进。同样地,CEO也需要好好利用数据。无论是培养顾客群体还是利润最大化等,CEO首先得获取基本数据,再决定如何改进。

作为程序员,开发新特性或程序时,必须清楚这与公司的成功指标有什么关系。我曾与一名CEO交谈,他说他不明白为什么科技债务如此重要。他不明白如果公司不偿还科技债务,它对企业有什么影响。的确,科技债务和企业破产不一样,但要是他通过数据分析,意识到这会影响企业关键服务的可用性和数据点的可移植性,团队就会把清偿科技债务看作重要事项。

这里写图片描述

3. 学会委派工作

有句话说得好,CEO应该努力工作,但不是埋头死干。有效地委派工作不仅能让CEO跳出日复一日的,能交给其他人完成的琐碎任务上,他还能把多余的时间精力投放在公司规划和发展策略研究上,实现公司利益最大化。

注意,我不是建议你不做码农,而跑去当管理人员。如果你喜欢开发构建程序,那你很应该坚持下去。不过有些工作,你可以委派给下属,或者和其他同事一起承担。

试想一下,你不需要睁大双眼修改每一步的bug,研究开发每一项程序特性,更不必亲自核准每一项设计。学会适当地“放手”,和同事们多交流,分担工作中的困难,共享经验,你将很快突破工作上的瓶颈。长远地看,工作的开展会更加顺利,许多员工都会因此获益,包括你本人。

4. 着眼于长远发展

你见过不愿意提高自身素质和扶助身边人的CEO吗?你有听过一个CEO说“今年我们赚了不少,明年就不用努力了”吗?我也没有。CEO们永远不满足于现状,他们希望一切变得更好,并为实现愿景制订目标。尽管一些CEO承担着极大的风险,为实现目标千方百计,甚至咄咄逼人,但他们都有共同的特点:无论对风险的偏好如何,都必须做得比以前更优秀。

程序员和一些技术行业工作者也有着这种品质,这也是为什么技术能得以发展,改善我们的生活的原因。从智能手机,人工智能,到机器学习,过去十年间,技术领域百花齐放,日新月异。这都是因为我们一直在进步。把这个品质带到你的日常工作中去吧,看到系统效率不高,代码有问题,就去想办法改善它。一点小小的改动,就能减轻同事的工作,让下个步骤跑得更顺利。

5. 成为正能量源

优秀的CEO清楚,他肩负着的不仅是公司,还有员工。他应充分利用每个人的才干,为工作环境提供积极向上的氛围。公司发展顺利时,培养这样的氛围并不难,但在企业面对难关时,这就显得尤其重要。一个态度乐观,富有卓见的CEO才能激励下属,引领他们走出迷局,全力实现雄心壮志。

我过去认为性格外向的人才能表现出如此的正能量,现在我发现,两者并没有太大关系。生性内向也可以乐观豁达。我见过的绝大部分程序员都性格内向,做事低调不张扬。你可能觉得你既不是CEO,也没有下属,不需要花心思去营造积极的工作环境。但我还是鼓励你试着改变一下,无论是在独处,会议,工作研讨或者一对一面谈的时候。我保证你会发现这小小举动所带来的影响,并因此得益。

这里写图片描述

只有专业技能在职场中是走不远的,但愿我不是第一个告诉你这个道理的人。也请你不要误解,专业技能的确很重要,但如果你想要走得更远,走得更快,你就应该学着像CEO一样思考和行动。好消息是,它可以通过后天习得,只需多加练习,便熟能生巧。

展开阅读全文

未来两年你必须掌握的五种编程语言

09-18

对于处在编程世界的我们来说,现在已经走到了一个转折点。十年前,程序员们对动态语言趋之若鹜。对我们中的大部分人来说,动态语言不仅使编程变得更加简单,同时也意味着一种时尚。时至今日,动态语言不再享有特别的青睐,现在的程序员使用新语言和旧语言的搭配来开发项目。我不禁要问,为了保持自身的竞争力,哪些编程语言是程序员们最需要永久掌握的?rnAD:2014WOT全球软件技术峰会北京站 课程视频发布rnrn对于处在编程世界的我们来说,现在已经走到了一个转折点。十年前,程序员们对动态语言趋之若鹜。对我们中的大部分人来说,动态语言不仅使编程变得更加简单,同时也意味着一种时尚。时至今日,动态语言不再享有特别的青睐,现在的程序员使用新语言和旧语言的搭配来开发项目。我不禁要问,为了保持自身的竞争力,哪些编程语言是程序员们最需要永久掌握的?rnrn在我们讨论哪些编程语言在未来会吃香这个问题之前,先来看看不同编程语言之间的异同。rnrn静态语言 vs. 动态语言rn当我们说到动态语言时,这个“动态”实际上说的是变量类型。使用动态语言编写程序的时候,可以声明一个变量,在程序运行的过程中又可以改变这个变量的类型。与动态语言相对的是静态语言,或者叫强类型语言。比如C++和Java就是强类型的语言,而JavaScript,PHP和Perl是动态类型的语言。rnrn在C++中,声明变量的时候必须同时指定变量的类型。在程序运行的过程中,如果试图去改变这个变量的类型,编译器就会报错。这在Java中也是一样。rnrnrnrn但是JavaScript不一样,在JavaScript程序运行过程中可以改变变量的类型。事实上,在声明变量的时候就不需要指定这个变量的类型,在使用变量的时候,可以先把一个整数赋值给这个变量,然后又用一个字符串覆盖这个整数,这在动态类型的语言中都是允许的。rnrn尽管动态语言在最近才大行其道,可实际上这个概念在50年前就已经提出来了。rnrn函数式语言rn随着动态语言的发展,人们对函数式语言的兴趣也越来越大。在函数式语言中,函数本身可以被存储在变量中,存储在变量中的函数又可以作为参数传递给另 外的函数。现在的大多数语言都在一定程度上支持函数式编程。比如说C++,C++允许程序员将指针传递给函数。JavaScript等一些语言使函数的传递变得更加容易。所以,一般认为C++不是一个真正意义上的函数式语言,而认为JavaScript是函数式语言,而Haskell一般被认为是函数式语言的绝佳示例。rnrn垃圾回收机制rn理论上来说,只要你正确书写代码,你就不会有任何bugs。这听起来很美好。可实际上,当你和许多其他程序员合作完成一个大项目时,有一个bug会经常出现,这就是内存泄露。你定义了一个变量,使用完这个变量之后却没有及时回收这部分内存,这时我们就说发生了内存泄露。如果发生了内存泄露又没有及时 发现,随着程序运行时间的增加,程序越来越大,直到消耗完系统的所有内存,然后系统崩溃。sounds terrible!rnrnrnrn你可能会说,每次使用变量之后及时释放内存,内存泄露不就不会发生了?想法是好的,可实际情况可能比这要复杂的多。比如说,你申请了一个链表来存储数据,这个链表被传递到另外一个函数,这个函数是别人编写的,在别人编写的这个函数中,将这个链表复制了一份,但是你并不知道,你说是应该删除这个链表还 是继续保留?基于这种情况,程序员们想到了一个变通的办法:将内存回收的工作交给系统来做。当你不再使用某个变量,系统通过扫描内存找到这个不再使用的内 存,然后主动回收,这就叫做垃圾回收机制。对新开发出来的语言来说,这是一个非常重要的特征。垃圾回收背后的思想是使编程更加容易,从而让程序员将精力放 在创造伟大的软件之上。rnrn需要说明的是,确实存在几种不同的垃圾回收机制:一种是系统定期扫描内存,发现那些不再使用的内存;另外一种是系统为每一个变量保留一个tab,一旦发现变量不再使用,马上删除之。从技术上来说,后者并不是一种垃圾回收机制,而是“引用计数”,但是达到的效果是一致的。rnrn虚拟机rnrnrn当Java在20世纪90年代中期横空出世的时候,人们对它不是直接将代码编译成汇编语言这一点十分在意。和C++相反,Java在编译的时候先把 程序编译成一个叫字节码的中间代码。在运行的时候,系统调用虚拟机执行字节码,有时候甚至只是将字节码编译成汇编代码。这种编译方式刚刚出来的时候,程序 员们抱怨其速度慢,当然现在已经不成问题。许多语言采用虚拟机的方式运行,比如说前面提到的Java、C#等。现在这种类型的语言在速度上得到了长足的发展。rnrn编程语言rn说了这么多,那么程序员到底应该学习哪些语言呢?下面列举了五种在未来工作中有丰富需求的语言。除此之外,我还列举了第六种语言,作为一个“honorable mention”。rnrnrnrnJavaScript,HTML5和CSS3:rnrn从技术上来说,HTML5并不是一种语言,而是一项技术,这项技术和CSS3、 JavaScript一起使你能够构建基于Web的应用。你可以创建运行在浏览器中的软件,这样做的好处是,你构建的应用将会拥有前所未有的移植性——几 乎可以在所有的设备上运行,包括手机。几年前,Facebook开始使用HTML5来构建他们的手机应用,他们超前了这个时代,那时HTML5还不成熟。 一段时间后,他们回归了传统模式。过去两年中,浏览器纷纷开始实现最好的HTML5技术,对JavaScript的需求随之增加。如果想保持你的竞争力, 这是一项你必须学习的技术。(在服务器端,很多大公司以Node.js的方式使用JavaScript)。rnrnJavaScript示例:rnrn下面这个例子展示了JavaScript是怎么将一个函数存储到变量中,然后又传递给另外一个函数的。JavaScript方面的资源非常多,权威指南,参考Mozilla Developer Network,新手教程,参考以下网站。rnrnvar myfunc = function() rn alert(‘hi’); rn; rnsetTimeout(myfunc, 2000); rnC#:rnrn在15年前,Microsoft创造了C#,从那时起,C#不断发展壮大。C#的语法类似于Java(同时也类似于C++)。C#编程软件首选Visual Studio,免费版和付费版都有。rnrnC#是一种强类型的语言,带有一个虚拟机。最初的发行版对函数式编程的支持非常少,在2006前后,Microsoft为这门语言加入了一些函数式编程的特征。和Java一样,C#也有自己的垃圾回收机制。rnrnC# 示例:rnrn示例定义了一个叫做Program的类,Program包含一个叫做Main的函数。程序从Main函数开始运行。Main函数定义了一个强类型的整形变量x,并且在屏幕上打印x的值。学习C#方面的更多知识,移步Microsoft’s official site。rnrnusing System; rnclass Program rn static void Main() rn int x = 1000; rn Console.WriteLine(x); rn rn rnJava:rnrnJava即将迎来自己的20岁生日,时至今日,Java还在不断的发展、成熟。在2004年,我的一位同事说这是一门“玩具语言”。经历了早期的成长之痛后,Java早已不是一门玩具语言:它支撑起了不可胜数的网站和数据库,开源office套件也是用Java开发的。现在 来看,Java的前景依旧一片光明。rnrnJava是一种强类型的语言,运行在自带垃圾回收机制的虚拟机中。尽管不是一种函数式语言,还是带有一些函数式编程的特征。rnrnJava示例:rnrnJava和C#在很多方面类似。在Java程序中,从main函数开始运行。像上面提到的C#示例一样,在main函数中定义了一个整形的强类型变量x,并且在屏幕上打印x的值。学习更多Java知识,参考official documentation。rnrnpublic class HelloWorld rn public static void main(String[] args) rn int x = 1000; rn System.out.println(x); rn rn rn rn rnPHP:rnrnPHP是一种易用的通用编程语言。其语法和Java、C++类似。在一个非常简单的层次上来说,PHP用于在网页中嵌入可变 化的文本内容。比如说,在你的网页中可能存在打印当前日期的PHP代码,当你把网页代码送到浏览器,相应的PHP代码就会在屏幕上打印出当前日期。PHP 能做的远比在网页上打印日期多。PHP的类库能够操作数据库(几乎你能想到的任何数据库都能处理),能进行科学计算,能处理文本。PHP的未来依旧一片光 明。rnrnPHP示例:rnrnPHP代码嵌入在HTML文档之中。这段PHP代码将时区设置为Los Angeles,然后打印出当前时间。浏览器解析HTML文档的时候,PHP代码部分被代码的输出结果所取代。所以最终显示在屏幕上的是“Hello! The current time is”,后面是当前时间。学习更多PHP相关知识,参考这个网站。rnrn rn rnHello! The current time is rn rn rn rnSwif:rnrn这是一门全新的语言,苹果制造。一般来说我不会推荐人们学习一门全新的语言。但是要知道我们说的是苹果,并且现在你已经能 使用这门全新的语言来创建iOS应用了。事实上,已经有迹象显示Swift将会成为iOS平台编程的未来。Swift的语法非常像JavaScript, 但是没有分号和括号。rnrnrnrnSwift是一种强类型的语言,运行在带垃圾回收机制的虚拟机中。rnrnSwift示例:rnrn示例中定义了一个叫做str的变量,存储一个字符串。尽管没有明确指出str的类型,但是Swift是强类型的,编译器通过赋值语句右边的字符串判断出str是字符串类型。学习Swift的更多知识,参考苹果官网的相关页面。rnrnvar str = “Hello, World!” rnprintln (str) rn另外一种语言ErlangrnErlang是爱立信的工程师在1986年发明的编程语言。这本来是通信领域专用的编程语言,现在已经发展成一门通用的编程语言,并且在基于云的、 高性能的并行计算中大行其道。现在人们使用Erlang编写出了一些强大的软件,比如说CouchDB和Riak。这是一门与众不同的语言,其处理字符串 的方式非常奇怪,但是也很容易学习。rnrn我们应该学习Erlang吗?虽然需要Erlang的工作不多。但是,如果你真正掌握了这门语言,那你很可能得到一份极好的工作。这是一个抉择。在真正掌握这门语言之前,你需要投入大量的精力,一旦你学成,回报也很高。rnrnErlang 示例:rnrn下面的示例来自这篇博客,这是“hello world”示例的复杂版本。记住,Erlang是一门成熟的语言,如果你真的打算学习这门语言,参考前面提到的博客和这个网站。rnrn-module(hello). rn-export([start/0]). rnstart() -> rn rn spawn(fun() -> loop() end). rn rnloop() -> rn rn receive rn rn hello -> rn io:format(“Hello, World!~n”), rn loop(); rn rn goodbye -> rn ok rn写在最后rn程序员肯定是在哪都能找到工作,但不一定是你特别喜欢的职位,关键还在于学习真正能用得着的技术,找到那份属于你的好工作。学习 JavaScript、C#、Java、PHP(甚至包括C++)不会有错。如果你开始学习Swift,未来的就业形式一片大好。如果你想尝试一把高性能 编程,看看Erlang,尽管需要Erlang的工作可能不会马上出现。不管你现在在致力于哪一门语言,都要脚踏实地的学到精,这是关键。 论坛

Java开发五年以上必须掌握的java技术技能应该有哪些

12-14

大家好!最近我一直很困惑,作为一个开发五年以上的Java程序员, 到现在技术还是很菜,现在工作中我有一大把的时间来学习,可是我就是找不到方向,想让大家指点一下。为了让大家更好的帮助我,我给大家讲述一下我的职场历程吧。rn 我是2011年12月份就开始工作了,虽然那时候是实习阶段,但也已经算是步入职场了。那时候懵懵懂懂白纸一张,感觉自己什么都不会。当然,对于新踏入职场的我还是激情满满的,也还是会不懂的就很愿意学习。可是由于工作环境的关系,自己学到的也不多。这种状态一直持续了近三年,三年内我待过了两家公司,全是大的外企。想必大家对外企环境也有一定的了解吧。弹性的工作时间(不用打卡,迟到了用加班来补),然后十点才上班,五点半就下班了。工作内容的话,开发的任务不多,好不容易有点也被其他的能者一下子干完了,剩下的就是写写文档写写邮件等等的活儿让我们这些小菜鸟做。直到2014年有一天我终于从外企出来重新找工作时,发现自己就跟个废人一样还是啥也不会,面试几乎面试了一个月才进入到一家金融公司。那里工作自然不像外企了,敏捷开发,并实施了996工作模式,扛不住技术压力和环境压力的我,只待了8个月就辞职了。虽然在这家金融公司所待时间并不长,但是学到的东西真的感觉比在外企三年所学到的都要多。也是因为这样,后来面试很顺利,不过这次是进入一家小公司,是做教育相关的项目的。大家也知道小公司还是比较锻炼人的,只是好不容易有了好的学习技术,可不想自己工作了几个月后竟然怀孕了。。。。。。也是因为那样自己工作任务轻了很多,基本没什么压力。又加上从2016年的4月份开始休了近半年的产假。。。。产假归来再次步入职场的时候是2016年的9月份。也是工作了几个月就又辞职来到了现在这家金融公司。来到这里后发现自己在上家公司技术都落后好多,几乎外面的新技术都没有接触过,包括 redis 以及什么分布式开发等概念我都不清楚。也是在这里觉得自己的SQL技术有多差劲,很多稍微复杂一点的逻辑的SQL我就不会写了。然后以有时间就想着各种补自己不足的地方。然而一段时间后,也就是年前这几个月我们几乎都会闲着,也就意味着自己有一大把的学习机会,想趁这段时间努力学点东西。但苦于找不到学习的方向,希望大家给点建议。虽然自己是女开发,不求技术和男生一样好,但是还是想尽量把自己的技术学好,至少要对得起自己这么多工作年限。大家帮帮忙,指点一下我吧! 谢谢! 论坛

没有更多推荐了,返回首页