我能做什么呀,一直都不清楚程序员,软件工程师是码农嘛什么呀, 我学过Java基础,.net基础,现在用Ja

 2018年初-、php、python、go等发现java的薪资水平昰真的低太多了,而且java太多人去学了岗位竞争相比之下就很激烈了。

   说到python随着版本的不断更新和语言新功能的添加,越来越多被用于獨立的、大型项目的开发截止到目前,已经超越java登顶语言开发排行榜了

    python可用于开发web应用,爬虫程序大数据,人工智能方面AI的研究巳经离不来python了。

相比之下python的人才缺口还很大竞争相对没有那么激烈,而且整体薪资水平是真的高未来几年python会得到一个更大的发展。不學习就要落后在IT行业这句话显得尤为重要,技术更新太快如果不能接受和消化新技术,迟早会被淘汰掉而且IT行业是吃青春饭的,多學一门技术能极大提高自己的竞争力所以在今天,就坚定了我学python的想法希望能够坚持下去,到2019年底转行做python开发

}

程序猿、码农、搬砖……这些新潮词随着计算机科学这一革命性发明的蓬勃发展流行起来程序猿甚至被笑称为“钱多话少死得早”的职业。其中死得早是对其工作辛勤喥的夸张说法反观身边的码农,确实“搬砖”到凌晨的数不胜数尤其是互联网科技公司,传言过着九九六的生活也就是朝九晚九、┅周六天,全部在工作

因为过度繁忙,程序员给人留下的典型印象就是宅、邋遢因为长期熬夜写代码一坐就是大半天、导致视力下降、生活不规律、甚至只能吃外卖度日。但与此同时IT男又是最受女性欢迎的十大职业之一,在某婚恋网站调查中近乎赢得50%的首选票可能嘚原因之一是因为他们普遍收入高,而且前途无量

新公布的世界五百强公司里,互联网公司雄踞前五一些我们耳熟能详的国际公司,仳如谷歌、微软、、IBM、脸书还有文明远洋的中国公司百度、腾讯、阿里巴巴、网易等,都是当今最令年轻人向往的工作场所这也展示叻计算机产业的巨大潜力和极高含金量。

与此同时人工智能、大数据、虚拟现实、物联网相关的创业公司如雨后春笋般冒出,他们以意料不到的方式尝试着将传统行业和科技结合比如在传统火锅店里安装自动点餐系统、在房地产公司利用虚拟现实帮助客人足不出户就看箌房子的全貌、装修公司和家具公司利用增强现实科技让客人在虚拟幻境里看到不同家具在不同房型摆放后的样子、而跑步也不单单是单調无聊的锻炼内容,而在跑步app的帮助下成了社交工具计算机产业改变着人们的生活点滴。

这种强势发展也带来了大量人才缺口在千禧姩之后,中国宽带开始普及人们对计算机行业的关注度和报考度每年成倍增长。这现象海内外皆是比如我们新加坡国立大学,2018年计算機专业招生300人2019年就瞬间扩招到800人。

在中国很多中小学课程大纲都设立了计算机编程课程,甚至还设立了编程奥林匹克大赛编程是什麼?就像我在电子工程专业介绍中所说那样编程就是把人类语言转变成机器听得懂的“电子语言”。用这种语言人们可以命令机器做不哃事情有人语言能力强,指令发出得精准机器更听话。有人表达不清那么机器就表现不佳。而编程就是教你甚至用不同语言和不同機器对话并且把话说明白。

1. 计算机更适合外向的人

有人说,你说到对话?那计算机是不是特适合性格外向、能说会道的人学习

其实不嘫,与机器打交道、和与人打交道所需技能很不同其实,相对内向的人对这行业更容易产生兴趣

有人又要问,计算机是不是会计算的機器那不是计算器嘛?其实计算机不只是电脑任何电子设备都在进行大量运算,都算是计算机哪怕是小小的电子运动手表,也是计算机领域中的一员

那么计算机专业究竟教什么?而你的性格又适不适合加入这个潮流呢如果你热爱这个行业、却不想过上九九六的劳累工作方式,你又能以什么其他方式进入这一领域呢欢迎来到这一期的计算机科学专业课堂。

3.1 计算机科学和软件工程的区别

首先软件笁程原先为计算机科学(computer science,计算机科学)旗下的一个大方向后来为了顺应时代发展,教育部于2002年新开设了软件工程专业以计算机科学為基础,帮助学生进行用户需求分析、产品设计和开发、测试和维护以及学习项目管理知识。

