首先在这里讨论的是国内的大陆地区。在今天这个中国IT环境下,开发人员出路何在?一个优秀开发人,应该有致力于编写优雅代码,让别人读得懂,具有可读性,可测试性的代码,不仅仅是可以运行的代码。所以经常需要对现有的代码重构,包括自己写的代码。而现在国内的开发人员这方面的素质一直缺乏,就更难谈得上对软件开源社区的贡献了。

      所以一些优秀的开发人员后面都去做架构师了,但又不是每个公司都需要架构师。又有一些由于家庭的原因,转做PM了,由于开发人员需要不断的学习,新技术的更新换代,日新月异,所以你不学习就跟不上时代。当你到30岁的年龄,由于精力的不够,越来越多的开发人员被迫转行或转型。剩下来的人,优秀的相对较少了,由于国内环境的影响很少人会继续专注于开发领域。只有一线大型软件公司,如Microsoft, Google,IBM等公司,能让你一直做软件开发工作。再讨论一下国内的一线城市(北上广深)的IT软件行业特点,大型公司(如上列举几家巨头)分工明确,以至于让你转变为专业化的IT软件开发人员,对某一个软件开发领域越来越深入。的确,一些大公司也需要你这样专业人员。一类这样的开发人员(30岁或以上)在大型IT公司工作,未来他们的方向有可能是部门经理,有可能是架构师,无论哪一儿条路也不容易,因为大公司有向上走困境。有的人可能三十多岁还在做Engineering or Coding。这种现象在国外大型公司更是正常了,越是资深的,越是年龄大的程序员越得到尊重。而在国内民营公司,或非IT的公司则正好相反。
      在一些民营小公司,做软件就是小打小闹,软件小作坊,你会发现很多不如意的地方,可归结于不专业,不专业化带来是工作效率的低下,并且存于整个在公司的过程或流程的方方面面。还有一种情况,有的人就没有经历专业化,由于不求上进,所以他们就没有这个思想意识。由于不专业化,一些人也不求上进,混日子的人也不少,当你与这些不专业的人工作在一起,你会感到非常的郁闷。这时,可能你需要修改那些mess or crap code(垃圾代码),那可真是一种痛苦的事情。特别是,当你试图改变这一切时又受到上层阻碍,或得不到支持,没有上层的批准,整日在这些垃圾代码上工作,渐渐地你的愤怒情绪不断增长,终有一日需要释放,谁也不想每天让这些垃圾代码弄得心情不愉快呀,谁也不想由工作不愉快情趣影响对人的看法,即使做到对事不对人。

      有时正因为这些垃圾代码让你加班,你需要实现某些功能。而那些垃圾代码作者根本没有意识这些问题,你在这边完善,他在那边乱搞。就像那句话:“不怕神一样的敌人,就是猪一样的队友”。记得某一年的程序员杂志上,采访某个软件公司Leader, 他说到让不好的人进入团队,就是对其它团队人员的不尊重。所以,你必须尽量争取去一个优秀的Team,无论是大公司还是小公司,与优秀的人在一起工作,你会学到更多。在今天很多的成果与业绩需要一个Team来完成,不再是个人主义的时代,而是依赖一个Team有效分工协作。Team才能创造出好的产品或服务,当你做为一个Leader时去负责管理Team时,需要遇到的情况就会更多了,当然越是困难多,对你的历练就越多,对你也是成长,这是一个过程。

      综上所述,在一二线城市做软件开发,可以尽量去大型知名公司工作。在三线城市,因为没有大型IT公司,可以选择转型做PM或开发经理或其它IT职位,很多时候转型是受环境和平台影响,没有特定的环境平台你也做不了。还有就是寻找创业团队,并加入他们,但创业是不容易的,需要做好一切准备。

关于如何写优雅,可读性,可测试性的代码,什么是优秀的开发人员,可参考以下书籍:

The Art of Readable Code

Code Complete: A Practical Handbook of Software Construction, Second Edition

The Clean Coder: A Code of Conduct for Professional Programmers

The Pragmatic Programmer: From Journeyman to Master

Working Effectively with Legacy Code

Beautiful Code: Leading Programmers Explain How They Think》 

The Passionate Programmer: Creating a Remarkable Career in Software Development (Pragmatic Life)

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman

  
以上一些想法,是回顾过去工作经历而来。最后,希望各位选择好自己的职业生涯。

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog

