程序员基本技能及定位

> 程序员该如何定位?看这四大方向- http://mp.weixin.qq.com/s/8jMnBGEoHegQ-rMIj1C2kA
程序员的几种常见定位:
1.解决某类问题的专业人士;2.软件架构与设计;3.技术专家;4.技术传播与布道;
  聚焦到某一个领域的具体问题,那么接下来的一切都顺理成章,你会很容易就能了解到解决这类问题需要什么知识、业务、技术,然后你就可以充满动力地去学习,去准备。
  定位到大型网站的架构与设计。那你就可能去学习Java、http、数据库、分布式、云计算、大数据、Docker等各种技术,以及常见的网站架构(参考李智慧《大型网站技术架构:核心原理与案例分析》),然后到一个正在发展(或者已具规模)的电商类公司去跟着公司一起成长,铸就自己的架构之路。
  成为某一个特定技术领域的专家,建立自己的顶端优势,从而成就自己。
  如何更好地帮助初学者学会一种技术,跨越从不了解到会应用这种技术解决问题的过程。

-- 程序员一定要投资的十件事- http://codebay.cn/post/2084.html?1490750776552

一个好的产品经理懂得怎样宏观把控整个问题,让各个问题有条不紊地分阶段完成。
  能在广泛的科学技术领域出类拔萃;拥有广泛的视野,阅历宽阔、经验老到、言辞犀利,对行业动态了如指掌.
欠缺思考容易导致这样的现象:不会做设计,业务 与技术,不会面向对象设计,缺少抽象和解耦的能力;不能坚持自己的观点;不能细化一个问题解决方案(程序的设计与编码),学习与思考;它要解决什么问题,就是所谓的问题域,是我关心的吗(操作系统底层的实现);和过往解决方案它的优势在哪里,是否显著
  新技术学习的方式呢:寻找切入点(“理论不懂就实践,实践不会就学理论!”);寻找自己的兴趣点(新技术,有意思的事情);善于比较(比较是一种非常容易上手的思考方式);不断获得回馈(demo,理解某一项实现原理,联想到其它类似的实现)

-- 程序员的三观:技术观,产品观,数据观。

  技术能力(Technical capability):技术能力强的人通常都对技术有浓厚兴趣,他们会不断钻研决不放弃,最终会做出可供经验不足的工程师使用、维护和学习的解决方案。
  领导力(Leadership):有领导力的人知道怎样为自己及别人发展并保持一种目的感。他们会指出公司里及自己职业生涯中出现的问题,并且揽到自己身上最终解决掉。
  交际能力(Community/Connectedness):交际能力强的人非常希望自己成为一个大集体中的一员,有非常强的奉献意识,身上有别人(同事、客户等)无法轻易描述的个人魅力,并且存在感非常强,生活充实快乐。

  软件开发是一个跨度很大的技术工作,在语言方面,有C,C++,Java,Ruby等等等等,在环境方面,又分嵌入式,桌面系统,企业级,WEB,基础系统,或是科学研究。但是,不管是什么的情况,总是有一些通用的基本职业技能。

这些最基本的职业技能通常决定了一个程序员的级别,能否用好这些技能,直接关系到了程序员的职业生涯。很多程序新手也是因为缺少、达不到或是不熟悉在这些基本技能,所以,他们需要有老手带,需要努力补齐这些技能。而高级程序员应该非常熟悉这些基本技能,而且有能力胜任并带领其他经验不足的程序员。

下面这些基本职业技术可以用来做为对一个程序员的评估,很明显,下面的这些技能都可以用来做面试。虽然,还有很多非技术的因素,但对于评估一个程序员的技术能力来说,其应该是足够的了。

-- 下面是程序员所应该具备的基本职业技能:

基本技能技能描述
阅读代码这个技能需要程序员能够具备读懂已经存在的代码的能力,这样的能力可以让程序员分析程序的行为,了解程序,这样才能和开发团队一起工作,继承维护或是改进现有的程序。
编写程序编写程序并不包括程序设计。不要以为编程是一件很简单的事情,很多程序员都认为编程只需要懂得程序语言的语法,并把设计实现就可以了。但是这离编写程序还远远不够,使用什么样的编码风格成为编写程序员最需要具备的基本技能。能否使用非常良好的编程风格直接决写了程序员的级别。
软件设计这一能力直接决定了需要吏用什么样的代码技术达到怎么样的功能,而系统架构设计直接决定了软件的质量、性能和可维护性。并不是所有的程序在这一方面都非常优秀,但每个程序员都需要或多或少的明白和掌握这一基本技能。
熟悉软件工程每个程序员都应该明白软件工程是什么东西,都应该知道,需求分析,设计,编码,测试,Release和维护这几个阶段。当然,几乎所有的人都知道这些东西,但并不是每个人都很清楚这些东西。现在很多高级程序员都会混淆“需求规格说明书FS”和“概要设计HLD”。另外,程序员还需要知道一些软件开发的方法论,比如:敏捷开发或瀑布模型。
使用程序库或框架一个程序员需要学会使用已有的代码,无论是标论的程序库,或是第三方的,还是自己公司内部的,都需要学会做。比如:C++中,需要学会使用STL,MFC,ATL,BOOST,ACE,CPPUNIT等等。使用这些东西,可以让你的工作事半功倍。
程序调试程序调试是分析BUG和解决问题最直接的能力。没有人能够保证程序写出来不用调试就可以运行正常,也没有人可以保证程序永远不会出BUG。所以,熟练使用调试器是一个程序员需要具备的基本技能。
使用IDE学会使用IDE工具也会让你的工作事半功倍。比如,VC++,Emacs,Eclipse等等,并要知道这些IDE的长处和短处。
使用版本控制一定要学会使用版本控制工具,什么叫mainline/trunk,什么叫tag,什么叫branch,怎么做patch,怎么merge代码,怎么reverse,怎么利用版本控制工具维护不同版本的软件。这是程序员需要明的的软件配置管理中最重要的一块。
单元测试单元测试是每个程序都需要做的。很多单元测试也是需要编码的。一定要学会在xUnit框架下进行单元测试。比如JUnit, NUnit, CppUnit等等。
重构代码每个程序员都需要有最基本的能力去重构目前已有的代码,使代码达到最优但却不能影响任何的已有的功能。有一本书叫《软件的重构》,每个程序员都应该读一下。
自动化编译程序员需要使用一个脚本,其能自动化编程所有的工程和代码,这样,整个开发团队可以不停地集成代码,自动化测试,自动化部署,以及使用一些工具进行静态代码分析或是自动化测试。

