首页 / 行业
java程序员必须要学习哪些东西
2019-06-25 17:12:00
最近室友闲聊的时候告诉我,他在网上收集了做为一个java程序员必须要会的东西,他觉得自己要有个方向,否则一定会在平平凡凡的工作中,不思进取,最终浑浑噩噩。真是让我猛然惊醒啊,做为一个底层的程序员,如何才能拼得过出来的大学精英和社会老手?学习一定必不可少。虽然自己有点懒,我先把这些记下,待日后尽量弄懂。
Web/WinForm/通吃,包括ASP.NET,WebService,Remoting,Thread,Serializable,ADO.NET等命名空间
精通UML
精通DesignPatterns 23+N种模式:默写各个模式UML图,熟记代码实现方式,范例,以及.NET相关接口
精通CLR
VB.NET/C#通吃
精通OOP理念
精通DB设计与T-SQL,SQL2005就可以了
熟悉AJAX全套技术
通吃WPF/WCF/WF/LINQ
WEB 2.0理念,理解Blog/Wiki/RSS架构,SOA理念
精通数据结构/操作系统/安全加密
精通.NET设计规范
研究5套以上经典源码,例如:SharpDevelop,PetShop,DotNetNuke,SmartClient,NUnit,FotoVision,CSLA等等
熟悉DirectX编程模式
翻译过1-2本技术书籍
软件开发是一个跨度很大的技术工作,在语言方面,有C、C++、Java、Ruby等等等等;在环境方面,又分嵌入式、桌面系统、企业级、WEB、基础系统,或是科学研究。但是,不管是什么的情况,总是有一些通用的基本职业技能。
这些最基本的职业技能通常决定了一个程序员的级别,能否用好这些技能,直接关系到了程序员的职业生涯。很多程序新手也是因为缺少、达不到或是不熟悉在这些基本技能,所以,他们需要有老手带,需要努力补齐这些技能。而高级程序员应该非常熟悉这些基本技能,而且有能力胜任并带领其他经验不足的程序员。
下面这些基本职业技术可以用来做为对一个程序员的评估,很明显,下面的这些技能都可以用来做面试。虽然,还有很多非技术的因素,但对于评估一个程序员的技术能力来说,其应该是足够的了。
下面是程序员所应该具备的基本职业技能:
阅读代码 - 这个技能需要程序员能够具备读懂已经存在的代码的能力,这样的能力可以让程序员分析程序的行为,了解程序,这样才能和开发团队一起工作,继承维护或是改进现有的程序。(相关阅读:《阅读优秀代码是提高开发人员修为的一种捷径》)
编写程序 - 编写程序并不包括程序设计。不要以为编程是一件很简单的事情,很多程序员都认为编程只需要懂得程序语言的语法,并把设计实现就可以了。但是这离编写程序还远远不够,使用什么样的编码风格成为编写程序员最需要具备的基本技能。能否使用非常良好的编程风格直接决写了程序员的级别。
软件设计 - 这一能力直接决定了需要吏用什么样的代码技术达到怎么样的功能,而系统架构设计直接决定了软件的质量、性能和可维护性。并不是所有的程序在这一方面都非常优秀,但每个程序员都需要或多或少的明白和掌握这一基本技能。
熟悉软件工程 - 每个程序员都应该明白软件工程是什么东西,都应该知道,需求分析、设计、编码、测试、Release和维护这几个阶段。当然,几乎所有的人都知道这些东西,但并不是每个人都很清楚这些东西。现在很多高级程序员都会混淆“需求规格说明书FS”和“概要设计HLD”。另外,程序员还需要知道一些软件开发的方法/论,比如:敏捷开发或瀑布模型。
使用程序库或框架 - 一个程序员需要学会使用已有的代码,无论是标论的程序库,或是第三方的,还是自己公司内部的,都需要学会做。比如:C++中,需要学会使用STL、MFC、ATL、BOOST、AC、CPPUNIT等等。使用这些东西,可以让你的工作事半功倍。
程序调试 - 程序调试是分析BUG和解决问题最直接的能力。没有人能够保证程序写出来不用调试就可以运行正常,也没有人可以保证程序永远不会出BUG。所以,熟练使用调试器是一个程序员需要具备的基本技能。
使用IDE - 学会使用IDE工具也会让你的工作事半功倍。比如,VC++、Emacs、Eclipse等等,并要知道这些IDE的长处和短处。
使用版本控制 - 一定要学会使用版本控制工具,什么叫mainline/trunk,什么叫tag,什么叫branch,怎么做patch,怎么merge代码,怎么reverse,怎么利用版本控制工具维护不同版本的软件。这是程序员需要明的的软件配置管理中最重要的一块。
单元测试 - 单元测试是每个程序都需要做的。很多单元测试也是需要编码的。一定要学会在xUnit框架下进行单元测试。比如JUnit, NUnit, CppUnit等等。
重构代码 - 每个程序员都需要有最基本的能力去重构目前已有的代码,使代码达到最优但却不能影响任何的已有的功能。有一本书叫《软件的重构》,每个程序员都应该读一下。
自动化编译 - 程序员需要使用一个脚本,其能自动化编程所有的工程和代码,这样,整个开发团队可以不停地集成代码,自动化测试,自动化部署,以及使用一些工具进行静态代码分析或是自动化测试。
当然,还有很多的基本技术也是非常重要的,比如,与人的沟通能力,语言的表达能力,写作能力,团队协作能力,适应变化的能力,时间管理能力,多任务处理能力,自我学习能力,故障处理能力,等等。这里只是列举了和技术相关的能力,这些是程序最最最基本的能力,只要是程序员就必需要有的能力。
最新内容
手机 |
相关内容
所有遥不可及,终因AI触手可及
所有遥不可及,终因AI触手可及,出行,平台,无人驾驶汽车,导致,人工智能,学习,人类历史上,有许多事物曾被认为是遥不可及的,然而随着科技黑芝麻智能助力亿咖通科技旗下首款
黑芝麻智能助力亿咖通科技旗下首款智能驾驶计算平台成功量产交付,智能驾驶,计算,助力,首款,交付,智能,近年来,智能驾驶技术逐渐成为硅谷:设计师利用生成式 AI 辅助芯片
硅谷:设计师利用生成式 AI 辅助芯片设计,芯片,生成式,硅谷,优化,修改,方法,在硅谷,设计师们正在利用生成式人工智能(AI)来辅助芯片设计阅流智作:一种全新的生成式AI视频制
阅流智作:一种全新的生成式AI视频制作方式,或将颠覆专业视频生产,生成式,全新,视频制作,数据,学习,用户,阅流智作是一种全新的生成式A数据中心如何更快、更经济地利用AI
数据中心如何更快、更经济地利用AI?,经济,数据中心,用于,机器学习,计算,自动化运维,数据中心中使用人工智能(AI)技术可以带来许多好处,从零基础开始,掌握低代码+ Al 的应
从零基础开始,掌握低代码+ Al 的应用技巧,零基础,方法,框架,工具,深度学习,学习,低代码(Low-Code)是一种通过可视化开发工具和少量手写智能时代的三大核心技术
智能时代的三大核心技术,时代,核心技术,智能,机器学习,数据,学习,智能时代是指在人工智能技术的推动下,人类社会进入了一个智能化的TDK机器学习解决方案促进边缘人工
TDK机器学习解决方案促进边缘人工智能前景大幅扩展,解决方案,前景,边缘,人工智能,机器学习,扩展,随着人工智能的不断发展,边缘计算作