技术可以指人类对机器、硬件或人造器皿的运用,但它也可以包含更广的架构,如系统、组织方法学和技巧。它是知识进化的主体,由社会形塑或形塑社会。换句话说,它是驱动改变的自发性动力。——维基百科
曾几何时,我梦想着长大后能够以一己之力改变这个世界的所有不美好。如钢铁侠般,依靠自己聪明的大脑,打造出不断趋于完美的盔甲,在维护世界和平的同时,用技术让世人惊叹。
技术,观其本质,它的存在取决于人们的需要,并能够满足其需要。早期的技术是为了解决基本需求,而现在的技术是为了满足人们更广泛的需求和欲望,并需要一巨大的社会结构来支撑它。很多技术的衍生和发展已在不断脱离其本质,而沦为牟利的工具。
对大部分人而言,在高中毕业后会面临两种选择:文科 or 理工科。如果你选择理工科并在毕业后从事相关工作,那么你就成为了这个社会广泛定义的技术人。当然,能用自己的所学在岗位上兢兢业业,并且做出一番成就,获得同事以及领导乃至整个社会的认同,这样的技术是值得夸赞并鼓励的;但大部分情况下,你在学校所学的知识,工作中压根用不到,更可悲的是已经被淘汰或即将淘汰。所以不难理解现在很多高校陆续开始开设人工智能等专业,因为几十年不变的专业课已经让社会失去了耐心,更别提能给社会输送人才了。
那么如果在工作中才开始学习并努力进步成长,达到怎样的水平才能被成为合格的技术人呢?
因为鄙人是写代码的,所以拿程序猿这行来阐述:
1.扎实的基础
计算机技术的更新迭代非常快,每隔一段时间就会出现新的语言、框架、思想。但这些类比到武功上,属于新的招式,并不是基本功。初级程序员喜欢花里胡哨地比拼招式,比如谁学会的语言多,框架多。但程序员80%的工作都是比拼的基本功,比如快捷键用的好,有良好的单元测试习惯和编码习惯,还有打字够快。熊节老师认为:基本功扎实的程序员通常具备如下几点素质:
能力的获得,往往通过重复、有针对性、有反馈的刻意练习。孤独、规律、专注,你可能不是最有天赋的那一个,但你却可以成为最努力的那一个。
2.善用工具
开发中会用到大量的工具,不管是编辑器、调试工具还是监控工具,关键在于能够熟练的使用自己喜欢的工具,掌握各种快捷键,高度自定义,这样能够大大提高工作效率。而且对于日常中重复的操作,最好脚本自动化,这里推荐下python,写小工具还是很快的。
另外,强调程序员必备的两个工具,那就是浏览器和VPN。毕竟,基于谷歌的工程师还是比基于百度的工程师要强那么一点点。
3.能看懂英文
时下很多技术的官方文档都是英文写的,如果想原滋原味而不是消化别人咀嚼后吐出来的东西,老老实实提升下自己的英语水平。
这三点是我目前觉得合格的程序员所必须具备的素质,欢迎各位不服的前来拍砖。
进步最快的方式就是与他人作比较,而不是坐井观天。每一行都有许多杰出的人士,他们在不同的年纪做着哪些事情,我们不妨仰望一下。
1.扎克·伯格
扎克伯格很喜欢程序设计,特别是沟通工具与游戏类。他还开发过名为ZuckNet的软件程序,让父亲可以在家里和牙医诊所之间消息交流。这一套系统甚至可视为是后来美国在线实时通信软件的原始版本。
在扎克伯格高中时代,他也创作了名为 Synapse Media Player 的音乐程序,并且借由人工智能来学习用户听音乐的习惯,并且被贴到Slashdot上,被PC Magazine的五星评价为3颗星。微软与美国在线当时就已经想要招揽并训练扎克伯格,不过扎克伯格仍选择于2002年9月进入哈佛大学。
在哈佛时代,Vargas表示,扎克伯格被称誉为是“程序神人”(a programming prodigy)。他跟着犹太会友Alpha Epsilon Pi学心理学与运算科学。二年级时他开发出名为CourseMatch的程序,这是一个依据其他学生选课逻辑而让用户参考选课的程序。一段时间后,他又开发了另外一个不一样的程序,名为Facemash ,让学生可以在一堆照片中选择最佳外貌的人。根据扎克伯格室友ArieHasit的回忆,“他做这个只是因为好玩”。Hasit如此解释:“他有几本名为脸书(FaceBooks)的书,里面包括学生的名字与照片。起初,他创建1个网站,并放上2张照片,或者是1张男生照片、张女生照片。浏览者可以选择哪一张最‘辣’,并且根据投票结果来排行。这个的竞赛进行了一个周末之久,但是到周一早晨,被校方关闭,因为哈佛的服务器被灌爆,因此不准学生进入这个网站。此外,很多学生也反应,他们的照片在未经授权下被使用。扎克伯格为此公开道歉,并且在校报上公开表示“这是不适当的举动”。不过,扎克伯格出自好玩的这个网站,后来一直被学生要求,要发展出一个包含照片与交往细节的校内网站。根据Hasit的回忆,马克听到这个消息后非常高兴,并且决定如果学校不干的话,他要干,他将会建一个比学校更棒的网站。
2.比尔·盖茨
在高中的时候,盖茨就创建了湖滨学校编程社,为太平洋西北地区的公司编写计算机代码,并以此赚钱。当他向大学提交申请的时候,选择了三所学校:哈佛、耶鲁和普林斯顿。针对三所学校,他表示了三种不同的志向:耶鲁是为了政治;普林斯顿是为了计算机工程师;哈佛是为了数学。他被三所学校录取,最终选择了哈佛。艾伦警告他说,哈佛有比他更聪明的人,盖茨回答说,“不可能!不可能!”
在大二时候,盖茨与伙伴保罗·艾伦一起为 Altair 8800 电脑设计 Altair BASIC 解译器。Altair 是第一台商业上获得成功的个人电脑,而 BASIC 语言是一种易用易学的电脑程序设计语言,盖茨与艾伦所开发的BASIC版本就是后来的Microsoft BASIC,也是MS-DOS操作系统的基础,而后者又是微软公司早期成功的关键。Microsoft Basic后来成了 Microsoft Quick BASIC,并逐渐演变成为今天依然流行的Visual Basic。
下面摘录《编程大师访谈录》中对盖茨采访的部分内容:
采访者:显然,作为微软的CEO,你的责任重大。你现在仍在编程吗?
盖茨:我现在不编程了。我仍会在算法设计和基本方法上提供帮助,有时也会看看代码。但自从完成IBM PC BASIC和Model 100上的工作后,我就再也没机会自己动手编写程序了。
采访者:在微软的软件开发过程中,你扮演了什么样的角色?
盖茨:我做两件关键的事情。一是选择在程序中放入哪些功能。为了做到这一点,必须合理把握什么事情容易做、什么事情不容易做。还必须明白你追求的产品系列的策略是什么样的,并要关注硬件领域的进展。 此外,我还致力于实现新功能的最佳方案,也就是如何把新功能做得既小又快。例如,我写过一个备忘录,是关于如何设计和实施Excel中的一项功能的:每当屏幕发生变化时,程序都要重新计算其中的公式。
在公司成立后最初的4年,我参与编写和设计了微软所有的程序。在所有这些最初的产品中,无论是BASIC、FORTRAN、BASIC 6800还是BASIC 6502,没有一行代码是我没有检查过的。但现在我们有大约160名程序员了,所以我主要是做产品和算法的复查。
采访者:你认为你在编程上最大的成就是什么?
盖茨:那得说是为8080编写的BASIC了,因为程序当时所产生的影响,而且因为我们设法把程序做得很小巧,非常适合当时的使用场景。那是我们决定创办微软时所编写的最早的程序。我们三个人都清楚地记得那个最早的程序。我们得到了一个机会,在新墨西哥州的阿尔伯克基花了整整一个夏天,把程序彻底重写了一遍。我认为可以节省几个字节,让程序更精简。我们非常非常仔细地调试着,最终得到了那个4K的BASIC解释程序。当你非常了解一个程序,觉得没有人在看了程序后会说“还可以做得更好”时,那种感觉真是太棒了,而且程序用在了很多机器中,让人觉得编写那样一个程序是件很兴奋的事情。我还非常喜欢为Model 100编写的那个程序,特别是我们把一个非常有用的小编辑器压缩到了软件中。我和一个名叫杰米•铃木(Jey Suzuki)的日本程序员合作完成了那项工作。我们在非常有限的时间内完成了那个项目。如果编写的软件要烧入ROM,你是没有机会可以犯错的。
采访者:你认为计算机编程中最困难的部分是什么?
盖茨:最困难的部分是确定采用什么算法,然后还要尽可能地简化算法。做到最简单的形式是很难的。必须在心中模拟程序是如何工作的,必须完全了解程序各部分是如何一起工作的。最好的软件是其中有一个程序员完全了解程序的工作方式。要做到这一点,必须要特别热爱编程,集中精力让程序变得极为简洁。
人这一生既要仰望星空,也要脚踏实地。我们在可以作梦的年纪不应该丢弃作梦的权利,万一实现了呢,对吧。
最后,我想聊聊技术人的未来。
虽说每个行业都必须要时刻学习,但是技术的可持续性与积累性较差,举个例子,如果你是做会计的,那么随着持续学习与工作经验的积累,你只会越来越强;如果你是做投资的,随着时间的推移,你投资的公司越多,积累的经验越足,你也会越来越厉害;如果你是一名医生,做过的手术越多,能力越强;如果你是一名教师,教过的课越多,对于课程的把控以及学生能否及时吸收的经验也会越多。这才是所谓的技能的持续性与积累性,老会计,老中医,老教授,不是没有道理的。。。
此外,还有个残酷的事实:国内这行有个不成文的规定,35岁左右是个分水岭。即使你多么热爱技术,但在公司看来,你的精力、体力、脑力、脚力慢慢比不过年轻人;另外随着工作年限的增长工资会水涨船高,所以同样的工作让刚毕业有活力的年轻人来做,岂不是性价比更高吗?毕竟在领导看来,他们有着无限的可能性。
所以,技术人必须给自己早做打算,为未来考虑。
在我看来,技术人的未来,一定要是多维度,多领域的。我们靠自己的专业混口饭吃,在自己的领域内深耕多年,这是很多人都能到达的,但却是远远不够的。利用业余时间培养下其他维度的能力,这是一个可积累的能力,时间越长,你的这个能力越强,你只需要花费业余时间 10%~20% 的精力就好了,重要的是把这件事持续下去,几年之后,你就获得了你本职能力之外的能力,甚至还可能超越你本职的能力。发展一门兴趣,成为自己的副业,然后有可能的话让副业替代主业,再发展另外的兴趣,不断衍生出去,慢慢成为多领域人才。
其实,还有一类人,他们不需要依附他人,仅凭自己的专业能力,就能让各大企业争相聘用。比如说首席科学家,技术顾问这样的角色,他们可能只要在公司挂个名而已,但是你又不得不佩服他们的技术攻坚能力。
我们需要认清自己的实力,找准自己性格的缺陷,选择一条合适的技术道路。So, 你想成为怎样的技术人?你身边又有哪些值得尊敬的技术大牛呢?欢迎留言///(^v^)\\
做技术需要有苦心僧般的毅力与隐忍,因为技术这条道路,注定是很少在聚光灯下被照亮的。致敬我们这帮可爱的技术人,hiahia~