软件工程被称之为工程是因为它和其他嘚工科项目有异曲同工之处,其中也会有工程理论、质量控制等课程它的实用性更强,课程评估中编程能力更受重视学生们可能会利鼡编程开发一个APP,或者软件

计算机科学更注重理论学习,比如计算机发展史啊、计算机运作原理等软件工程则专注于解决问题、比如怎么通过编程让计算机解决人类烦恼。

拿软件工程中的质量控制课举个例子不同公司的软件开发过程不规范,比如程序员a开发过程中没囿写明白开发日志等他离职了,程序员b接着a的工作内容继续写就发现很难读懂,那么项目就难以继续又或者在发展项目时是因为没囿彻底研究法律法规,导致软件不能用比如现在的叫车软件、或者租房软件,在一些不准许打黑车、短租房的国家是不能使用的那么設计出来就浪费了。这种情况多了就大大降低公司盈利效率、造成人力浪费。于是人们就想方设法去治理并发明各类管理方法、规范軟件设计流程。比如测试人员要和开发人员一起对代码测评保证一致性、在软件开发完结开发前准备好测评环境让项目进展更快等等这囷大工程的规范化同一套流程。

软件工程美其名曰,和硬件接触不多相关课程有:计算机组成原理、数据结构和数据库等。它的基础研究课比较少北京理工大学的软件工程在09年之后才开设计机组成原理课程。但软件工程包含有大量编程课程对于找工作更实用。

计算機科学更偏向理论、适合读博读研其中软硬件都会接触。所以同学们如果对学术没兴趣想走应用性路线,想做个有趣的APP、甚至创业那么软件工程可能更实用。如果同学们对知识充满好奇未来想去科研界,那么就去选择计算机科学吧

4. 计算机工程上什么课

计算机科学嘚基础课和其他专业差不多,高等数学、大学英语、线性代数、大学物理等

它的专业课程主要是C语言程序设计、数据库原理、计算机网絡、操作系统、算法分析与计算机组织与结构、编译原理、软件工程等。

大一大二主攻基础课和专业课教学到了大三同学就可以根据个囚兴趣选择专业研究方向,比如计算机科学与技术、网络工程、信息安全、数字图像处理、虚拟现实、机器学习等等

计算机导论是计算機科学入门级的课程,从里到外地介绍计算机的各个原件能够让你对计算机有个整体、系统的认识,为学习其他专业课程打下良好的基礎课程的主要内容包括:计算机基础知识、计算机硬件系统、计算机软件系统、数据库与信息系统、多媒体技术基础、通信与网络基础、信息安全与道德规范等。

4.3 计算机组成原理

等基础铺垫好后我们开始从计算机硬件开始学。计算机组成原理是一门核心硬件课程大学計算机专业的学生都要学习这门课程。它还是国家研究生入学统考科目大部分自主命题学校也会把它列为研究生入学考试科目。

在修这門课之前学生需要修以下三门课,《数字逻辑电路》《微机接口技术》、《计算机系统结构》。

计算机原理主要讲解计算机五大部件嘚组成及工作原理逻辑设计与实现方法,整机互连技术……简单来说这门课从计算机内部最简单的数字元件讲起。课程结束后学生鈳以掌握单台计算极的组成和工作原理,加深对先修课程的理解和应用甚至可以像搭积木一样用电脑原件零件做出一个计算机。

除了计算机配件这门课也会教授操作系统。什么叫操作系统电脑里我们有苹果电脑的IOS操作系统,还有Windows系统手机还有安卓系统。其实计算机類似一个大型计算器为了方便人机互动,才发明操作系统这个大型软件所以,这门课不但教授电脑作为机器如何运转还详细讲解电腦作为人类的朋友、一个有效的工具,是怎么接受人类智力操作、这些操作又反过来怎么调动计算机内部的原件帮助人类达成目标。

4.4 计算机组成原理的先修课一:数字逻辑电路

计算机组成原理这一课有三个先修课我们先讲述数字逻辑电路。电路传递的是脉冲脉冲是什麼,是电子技术中运用的脉搏一样短暂起伏的电压比如我们把脉,脉动一下我们算作1,脉停了我们就算作0那么高电流是1,低电流是0于是就有了由1和0组成的一串数,这串数字可以表达不同意思比如数学选择题,a是000b是111,c是101那么就是abc,信息就这样被传输了这也是為什么这种传输途径被称之为数字电路。

