`
zxingchao2005
  • 浏览: 75936 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

致刚入门的程序员五点建议(转载自雷军博客www.leijun.com )

 
阅读更多

每个IT企业,尤其是初创企业,非常苦恼:找不到好的程序员。现在大学、软件学院及各种培训机构,每年培养几十万的程序员,毕业的每个人都有同样困恼:找 不到好的工作。问题出在哪里呢?其实,企业需要的是不是刚会写程序的

人,需要来了就能干活的人,尤其能把活干好的人。而刚毕业的大学生多半刚学会如何写程 序,的确很难企业需求。

企业到底需要什么样的程序员,一个刚入门的程序员如何成为企业需要的高手呢?还有很多程序员问我,“我需要具备什么样的能力就可以去创业?”我一直在琢磨 类似的问题。我自己写过十年程序,也在金山管理过一千多人的研发队

伍,最近也在做天使投资,仔细总结了如下五点建议与所有程序员分享。


建议一、只有真正喜欢才能写好程序


喜欢写程序,做程序员就是上天堂;

不喜欢写程序,做程序员就是下地狱。

程序员需要整天趴在电脑前,经常没日没夜的,非常辛苦,而且工作来不得半点虚假,少写一个标点符号都不行。喜欢的人,日子过得非常开心,每写一行代码,都 会有新的成就,尤其当自己的作品被广泛应用的时候,那种自豪感油然

而起。不喜欢的人,坐在电脑前极端无聊,被进度压得喘不过气来,天天为找bug改bug 生气。

只有喜欢,只有热爱,才能把程序写好!

我建议不喜欢写程序的人早点转行,不要勉强自己,免得误人误己。


建议二、把程序当艺术品,象写诗一样来写代码


现在很少有公司做 codeview (对写好的程序做代码级检查),于是很多人在进度的压力下潦草应付,只要测试通过就算搞定。表面上看,开发速度很快,进度有保障;但实际上,这样的程序连开发者自己都很难读懂,一旦有bug,很难

调试,将来维护升级都非常困难。这样的代码多半只能重写,浪费自然严重。

如果每个人写程序的时候当艺术品来写,写每行都认认真真、干干净净的,虽然速度略微慢了一点,但综合的开发成本会低很多。

如何写象诗一样美的代码呢?方法也很简单。

一、买几本经典的编程书,把书上所有例程全部重新写一遍,逐个比较和书上范例的差距,一步一步改善自己编程的风格和技巧。时间长了,自然就能写出象书上例程一样的代码,甚至可以比书上写得好。

二、基础扎实后,多看看Linux 等系统级的源代码,看看高手是如何写的,就有感觉了。

三、通读一下MSDN中所有的资料,这样,“读书破万卷,下笔如有神”。

还有,一定要牢记软件工程的铁律:可能出错的地方一定会出错。每个变量都做初始化,引用每个参数都会做有效性检查,在可能出错的每个地方都会做边界条件检 查,这样开发出来的程序一定会稳固很多,就是出错也会很容易修改。

野路子出来的高手,一般开发速度很快,但做完后bug很多,经常需要很长时间修改。而真 正的高手,追求的境界是 bugfree code(零缺陷代码)。


建议三、必须写够十万行代码,不要心存侥幸


程序员象木工一样,熟能生巧。程序员必须写足够代码量的程序,才会有感觉,这是一个苦力活,没有任何捷径可走。

计算机是一门实践性的科学,没有动手能力做支撑,很难做出好的科研成果。我的一个学长是美国卡内基梅隆大学的博士,卡内基梅隆大学计算机系在全世界非常出 名,他说每个博士生必须写十万行代码才能毕业,卡内基梅隆大学博士

进任何一个大企业基本不用面试。而国内培养大部分的研究生、博士生,动手能力都偏弱。

没有写过足够代码量的,想成为高手是不可能的,只能纸上谈兵!


建议四、时刻保持好奇心


计算机技术更新换代非常快,每年都有各种各样的新技术出现。在我过去的职业生涯中,仅编程语言,我就用过 basic, masm, pascal, c++, vba, Delphi, java 等。需要时刻保持好奇心,不断学习各种新的东西,才能在未来的几十年

职业生涯中不落伍。你要理解为什么 iPhone 出来很多高手用iPhone,现在一天到晚惦记着换部 gPhone 玩玩。

人的精力有效,高手往往工作压力也比较大,如何在有限的时间内掌握整个行业动态,的确是一个不简单的事情。我的经验是经常看业内的各种技术杂志,参加各种聚会,可以节约很多时间。最重要的是,交几个博学的技术高手,多和

他们交流,一定获益匪浅!


建议五、不要局限在技术本身,多花点精力关注用户


做到前面几条,就已经是千金难求的高手了。但一个真正的高手需要知道用户需要什么,如何做出让用户满意的产品。

现在的软件研发越来越强烈团队协作,不少团队都配置了专门的需求分析的工程师、用户界面及用户体验的设计师,软件研发的分工越来越细。很多程序员以为只要 把技术搞好,不用管用户需求和用户体验。实际上,需求方案及界面方

案不可能写得非常细,具体的实施还是程序员自己来实现的。这个时候,好坏的差距很快就体 现出来了。

我们写程序的最终目的是满足用户需求,不是简单完成需求规划方案中的功能。所以,程序员一定要认真揣摩用户心理,能明白用户的真实需求。

其次,怎么设计交互界面,让用户觉得好用,用起来舒服,这里面学问很大。我举一个小例子,每个程序窗口右上角都有三个按钮,如最小化、关闭等。乔布斯觉得不好看,不易用,他提出改用红绿蓝的交通灯。这样修改后,果然 Mac

OS 漂亮和易用了很多。

目前互联网和手机上的应用开发,都非常强调小团队研发。这样研发模式速度会快很多,但对程序员的综合素质的要求也就更高了。

我强烈建议程序员不要仅仅局限在技术本事,还需要多点精力考虑和用户相关的问题,学会洞察用户的需求,并努力设计好用易用的产品。做着这点的程序高手,创业成算就很大了。


这些就是我说的《创业十大标准》中提到的“技术过硬”要求。

这样的技术高手,如果捕捉到合适的产品方向,并且具备一定带团队的能力,创业成功机会很大!事实上,绝大部分创业的技术公司,创始人都是这样的人!比如迅雷的邹胜龙和程浩,UCWEB的何小鹏和梁捷等。

分享到:
评论

相关推荐

    leijun.rar_C RPG_c 角色扮演_角色扮演

    用C++做的RPG角色扮演小游戏,基于DOS 界面下的。

    0017音乐播放器(1)AdobeXD源码下载设计素材UI设计.xd

    0017音乐播放器(1)AdobeXD源码下载设计素材UI设计

    这是我为某科技创新大赛所做的作品,一个残疾人鼠标,用头操纵。.zip

    这是我为某科技创新大赛所做的作品,一个残疾人鼠标,用头操纵。

    Company_Responsive_Landing_PageAdobeXD源码下载设计素材UI设计.xd

    Company_Responsive_Landing_PageAdobeXD源码下载设计素材UI设计

    案例中用到的nobel-prizes.csv文件

    案例中用到的nobel-prizes.csv文件

    python啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

    就是要流量 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊大家多给评论 点赞 关注啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

    基于Opencv的车牌识别系统.zip

    基于Opencv的车牌识别系统.zip

    电影票预定APP界面UI设计XD源文件 列表页可参考AdobeXD源码下载设计素材UI设计.xd

    电影票预定APP界面UI设计XD源文件 列表页可参考AdobeXD源码下载设计素材UI设计

    mqtt-client-Vue.js.zip

    微信小程序Demo-mqtt-client-Vue

    原创算法竞赛题目,毒瘤题,并不适合OI和ACM.zip

    原创算法竞赛题目,毒瘤题,并不适合OI和ACM

    20212123072-周欣怡-软工1班-实验4.docx

    20212123072-周欣怡-软工1班-实验4.docx

    node-v16.13.2-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    DA14531-蓝牙传感器固件开发

    名称 范围 默认参数 系统 ①低功耗系统 ②非低功耗系统 ① 功耗 不广播状态 1uA 广播状态200ms 0.14mA 广播配置 广播间隔时间: 间隔广播(20ms-2000ms) 200ms 广播数据: 设备名称 “Sensor” 制造商数据: FF 前两字节公司ID FFC1 A数据(uint16_t) 1001 B数据(uint16_t) 2001 C数据(uint16_t) 3001 D数据(uint16_t) 4001 E数据(uint16_t) 5001 F数据(uint16_t) 6001 G数据(uint16_t) 7001

    专业实习-三创赛.zip

    专业实习-三创赛

    计算机安全技术:保护网络、数据和身份的有效手段

    本文介绍了计算机安全技术中的网络安全、数据安全和身份认证等方面的内容,帮助读者更好地了解如何保护自己的信息和隐私。 内容概要:本文介绍了网络安全、数据安全和身份认证等计算机安全技术的相关内容,包括防火墙、VPN、数据备份、访问控制、用户名和密码、双因素身份认证和生物识别技术等。这些技术可以保护我们的网络、数据和身份安全,防止未经授权的访问和窃取。 使用人群:所有使用计算机的人群,尤其是企业、政府和个人等领域的用户。 内容关键词:网络安全、数据安全、身份认证、防火墙、VPN、数据备份、访问控制、双因素身份认证、生物识别技术。 用途:帮助读者了解计算机安全技术的相关内容,提高安全意识,采取有效的安全措施,保护自己的信息和隐私。

    语音模块使用说明_jr6001调试工具.html

    语音模块使用说明_jr6001调试工具.html

    堆排序12.java 使用java代码实现

    算法 堆排序12.java 使用java代码实现 堆排序12.java 使用java代码实现 堆排序12.java 使用java代码实现 堆排序12.java 使用java代码实现 堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.jav

    html 邮箱管理系统源码 单页 含login 登录页.zip

    html 邮箱管理系统源码 单页 含login 登录页

    Matlab实现BO-GPR贝叶斯算法优化高斯过程回归多变量回归预测(完整源码和数据)

    1.Matlab实现BO-GPR贝叶斯算法优化高斯过程回归多变量回归预测(完整源码和数据) ; 2.数据集为excel,输入7个特征,输出1个变量,运行主程序即可; 3.命令窗口输出RMSE、MAPE、MAE、R2等评价指标;运行环境Matlab2018b及以上, 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 5.作者介绍:某大厂资深算法工程师,从事Matlab、Python算法仿真工作8年;擅长智能优化算法、神经网络预测、信号处理、元胞自动机等多种领域的算法仿真实验,更多仿真源码、数据集定制私信+。

    基于Git的软件项目管理配置方法及应用实践.pdf

    :Git分布式特性和分支管理能力适用于大型软件项目,每个分支彼此独立,互不影响。为提高碳化硅外延设备控制系统的精 度、实时性、稳定性,提出一种基于Git进行配置管理的方法。介绍Git的特点、环境配置和常用操作;简单说明配置管理的概念 并建立配置管理环境;介绍基于Git进行配置管理的具体实践,包括分支管理和版本管理。使用Git进行配置管理,可有效解决代 码冲突、事务并发、文档冗余等问题,实现对项目的高效管理,也可保证版本的可溯性,有针对性地解决源代码混乱的问题。结 果表明:应用Git的配置管理方法充分利用了Git的优点,大大提高了碳化硅外延设备控制软件开发的效率和质量,为项目的成功 提供了坚实的保障。

Global site tag (gtag.js) - Google Analytics