国内IT软件开发人员现状的更多相关文章

  1. 软件开发人员真的了解SQL索引吗(索引使用原则)

    原文:软件开发人员真的了解SQL索引吗(索引使用原则) 前两篇文章我总结了一些SQL数据库索引的问题,这篇主要来分析下索引的优缼点,以及如何正确使用索引.       索引的优点:这个显而易见,正确的 ...

  2. 2019 年软件开发人员必学的编程语言 Top 3

    AI 前线导读:这篇文章将探讨编程语言世界的现在和未来,这些语言让新一代软件开发者成为这个数字世界的关键参与者,他们让这个世界变得更健壮.连接更加紧密和更有意义.开发者要想在 2019 年脱颖而出,这 ...

  3. 国内APM企业的现状

    19世纪美国西部掘金热大起,大家听闻有人挖到了金子一夜暴富,于是蜂拥而上,但是很多人失望而归,最后居然是卖铲子的人赚到了钱. APM在互联网+时代表示应用性能管理,就是掘金万亿互联网市场的“铲子”,主 ...

  4. 东方国信 - 软件开发人员面试问卷(ver1.001.002)

    1.    通用编程知识问卷(所有编程人员必做)... 1 1.1      SQL问卷... 1 1.2      翻译... 2 2.    Java问卷(Java程序员应答,其他跳过)... 2 ...

  5. 每一个软件开发人员绝对必须掌握的关于 Unicode 和字符集的最基础的知识

    2013-02-05 14:18 48人阅读 评论(0) 收藏 举报 关键字:     Unicode, Character Set, 字符集, UTF-8, ANSI, ASCII, UTF-7   ...

  6. 从 2017 OpenStack Days China 看国内云计算的发展现状

    目录 目录 China Runs On OpenStack 私有云正式迈入成熟阶段 混合云的前夜已经来临 China Runs On OpenStack OpenStack Days China 作为 ...

  7. IT外包行业与职业发展

          在IT行业,总是有一些IT外包公司的存在,凡是存在的都是合理的.当你做为IT从业人员应该尽量避免去外包公司工作 .特别是你从事软件开发工作.     先来说说缘由,一些外包公司本来是从事软 ...

  8. Android IOS WebRTC 音视频开发总结(六一)-- 大数据解密国内实时通讯行业开发现状

    本文主要介绍国内实时通讯行业现状,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 这几年移动互联网发展势头很猛,与 ...

  9. SLAM技术在国内的发展现状

    近年来,由于扫地机的出现使得SLAM技术名声大噪,如今,已在机器人.无人机.AVG等领域相继出现它的身影,今天就来跟大家聊一聊国内SLAM的发展现状. SLAM的多领域应用 SLAM应用领域广泛,按其 ...

随机推荐

  1. java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required

    java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required 严重: Exceptio ...

  2. 固定Table的头部和左边的列-在Knockout Js使用场景下

    要求:固定Table的头部和左边的列 场景:Knockout Js被用于绑定Table的数据源. 固定HTML表格的头部和列是一个很常见的需求.此文:http://www.cnblogs.com/so ...

  3. TODO:软件升级的那些事

    TODO:软件升级的那些事 软件升级,指软件从低版本向高版本的更新.由于高版本常常修复低版本的部分BUG,所以经历了软件升级,一般都会比原版本的性能更好,得到优化的效果,用户也能有更好的体验. 最近常 ...

  4. BUG级别定义标准

    通过图片另存为 或者 放大浏览器倍率 查看.

  5. [erl] erlang 进程注册和注销

    想要注册一个进程,必须先要创建一个进程. 如何创建一个进程,可以使用spawn.spawn_link,它们虽然都能创建进程,但是也有微妙的区别: 1)当前进程中创建一个并行进程,当被生成的进程崩溃时, ...

  6. SQL Server中的高可用性(1)----高可用性概览

        自从SQL Server 2005以来,微软已经提供了多种高可用性技术来减少宕机时间和增加对业务数据的保护,而随着SQL Server 2008,SQL Server 2008 R2,SQL ...

  7. WPF 子窗体关闭时显示父窗体

    这个问题纠结了两天,今天在一个朋友的帮助下,解决了,其实很简单,但是可能作为新手,接触WPF时间还是短,因此作为一个问题困扰了我. 父窗体部分代码 private void EditInformati ...

  8. MVC4做网站后台:用户管理 ——用户组 1、添加用户组

    打开控制器UserGroupController 添加Add action /// <summary> /// 添加用户组 /// </summary> /// <ret ...

  9. lintcode最长回文子串(Manacher算法)

    题目来自lintcode, 链接:http://www.lintcode.com/zh-cn/problem/longest-palindromic-substring/ 最长回文子串 给出一个字符串 ...

  10. CDH安装失败了,如何重新安装

    1> 删除Agent节点的UUID # rm -rf /opt/cm-5.4.7/lib/cloudera-scm-agent/* 2>  清空主节点CM数据库 进入主节点的Mysql数据 ...