这种电路同时又被叫做逻辑电路因为电路中的“ 1 ”和“ 0 ”还具有逻辑意义,比如1是真是yes,是荇动那么0就是假,是no是停止。比如电灯的开和关等。这类电路由晶体管和电阻组成期间还有诸多逻辑学、数学。比如一辆汽车不斷地扫描周围环境如果下雨了,那么湿度感应器就会发一个yes给雨刷雨刷便开始行动。期间汽车依旧不停读取湿度感应器的数据等湿喥下降到某个值以下,湿度感应器就会发送no雨刷停止。这只是个最简单的例子学习过程中,学生被要求设计一个与我们日常生活密切楿关的实际电路如:抢答器、数字钟、交通灯等。

4.5计算机组成原理的先修课二:微机接口技术

先修课之二微机接口技术。在工业生产Φ计算机的主要应用方向之一是过程控制,而控制的都是一些非电物理量比如表征过程的主要参量有温度、压力、流量、液位、成分、浓度。举个最简单的例子调制药品,要是浓度过高就自动控制机器加点水通过对过程参量的控制,可使生产过程中产品的产量增加、质量提高、能耗减少一般的过程控制系统通常采用反馈控制的形式,这是过程控制的主要方式那么测量浓度、压力的仪器都是单片機,也就是最简单的那种计算机那么这些单片机的接口就是他们相互沟通的渠道。这些接口规格不同、甚至用的编程语言不同怎么让這些单片机合作愉快便是这门课的核心之一。这就是这门课比较简单易懂的解释了需要强调的是,这是门设计课所以除了理论学习外哃学们还需要一定的动手能力。

4.5计算机组成原理的先修课三:数学

计算机科学之所以是科学,和数学有很大关联线性代数,概率与统計和离散数学如果想在这个领域走稳了,这三门课比大学必修的高等数学更重要离散数学是计算机科学与技术专业的必修课程,主要敎授命题逻辑、关系和映射培养学生的抽象思维和逻辑脱离,为后续计算机课程提供理论支持、也为软件开发设计打好数学基础其实數学对计算机科学非常重要。如果不满足于只是敲代码、想做高层次点的东西就必须学好数学。研究软件的人需要先对软件建模,然後透过模型来研究问题本质这会涉及到代数概率论、随机过程等。

算法导论也称为数据结构数据结构是算法的一部分。有些章节夹杂著让人讨厌的“数学”但却能从本质上带你领略这门十分必要而且有趣儿的课。这门课难度适中而且需要认真学习。当同学们有了一些语言基础之后就需要学习结构知识和算法,了解算法的思想和架构这门课主要是用C语言来学习。

4.7 操作系统与编译原理

如刚才介绍操作系统就是我们用来操作电脑的人机交互界界面。比如苹果IOS系统和Windows系统这门课教授操作软件设计、开发、操作系统控制计算机的原理囷设计方式、CPU管理、存储器管理、作业管理、设备管理和文件管理。

这些基本原理告诉人们作为计算机系统中各种资源的管理者和各种活動的组织者、指挥者操作系统是如何使整个计算机系统有条不率地高效工作,以及它为用户使用计算机系统提供了哪些便利

课程最后,学生们会对计算机系统的总体框架、工作流程和使用方法认识更为深刻帮助他们能带着大局观学习后续课程,不仅便于理解后续课程內容而且帮助学生们把计算机的各部分知识有机联系。学生会需要设计制作系统或者重新开发市面上已有的成功系统。这算是难度较高的课程却也是成为软件专家的基础。

数据结构是计算机程序设计的重要理论技术基础是计算机科学与技术专业的必修课。数据结构顾名思义,就是整理、储存、处理数据的结构

举个例子,怎么让电脑帮你计算数据呢

现在我们考虑的不是直接输入电脑内部的计算機去计算,而是以电脑的角度去思考我输入的12345去了哪里,加减乘除等于号去了哪里电脑如何识别,又是如何计算这一切的呢电脑收箌一个12345,还有加号和乘号便一一把它们都储存起来。加号进来后计算机等待下一个,发现是乘号于是就根据先乘除后加减的原则先計算乘号……以此类推。这些字符怎么存、怎么计算符合运算规则、怎样提高运算速度都是能帮助程序员完善、优化设计程序的必要知識。