当然,还有很多的基本技术也是非常重要的,比如,与人的沟通能力,语言的表达能力,写作能力,团队协作能力,适应变化的能力,时间管理能力,多任务处理能力,自我学习能力,故障处理能力,等等,等等,这里只是列举了和技术相关的能力,这些是程序最最最基本的能力,只要是程序员就必需要有的能力。

转载地址:http://coolshell.cn/articles/428.html

> 40条真言,希望对进阶中的程序朋友有所帮助。
1、重构是程序员的主力技能。
2、工作日志能提升脑容量。
3、先用profiler调查,才有脸谈优化。
4、注释贵精不贵多。杜绝大姨妈般的“例注”。漫山遍野的碎碎念注释,实际就是背景噪音。
5、普通程序员+google=超级程序员。
6、单元测试总是合算的。
7、不要先写框架再写实现。最好反过来,从原型中提炼框架。
8、代码结构清晰,其它问题都不算事儿。
9、好的项目作风硬派,一键测试,一键发布,一键部署;烂的项目生性猥琐,口口相传,不立文字,神神秘秘。
10、编码不要畏惧变化,要拥抱变化。
11、常充电。程序员只有一种死法:土死的。
12、编程之事,隔离是方向,起名是关键,测试是主角,调试是补充,版本控制是后悔药。
13、一行代码一个兵。形成建制才能有战斗力。单位规模不宜过大,千人班,万人排易成万人坑。
14、重构/优化/修复Bug,同时只能做一件。
15、简单模块注意封装,复杂模块注意分层。
16、人脑性能有限,整洁胜于杂乱。读不懂的代码,尝试整理下格式;不好用的接口,尝试重新封装下。
17、迭代速度决定工作强度。想多快好省,就从简化开发流程,加快迭代速度开始。
18、忘掉优化写代码。过早优化等同恶意破坏;忘掉代码做优化。优化要基于性能测试,而不是纠结于字里行间。
19、最好的工具是纸笔;其次好的是markdown。
20、Leader问任务时间,若答不上来,可能是任务拆分还不够细。
21、宁可多算一周,不可少估一天。过于“乐观”容易让boss受惊吓。
22、最有用的语言是English。其次的可能是Python。
23、百闻不如一见。画出结果,一目了然。调试耗时将大大缩短。
24、资源、代码应一道受版本管理。资源匹配错误远比代码匹配错误更难排查。
25、不要基于想象开发, 要基于原型开发。原型的价值是快速验证想法,帮大家节省时间。
26、序列化首选明文文本 。诸如二进制、混淆、加密、压缩等等有需要时再加。
27、编译器永远比你懂微观优化。只能向它不擅长的方向努力。
28、不要定过大、过远、过细的计划。即使定了也没有用。
29、至少半数时间将花在集成上。时间,时间,时间总是不够。
30、与主流意见/方法/风格/习惯相悖时,先检讨自己最可靠。
31、出现bug主动查,不管是不是你的。这能让你业务能力猛涨、个人形象飙升;如果你的bug被别人揪出来.....呵呵,那你会很被动~≧﹏≦
32、不知怎么选技术书时就挑薄的。起码不会太贵,且你能看完。
33、git是最棒的。简单,可靠,免费。
34、仅对“可预测的非理性”抛断言。
35、Log要写时间与分类。并且要能重定向输出。
36、注释是稍差的文档。更好的是清晰的命名。让代码讲自己的故事。
37、造轮子是很好的锻炼方法。前提是你见过别的轮子。
38、code review最好以小组/结对的形式。对业务有一定了解,建议会更有价值(但不绝对)。而且不会成为负担。管理员个人review则很容易成team的瓶颈。
39、提问前先做调研。问不到点上既被鄙视,又浪费自己的时间。
40、永远别小看程序媛(╯3╰)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值