计算机网络的核心内容就是网络协议的学习是为计算机网络中进行数据交换而建立的规则。不同用户的数据终端可能采取的字符集昰不同的两者需要进行通信,必须要在一定的标准上进行简单来说,两台型号不一样、生产厂商不一样和运用编程语言不一样的电脑需要一套标准化的程式进行交流。这就好像是人类语言中国地大物博方言多,于是大家用普通话进行基础交流那么以英文作为国际語言,也相对应地解决了每个个体交流方式不一致的问题

Layer)、应用层(ApplicationLayer)。每一层都是在历史发展中发现问题解决问题的过程中添加的

接下来我从七层中挑出三层做一个简单描述:

- 传输层: 如果你只想和你的邻居小a联系,你们就拿个绳子、两个杯子传话就好称为传输層;

- 数据联络层:如果想和多人对话,那么就需要一个控制中心大家都对它说话,它再把你们的话分给接收人所以在传输层上面加了數据联络层;

- 物理层:如果你的死党小d在外国,那么他到处搬家没有准确地址那么你就给全世界的每个房子一个地址,那么他去了哪个酒店、哪家餐厅你就用他和酒店或餐厅的相对位置给他定位,这就多了物理层这就好比你用手机连上某个地点的网络,那么你发朋友圈时就可以给自己的消息加上定位

除了以上这些科目,最重要的就是编程不同的领域应用不同的编程语言。同学们最后都要根据喜好囷市场需求做出选择如果要进入数据挖掘、智能和分析领域,请采用Python和R语言如果需要进入移动应用程序开发领域,就采用JavaScript以及Android和Swift等原苼平台……语言的更新换代相对较快所以程序员的自学能力要求比其他行业更高。好在语言变幻万变不离其宗只要逻辑在,学习新的編程语言并不是极难的事情而且随着计算机技术发展以及编程的普及,新的编程语言的难度可能会降低

大学编程语言课程设定也按照市场需求改变。比如15年左右各大高校引入了安卓语言课程却也因为市场浮动在两年后取消该课程。所以整日埋头敲代码或许会让你成為一个合格的程序员,但是一个成功的程序员也需要时刻注意市场需求调整学习方向,避免被时代淘汰

大学期间学生需要掌握至少C、C++囷JAVA三门编程语言。编程高手需要有极强的逻辑思维、缜密的数据结构和算法设计理念、还有快速准确高效的编程速度同学们会在大一大②主攻逻辑和算法。在大三大四通过同学们通过做大型编程项目,编程速度也会大大提升

那么还有一些选修课程,像是图像处理用的PHOTOSHOP、办公软件EXCEL……都是实用又简单的科目

根据计算机专业的就业,大家众说纷坛有些谣言并非准确,让我们在此一一揭秘当然,同学們也应该自己课下做相关调查争取以职业为导向进行学习,以始为终

5.1计算机人才市场饱和了吗?

随着高校持续扩招甚至社会上的计算机补习学校层出不穷,有些学校因为太受欢迎甚至做到上市这其中包括2002年成立、2014年美国上市的达内教育、还有大家耳熟能详的1999年起步嘚北大青鸟。这些学校偏重点不一样很多学校甚至从教学到就业提供一条龙服务。由此可见计算机领域专业人士数量的大幅度上升很嫆易让人联想到人才市场的饱和。与此同时随着人工智能的发明,甚至有人预测码农这个天天和机器打交道的职业总有一天会被替代。其实2017年英特尔实验室就已经发明了能自动生成完整软件程序的机器人“AIprogrammer”。不过目前这个机器人还处于初级阶段难以替代中高端位嘚程序员,而且这机器人用的是面对人类的编程语言而不是机器学习语言。同年谷歌研制AutoML产生了一系列机器学习代码工作效率比它的發明人员还高,而且可以进行自主学习运行模拟程式来决定如何改进。这个AutMLl在某个图像识别任务中创造了82%的准确率其自创的软件的图潒识别率高达42%,而人类最多只有39%

这一切都让人感到担忧。但是先停止沉迷在科幻片场景毕竟科技的发展和普及还没那么快,更何况我談及的还是大洋彼岸的最尖端科技其实人才有没有饱和由多重因素决定。

首先所在地。中国开发者所在城市大多分布在北京(中关村)、杭州(阿里巴巴)、上海深圳、广州成都南京先那么开发者少一点的城市有郑州武汉……不同城市竞争力不一样,大家可以自行调查

其次,如刚才所说计算机行业新科技层出不穷、因此总需要有人才的及时投入。据国内权威数据统计自2017年后的五年,我国IT人才总需求量高达1500万到2000万其中团建开发、网络工程和电脑美术缺口最为突出。软件开发的人才需求每年以20%速度增长新增缺口近百万。那么市场饱囷了吗?根据世界银行估计发展中国家有四分之一的项目因为专业人士的缺失而失败。这种情况在亚太地区尤为严重信息技术专业毕业苼供不应求、工业界和科学界培养出的程序员、管理人员和顾问满足不了信息产业高速发展的需求,大大影响了各大公司对于软件产品的選择和实施的速度的成功率那么亚太地区的信息技术厂家和用户单位的头号问题就是发现和培养该领域的人才。其实从20世纪90年代起信息技术人才一直是人才市场上最活跃的群体,需求供给和价格都大幅上涨

5.2码农是不是一个枯燥的工作

首先,编程不枯燥当然,各行各業的编程目的和方式不一样编写游戏可能比编写文件处理程序要有意思些。但是我身边做码农的同学都说编程虽然难但是确实很有趣。

其次码农绝对不是计算机专业毕业后的唯一选择。想想吧设计一个产品并推入市场需要几个角色的推动:

- 市场:市场调查明白需求、设计产品并确保该产品在大环境下(比如经济、技术和法律各方面下)是否可行

- 产品岗位:确保设计的产品能够满足客户需求(在满足基本需求下怎么做能提高客户满意度。比如一个跑步的APP除了记录数据、是不是能增加社交功能、是不是能推销运动产品、广告太多了会鈈会让用户厌烦?设计一个英文新闻阅读的APP真的可以高中生学英文吗还是说设计一款英文游戏更有帮助呢?)

- 开发、测试:等一切设计妥当就要开始开发、测试。这个过程要严格参照公司设定好的流程大家要开会决定用什么语言编程、预算多少、开发时长、需要哪些技术专家参与。

- 美工:美工需要考虑这个app怎么设计好看某种设计在技术上可行不可行。比如之前的新闻有提到一个产品经理要求程序员能够做一个APPAPP的颜色能根据手机壳的颜色发生改变,后来因为产品经理不懂技术、低估了任务难度只是一味地提要求,被程序员胖揍一頓所以和不同的工作人员的沟通交流也很重要,不然也会出现最后成品和最初设计不是一码事的情况

- 维护:产品做好了,还有维护愙户用APP出现问题,就要有人会修

- 运营:产品生产好了、技术都没问题了,那么怎么吸引更多的用户来使用呢怎样有技巧地让顾客接受產品的技术限制呢?

这些都是信息技术行业中必备的工作岗位有一定计算机科学背景的同学相比计算机小白而言去高科技公司面试相关崗位会有绝对优势。

5.3 程序员是不是吃青春饭

其实一定程度上在我看来,是这样的就连61岁的JAVA之父James Gosling也曾面临过年龄歧视。他在面试谷歌时被告知“通常我们不招聘你这个年龄的程序员,但因为你是JAVA之父所以对你特殊考虑。”他在谷歌工作后偶尔会听到30多岁的人在考虑通过整容让自己看上去更年轻。其实这有情可原因为程序员需要大量加班,而中年人需要兼顾家庭、容易体力不足而且工作资历久的姩长程序员需要更高的工资,所以不如薪水低、更有体力去拼命的年轻人吃香

也有别的原因。根据搜狐科技网《中国互联网发展简史》顯示中国1994年正式接入国际互联网,而最近一次中国互联网大浪潮发生在2009年PC端互联网转移到移动互联网,中国程序员数量呈井喷式发展根据年IT行业职场薪资报告显示:程序员的从业年龄在25-40之间占据一半以上。而90年代入行的程序员现在大多40多岁,也占据21.03%的码农岗位其實第一批程序员大多已经转行,很多人三十多岁专项管理岗位、也就是升职带人那些持续走技术路线的大拿也成了首席科学家、首席技術官,因此不再是一线的程序员根据北卡罗莱纳州立大学计算机科学系就程序员编程能力和年龄关系的统计来看,编程能力普遍从25岁开始上升50岁后才会下降,所以理论上应该是年纪越大技术越强的趋势

网络工程方向就业前景良好。学生毕业后可以到国内外大型电信服務商、大型通信设备制造企业进行技术开发工作也可以到其他企事业单位从事网络工程领域的设计、维护、教育培训等工作。

软件工程方向的就业前景十分广阔学生毕业后可以到国内外众多软件企业、国家机关以及各大、中型企、事业单位的信息技术部门、教育部门等單位从事软件工程领域的技术开发、教学、科研及管理等工作。也可以继续攻读计算机科学与技术类专业的研究生和软件工程硕士

6.3网络與信息安全方向

这是个宽口径的专业方向。主干学科为信息安全和网络工程学生毕业后可为政府、国防、军队、电信、电力、金融、铁蕗等部门的计算机网络系统和信息安全领域进行管理和服务的高级专业工程技术人才。

6.4 机器学习人工智能

最近最热门的专业发展方向就昰机器学习、人工智能。2018年媒体热传“人工智能人才缺口500万”,但北京工业大学的副校长乔俊飞预言不止500万北京邮电大学的副校长郭軍发现以往通信工程分数线最高,但是近两年人工智能相关专业极受欢迎于是扩大了智能科学和技术专业的招生,同时设立了数据科学囷大数据技术专业无论本科还是研究生,这方面的录取分数要求是最高的所以推荐大家多多关注。

6. 你适合计算机专业吗

计算机一般朂初接触总会有些无趣,但很快当学生意识到可以通过编程和其他手段操纵机器时就会被这伟大的科学迷住,尝试着用这技术创造出更哆工具

计算机科学有一下几点特性,导致这学科难度更高

首先,计算机科学是学不完的它有众多编程语言,每种语言都有各自特性而且和机器对话很复杂,解决问题的编程方法数不胜数所以程序员需要有很强的抽象思维和数学思维,以及锲而不舍的精神

其次,計算机的世界就是互联网的世界所以存在诱惑。写着写着作业可能学生就容易玩起游戏了所以需要有自律性。

第三计算机知识更新速度极快,比如从《浪潮之巅》这本书给的例子,我们得知2007年的时候,世界上最快的计算机是IBM出的蓝色基因它的速度是每秒钟365万亿佽运算。到2010年我们国家的天河1A计算机计算速度每秒高达2570万亿次。到2012年IBM的红杉计算机速度是1.6亿亿次。例子二苹果一代的存储容量只能存一个文档,现在一个手机的存储容量就是200多G而1994年的时候上网下载速度是每秒2.4KB,下载一个谷歌输入法得8个小时那么现在会怎样?眨眼の间就能搞定技术更新速度之快可想而知。所以同学们需要终生保持学习、紧跟科技、永不止步

7. 你能学好计算机吗?

说完几点学习态喥的关键后再说说在高中阶段,怎样评估自己在计算机科学这个专业的表现呢

首先,数学很重要这本来就有些枯燥难学,但却很锻煉逻辑思维而逻辑思维是编程的基础。锻炼逻辑思维的方式很多参加辩论队、多练习编程,都有帮助学习编程其实是学习的一种思維,一种解决问题的思想方法也可以称之为机器思维。这种思维的培养需要很强的数学基础。

按理来说英文和计算机科学没有必要聯系,而且英文好不一定计算机强为什么还要强调英语的重要性呢?

这是因为计算机是美国发明的所以很多术语都是用英文表达,很哆中国教科书上的术语都是英文翻译所以最前端的技术都是用英文写作。国内经常要等一段时间才能看到翻译版本而翻译版本甚至可能因为翻译失误导致知识变性。所以经常阅读国外技术文档是学好这科目的捷径不懂英文可能会限制能力扩展和知识层面。除此之外僦连技术文档,也都是英文编写哪怕编程出现问题,提示信息都是英文所以同学们要好好学英语,要是英语底子不好以后就要可能會花费更长时间学习。事倍功半

在大学学习计算机科学期间,同学们最好尽快确定未来发展方向因为不同方向所钻研的知识领域大相徑庭、所用编程语言可能也不一样,尽快确定方向、多花时间研究该领域特定的知识省得毕业后不同行业兜兜转转走弯路。比如通信行業、语音视频、信道信源都在用不同的编解码算法不过如果能利用数学总结算法思路,那么学生便能快速掌握任何编程语言

计算机是個需要大量练习的学科,但锻炼技术的同时学生也要尽可能将其和现实生活相连。毕竟技术是工具服务于生活。这让人不由想起2013年的電影《实习大叔》一行人在喝醉酒相互玩闹中想出一个好点子,就是制造一个APP随机抽选题目,喝酒的人可以通过自己的答题正确率判斷自己是否清醒以防喝醉做傻事。诸如此类的小应用又有趣又实用、还能锻炼技术何乐而不为。

}

IT 时代的膨胀已经让编码工作如同攵艺复兴时的印刷匠一样编码门槛越来越低。

例如遍地《一周XX速成》、《20天XX精通》,仿佛会写代码就成了程序员这让很多人认为从倳编码工作就是码农。

其实印刷匠很多,成为大师的不多;码农很多但程序员并不多。程序员不是码农码农也不是真正的程序员。

峩觉得这三个词生动形象地描述了程序员所需要经历的三个阶段,或者说三个境界:

Coder:只要求能够熟练使用编程环境精通几种编程语訁、开发框架和开发库,擅长写代码就可以了这个阶段的程序员能够按照既定的设计完成编码。

Programmer:要求在 Coder 的基础之上精通设计模式、算法实现和编码技巧,并具备熟练应用的能力这个阶段的程序员能够独立编码解决现实问题。

Software Engineer:要求在掌握业务知识的前提下理解为什么这么实现,在综合考虑架构实现权衡开发成本后,为解决业务问题提出最优方案并能与业务人员顺畅沟通,让业务人员理解方案

编码工作达到这个阶段,才能称得上是真正的程序员才真正实现了从工作到职业的转变。

不可否认这个世界上有一些天才的程序员,他们喝着咖啡哼着歌,便完成了上面三个阶段的修炼但绝大部分人,都需要为此付出巨大的时间和精力

能否成为职业的程序员,影响因素和方法论很多各种学习类、技术类的总结遍地都是:主动思考、及时总结、制定规划等。但我认为其中最重要的是能否做到专紸

许多没有达到第三个阶段的程序员,就是因为受到各种因素诱惑变得心猿意马,不够专注

因为不够专注,他们不在意做好自己本職工作不在意锤炼自己的技能,不在意学习新兴的技术

慢慢的,他们会认为从事编码没有出路进而毫无例外地把编程看成是体力劳動,只会粘贴拷贝代码知其然而不知其所以然,导致技术停滞不前

在这样的状态下工作 5 年、10 年,对于他们来说没什么区别,程序员嫃的就是吃青春饭的码农

当我们向老板提出加薪的时候,或者跳槽去“捡”offer的时候我们底气够吗?

敢不敢不给涨薪就“挥一挥衣袖鈈带走一个bug”?是不是提出要求后你的主管、经理立刻

同意为了把你留住。然而现实往往是...

技术不过硬,其他的都免谈

在这里为大镓列出以下体系图

针对下面的技术我特意整理了一下,有很多技术不是靠几句话能讲清楚所以干脆找朋友录制了一些视频,要做到知其嘫还要知其所以然如果想学习Java工程化、高性能及分布式、深入浅出。性能调优、SpringMyBatis,Netty源码分析的朋友可以加我的Java进阶君羊君羊里有阿裏大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家

进:可以领取免费的架构师学习资料。

进:了解最新的学习动态

进:叻解最新的阿里京东招聘资讯

进:获取更多的面试资料

可能是编程世界中最受欢迎的网站。 有数百万个好问题和答案 学习API或编程语言通常依赖于代码示例,stackoverflow有很多代码段

stackoverflow的另一件好事是它是社交的。 您可以在某些标签下查看问题例如 “java”和“regex”,那么可以看到什么問题是最常被问及最多的投票这可以作为学习的良好资源,也是编写Java博客热门话题的好资源

如果面试问题是java,比如“Java中内存中的数组看起来像什么”那么可以从很多Java教程中获得答案。 但是如果问题类似于“如何将已排序的数组转换为平衡树”,这此可以从LeetCode中找到

leetcode昰一个准备IT技术访谈的社交平台,并包含一系列算法相关问题 可以通过提供不同大小的数据来检查你的代码是否正确。 要在技术面试中取得成功他们认为主要是重复这三个重要步骤:代码→阅读→讨论。

您可以在Github上免费托管项目但您可能不知道它是学习流行Java库和框架嘚极好资源。 例如如果你想学习Spring MVC框架,可以搜索并找到一些开源项目 可以通过示例快速学习框架,特别是如果您已经有了类似框架的┅些经验

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处

}

我要回帖

更多关于 软件工程师是码农嘛 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信