网站没有做适配 怎么办,嘉定区建设局网站,网络营销的特点与优势,栖霞网站定制对好书进行整理#xff0c;把好内容共享。
我见证过许多的程序员的成长#xff0c;他们很多人在进入成熟期之后#xff0c;技术上相对较高#xff0c;一般项目开发起来比较自信#xff0c;没有什么太大的困难#xff0c;有的职位上也有所提升#xff0c;成了项目经理、…对好书进行整理把好内容共享。
我见证过许多的程序员的成长他们很多人在进入成熟期之后技术上相对较高一般项目开发起来比较自信没有什么太大的困难有的职位上也有所提升成了项目经理、设计师有的甚至是到了管理者的位置。又经过很长时间这些程序员却在也没有什么变化和发展工作稳定、情绪稳定好像一切都在按部就班地进行着。有的程序员满足于现在的收入和职位安于现状有的程序员却在安于现状的同时苦苦思索却找不到自己的上升空间。
我想说的是满足于现状的程序员并不能成为优秀的程序员永远也不会实现程序员最初那个梦想。而对于那些思索于未来的程序员来说探索自己的上升空间是一个非常重要的事有上进心的人始终是这个社会追捧的对象。那么这个阶段程序员的上升空间在哪里呢这个问题是仁者见仁智者见智的问题同时也是和程序员个体情况相关的问题。因此我们可以用尝试的心态提出自己的看法和建议
1、 技术上的反思和提高
无论程序员个体之间差异有多大我认为程序员上升空间在于技术上的反思和提高。程序员到了成熟阶段往往有一种狂奔到终点后的那种感觉身体疲乏无力特别需要休整再战。要知道程序员在“奔跑”的时候一般是在使用自己的体力很少用到跑步的技术和技巧。尤其是到最后更是依靠体力来支撑。从技术提高的曲线来看新手的技术提高速度最快无论从时间还是急迫性两个方面对新手的压力挺大的。而到了成熟阶段其编程时间也大大缩短了和学习技术的迫切性也降低了所以技术提高速度就慢下来许多。在现实中我们真的看到有些年轻的程序员还看不起那些程序员的技术水平呢就是这个道理。
因此成熟的程序员在安顿之后一定要坐下来反思自己看看自己的技术发展之路哪些走的比较踏实哪些走的比较急促哪些是自己的技术特长哪些是自己的技术薄弱环节。反思后一定要抽出时间抓紧学习把自己的技术上明显不足的地方给补上这样程序员的技术水平加上丰富经验和工作能力会使得自己更加具有实力可以应付各种挑战为今后的发展铺平道路。
而那些顺其自然的思想使得程序员缺少技术提高的主动性程序员有明显的技术上的问题也不主动去解决而是拖之再拖从而使得程序员的成熟度大打了折扣。
2、 走向软件设计师
其实很多程序员走到这个阶段已经在做软件设计师工作了。这是绝大多数程序员发展的必经之路。因为程序员在编程序的时候一方面会实现设计的功能另一方面也在对设计有一个理解、认识、熟知的过程。进而慢慢地从学习别人设计转向到自己参与或独立设计。如果这个程序员真的非常非常喜欢程序员这个职业则可以转向软件设计师。这个转变很大程度是程序员意识的转变就是说要把编程的时间逐步分摊到软件设计上要把重点从编程实现转变到项目的功能设计上。我这里强调的是“逐步”的一个过程程序员要逐步减少编程的时间增加设计的时间要克服编程的强大吸引力要主动地攀上设计这个台阶。很难有一个设计师是完全不编程的而且我认为会编程的设计师才是真正的设计师。一般这种转变需要花上一到两年时间。
3、 走向项目经理
也有一些程序员工作机遇比较好不但负责了项目的设计工作而且负责了项目管理工作。对项目经理这个工作有了一定的尝试。因此这类程序员可以审视一下自己是否合适这项工作。如果自己对这种工作比较满意而且具备项目经理的要求则可以向项目经理这个方向发展。项目经理承担着项目管理的职责对项目负主要责任。它和程序员的作用也不相同项目经理的重点已经从编程转移到对人、对技术、对进度、对项目的管理。由于软件的项目经理与软件项目的相关性太大因此他必须要了解软件开发的各个环节、了解开发的各种技术和运用、了解开发队伍人员的水平和特点。所以他依旧和程序员脱不了干系。从程序员到项目经理可以使得项目经理更好地理解程序员在项目中的地位和作用了解软件开发的各种规律性的东西。从而保证项目的正常完成。而且项目经理的收入在公司中的地位也是比较高的。因此我认为走向项目经理是程序员的另一个发展空间。我想提醒一下程序员在担任项目经理之前最好要把软件设计工作做好这样在做项目经理的时候就会有很好的基础。
4、 走向管理者
很多程序员希望自己能成为公司中的主管、经理、老总、老板这样无论是收入和在公司的地位都相对比较高一些。另外一方面程序员可能厌倦了年复一年的编程工作对工作产生了抵触情绪希望能摆脱这种步步紧逼的工作状态。走向管理者其实要求程序员要比一般人做更多的准备要做更多的转型工作并不是想当管理者就能成为管理者的。但是如果程序员有这个志向和爱好有积累了这方面的工作经验自己也感觉在这个方面能够发展更重要的是有这样的机会走向管理者也是可能的。由于软件公司的管理者毕竟不同于一般公司的管理者专业能力越强管理起来就越得心应手的没有专业能力的管理遇到的问题很多也很难解决。因此我的建议程序员最好要把编程、项目设计、项目管理等基础打打好。这样转型到管理者成功率就会高一些。
5、 走向软件营销
我一直说程序员最大的缺点之一就是眼光只盯在技术上。程序员在入门阶段和成长阶段这种情况还是属于正常的。但是到了成熟阶段这种缺点将严重影响了程序员的发展。程序员在工作中不免会接触到用户不免会了解到用户的需求。从而了解到软件实际发挥的作用进而了解了自身的工作价值所在。有的程序员则固步自封不愿意和外界打交道从内心里坚守技术底线。有的程序员则喜欢和外人交流喜欢把自己的软件推荐给用户而且用户也乐意接受这种专业的介绍用户的接受是程序员价值的直接实现程序员因此获得了工作成就感。这类的程序员可以将自己的专业知识和产品营销结合在一起推动软件的销售和服务转向软件营销职业。这个职业将是一个比程序员更有发展的职业它可以直接反应程序员的工作能力和工作成果程序员的收入和销售会直接挂钩。因此可以让有才华的程序员获得更高的收入接触到更大的软件市场看到更广的个人发展空间。
6、 原地发展
当然也有一些程序员惰性比较大满足于现状享受着眼前的胜利果实也无可非议。对待这些程序员我们不要强求他们改变自己的想法我建议是原地发展把本职工作做得更好把自己的技术水平往上再提高一步。在这个过程中他们的能力和自信心都会得到提高他们的想法不会一直一成不变的。磨刀不误砍柴功刀快了自然会去砍柴的。
7、 跳槽走人
还有一种情况程序员工作很努力技术水平也有很大的提高工作成绩也很突出但是公司的工作环境让他感觉不好例如收入和付出差距很大而且短期内看不到加薪的可能自己的技术水平已经超出公司开发所需英雄无用武之地公司的经营状况比较差、看不到公司未来公司的人际关系紧张小人当道自己得不到重用等。他可以选择跳槽走人。要说明的是这个时候跳槽走人你是有本钱的这个本钱就是你积累的工作业绩、技术水平和工作能力。
程序员在成熟期面临着上升空间的选择是上还是不上往往决定了程序员今后的发展。水往低处流人往高处走只要程序员有向上的意识不满足于现状根据自身的特点和资源选择发展方向我想程序员一定会有很好的发展前途。 打工的是指被发工资的人“老板”是指发工资的人。很多人有这样一个逻辑老板是有钱人当了老板就有钱了。于是乎当“老板”就成了许多人“脱贫致富”的一种理想、一种追求。
程序员经过了一个成长期发展之后慢慢地成熟起来原来那种单纯地把技术学学好把工作做做好的想法也有了一些变化。尤其是那些发展较好的程序员最好是一个人能独立开发软件的程序员他们一方面从编程技术上提高很快另一方面在项目设计、项目管理上也开始了尝试。最重要的是他们看到了软件销售的金额和软件销售的市场。他们发现只要能把软件开发出来然后把软件卖了出去自己也能开公司当老板。尤其是当自己的报酬和自己创造出的价值相差巨大的时候这种当老板的念头更加强烈。
我记得“不想当将军的士兵不是好士兵”这句名言对于程序员去当老板我举双手赞成。在中国就是缺少那些有理想有闯劲的创业精神。看看全国那么多人热衷于报考公务员我们就可以想象这个国家人们在追求的是怎么样的生活了。从这个角度上来说程序员无论是在心中想当老板的还是真正迈出当老板一步的都是值得那些不想当老板的程序员尊敬的。毕竟我们更崇尚那些有理想、有勇气的人。
很多人认为这个人当老板是不会成功的但这个人却成功了很多人认为这个人当老板一定会成功但这个人却失败了。这些例子比比皆是。这说明当老板并没有一定的要求每个人去当老板都可能有其当老板的理由不是局中之人是没法体会的。所以对自己不了解东西不要轻易地给出自己的判断。市场之中一切皆有可能。
在我身边的程序员也有去当老板的有成功的也有失败的。在这么多年IT岁月里我也特别留心各种程序员当老板的各种报道总想从中悟出什么道理出来。很多人就是从软件单价*销售个数得出的巨大金额而动心去当老板的。例如程序员预计这个软件单价为2万元可能的用户有100个2*100200万。程序员就会为这200万而下定决心去当老板了。
我认为程序员当老板应该注意以下几个问题
1、 要有坚定的信念
要想当老板不能只想不做或者今天想做明天又不想做了反反复复犹犹豫豫当老板的机会就会丧失了。要做那就要坚定信心精心准备。准备越充分信心就会越充足。
2、 要有独立开发能力
当软件公司的老板并不需要太多的资金。开始的时候一般只有一个人或是几个人就能开张了。正是因为如此当老板的一定要具有独立的开发能力有了开发能力才能保证开发周期才能保证按时向客户提供软件。否则依靠创业伙伴或招收新员工都有很大可能在规定的时间内完成不开发任务的或保证不了软件质量的。这样会造成创业的失败。
3、 要有强烈的市场意识
当老板首要的条件就是要具备市场意识具备市场意识意味着程序员要把工作重心转移到软件用户在那里软件能卖多少钱软件能否销售出去成本是多少利润是多少是赚是亏诸多方面。如果这种意识不强烈脑子里还是考虑到程序怎么编程序要采用什么新技术程序要有什么技术含量这些技术问题上那这种程序员真的不能当老板。因为当老板应该把绝大多数时间放在市场上这样市场上才有可能给你回报。就如同程序员把大部分时间放在程序上程序员的编程技术才会提高。
4、 要有客户资源
很多创业者一般都会有一两个客户的他们会理所当然地认为同类的客户都可能是自己的用户。其实这是一个很大误区。潜在的客户并不是很容易地成为自己的用户的。不少创业者做了一两单子后就是缺少持续的用户而坚持不下去了。所以当老板一定要首先考虑你的客户在那里要营销多少客户公司才能维持下来怎么样才能营销出这么多的客户。
5、 要有克服困难的准备
从现实的角度上来问题开公司当老板并非易事我和软件公司的老板们有过交谈他们的苦衷、苦水、苦头。
6、 要有凝聚力
凝聚力是非常重要的在创业初期除了要明确合作伙伴与公司之间的承诺、开发人员与公司之间的用工协议之外还要把他们凝聚在一起使大家为了一个目标而共同奋斗。这种凝聚力取决于领头者要具有那种素质那种能力给与同伴以信心给以同伴以信任给以同伴以支持给以同伴以榜样。
7、 要有管理能力
当老板要有管理意识和管理能力开始的时候程序员的角色还没有转变。以前是别人要自己干什么自己处于一种被动和等待状态现在则是要求别人干什么自己处于一个主动和积极的状态。管理意识则要在创业前就要有所准备管理能力是逐步提高的。随着企业的发展管理越来越重要不重视管理、不具备管理能力企业就会很快垮掉的。
8、 要有沟通能力
这里的沟通能力主要是创业者的外部沟通能力。程序员由于长年和计算机打交道客观上和主观上与外部人员接触比较少因此其沟通能力是比较弱的。但是当老板必须要有沟通能力才能了解到市场信息、才能把自己的产品介绍给客户才能进行商务谈判定下合同。
总的来说程序员在成熟之后未尝不可去当老板。但是在此之前要做些当老板的准备。准备越充分越好。即使失败了也可以重新去找工作也可以再一次等待当老板的机会。 程序员在经历了若干年编程工作之后很想知道自己水平到底如何自己是否已经成为成熟的程序员虽然程序员会对自己有一个自我评价但是自己的评价和社会的评价、专业的评价会有差异所以程序员自己并不能肯定这个评价。现实中除了各种证书之外很少有人会专门给出一个程序员的成熟度的评价。人们往往是偶发性地就事论事地对程序员的工作作出好与不好行与不行的评论。因此程序员对此感到很茫然不知道要从那些方面去评价自己的能力。
一个程序员到底成熟不成熟我想从以下几个方面谈谈自己的看法。
1、技术标志
如果程序员不会编程序那决不是程序员程序员至少要掌握一门程序设计语言要能够用这种语言去编写程序去解决他想解决的问题。但是成熟的程序员往往掌握不止一种程序语言三到四种语言的掌握是必须的一种二种语言的精通也是必须的。
除了从掌握程序设计语言个数之外我们还可以从其他几个方面去看看程序员在技术上水平。例如函数编写能力命名、格式、大小、分类、参数、复用等面向过程的能力面向对象的能力数据库技术能力效率处理能力安全处理能力网络处理能力软件构架能力人机交互能力通用软件能力软件文档能力等等。尤其是面向对象技术的掌握和运用以及面向服务的技术都是成熟程序员所必需掌握的。
2、时间标志
虽然程序员的天资、素质、基础知识各不相同所经历的工作内容以及环境也不相同但是时间也是程序员成熟程度的标志之一。一般程序员需要经过三到五年的时间才能日趋成熟。其中入门需要一年成长需要两年。这是我经过长期观察得到平均数据。我并不认为成熟时间越短程序员就越聪明就越了不起。享受每个阶段充分的时间会让自己成长更加充实、更加成熟。当然也有超期而不成熟的情况这也是很正常的。
3、项目标志
程序员的社会性是程序员成熟的标志之一。没有参加过项目的程序员程序编得再好只能是纯程序类的程序员是一个孤独的高手是一种个人型的程序员远没有成熟。项目作为社会性活动体现了项目的社会价值。所以项目能力也是程序员成熟的重要标志之一项目能力包括参加项目的个数、项目的大小、在项目中承担的角色等等。就项目承担的角色而言主持开发项目经理3个以上项目是必须的这是一个必要条件。一个程序员如果没有主持过开发无论参加过多少项目的开发无论是在程序编写或项目设计上发挥了多大的作用是很难被称之为成熟的因为项目的组织、协调和管理是反映一个程序员成熟程度的又一个标志。就如同一个程序员能参与过10个以上大大小小的项目或能参加或能主持两个以上大型项目的开发其成熟程度是可以信赖的。若低于此数则说明程序员离成熟还有相当的空间。“我们在项目中成长”可见项目对于程序员的意义是多么的巨大。
另外一般程序员只是为一个企业客户进行开发一个或多个项目或同行业的企开发项目如果程序员能够如果程序员能够开发过多个行业的项目其成熟度要比一般人要高一些。
4、思维标志
幼稚和成熟在思维方式上还是有很明显的区别的。就程序员而言不成熟的程序员逻辑性不强程序编得没有条理即使程序员自己进行了解释也没人能看懂。而成熟的程序员应该具有很强的逻辑性程序编得井井有条不用解释别人也能看得懂。这种逻辑性还体现在软件的构架设计、数据库设计、算法设计等多个方面。程序员通过全集子集概念、时间概念、顺序概念、重点非重点概念等对各种事物进行逻辑分析。例如以顺序概念为例不成熟的程序员往往会采用自底向上的思维方式来开发程序。他们先考虑程序的具体实现然后再考虑功能设计、最后考虑构架设计。而成熟的程序员则采用自顶向下思维方式先考虑构架设计、再考虑功能设计、最后才考虑编程的具体实现。前者思维方式主要是出于工作惯性只适合入门阶段而后者思维方式反映了后者的进步适用于各种项目开发或大型项目的开发。
除了在思维内容上的逻辑性之外程序员还应该处理好动脑和动手的关系。重视思维本身就是一种成熟的标志。成熟的程序员的思考时间要大于动手编程时间想好之后只要一次就编程成功而不成熟的程序员往往动手编程时间要远大于思考时间而且是边做边想通过反复来逼近最终目标。
另外在思维范围上成熟的程序员要比普通的程序员有更开放视野。他们更容易去接受新的东西更容易不受各种约束去考虑问题更勇于去挑战自己和高手。
5、与人交往
很多人认为程序员是和计算机打交道的行业。这只是这个职业的特点。但是只要是工作必然就是一种社会劳动。而社会劳动则必须和人进行交流和沟通。尽管程序员的劳动工具是计算机但并不意味着程序员只想着这个工具。从这个工具的下游来看程序员还是要考虑用这个劳动工具生产出来的软件产品是否有人购买是否有人使用是否运行正常从这个工具的上游来看是谁让程序员了解设计方案的是谁让程序员编程序的是谁让程序员程序通过验收的等等。因此程序员在软件制作各个环节都会与其他人打交道。只有和人进行有效的交流和沟通我们的工作才能进行下去才能做的更好。
如果一个程序员还沉浸在个人劳动的意境之中对外界持有冷漠、无奈、恐惧的心理内心里不愿意和外界打交道无论自己感觉自己的技术水平有多高还是一个不成熟的程序员。而成熟的程序员一定是特别重视与人的交往无论是上级领导、外部客户、项目经理、团队同伴这些与自身工作密切相关的人还是那些非同单位同行朋友、网友等他们都会认真去听取别人的阐述、要求、意见、建议、反馈等。从中得到更多的工作上的、技术上的、生活上的好的想法以便自己参考和吸收。与此同时与人交往也反映你有好的想法和好的技术水平交流出去而这些想法和技术水平也是你成熟度一种反映。那些没有想法和技术水平的程序员的确是怕和别人交流的。
与人交流的有两个基本能力一个是理解能力一个是表达能力。两者缺一不可。例如有的程序员理解能力差不能理解项目经理提出的要求有的程序员表达能力差无逻辑无重点啰里啰唆让别人不知所云。这都是不成熟的表现。
6、别人评价
别人的评价尤其是单位同事以及对自己工作情况比较了解的人对自己的评价是有参考价值的。一般而言评价差的一定是不行的是不成熟的。评价好的要看情况而定单位同事对人的评价会从两个方面来考虑一个是这个人的为人情况一个是这个人的工作能力。如果两者都不错我们有理由认为这个程序员是成熟的。反之无论是工作能力强但为人不好为人很好工作能力不强我看都不能算一个成熟的程序员。
所以程序员要注重别人对自己的评价在提高自己技术水平的同时学会做人做好人学会与他人分享这样别人才会给自己更好的评价。
无视别人评价其实也是一种不成熟的表现。只有自己感觉好大家感觉好那才是真的好。
其实别人的评价如果仅限于自己单位的话恐怕这种评价的价值会打折扣如果这个单位技术人员的人数很少水平普遍很低即使你鹤立鸡群大家对你的评价很好但是你和其他公司和单位的程序员来比你真的不一定的成熟。所以我说别人的评价仅仅是一个参考。
7、收入标志
收入也是成熟程序员一个参考标志。收入的大小往往是对程序员社会价值的认可度表明程序员的劳动值这个价钱。一般而言成熟的程序员能够挣得软件业平均收入的中上水平或者在一个单位或部门中能够挣得比80%左右员工要高的收入。而刚参加工作不久的程序员收入应该与其相差很大的。另外单位的项目奖金发放也可以看出程序员在项目中的地位和作用。
现实中我们知道程序员的收入和其付出是不是正比的而且越是能力强的、贡献大的程序员可能不一定比那些不如其它能力不如他的程序员高出许多。这不是软件行业的通病几乎所有行业都存在这种情况。通过分析我们认为程序员成熟度应该是和其收入高低挂钩的。如果我们知道我们能力和贡献大大超出我们的收入我们就有理由向上级领导提出自己的收入要求。
8、心理素质
程序员常常面对各种各样的成功和失败尤其是失败更是多于成功这也是程序员这个职业特点之一。以编程为例几乎没有一个人一次就能把程序给编好的它总是要遇到各种语法错误总要遇到各种遗漏一个程序要反复多次修改调试才能完好。有的程序员因找不出来程序的bug束手无措哀声叹气心里极其不爽。以工作为例有的程序员因工作进度和程序出错常常受到别人的批评和指责心里极其不满认为批评人不了解造成这个结果的客观原因批评错了人。从而对人产生意见甚至对工作造成了影响。面对失败和挫折成熟的程序员会坦然面对编程时出现问题不可怕有什么问题就解决问题解决不了的问题可以想其他方法进行解决不在一棵树上吊死。面对别人的批评和指责首先从自身查问题是自己的问题那就要主动承担责任并尽快改正。不是自己的问题应该换位思考理解批评人的焦急心态并找机会给予说明。良好的心理素质在面对困难和挫折的时候就会很坦然很坚强很自信。
程序员也会面对成功的。有些程序员因开发了某个项目因编写了某个程序而感觉良好在不自觉中表现出我最牛我最好的样子面对他人夸夸其谈而对其他人不屑一顾。而更有甚者并其无成果表现平平却依然会摆出一个高手的样子有的仅仅参与了某个项目而且不是项目主要开发者却会贪天之功归其所有好像这个项目是他主持开发的。这些其实也是心理素质不成熟的另一种表现。成熟的程序员面对成功并不会感觉到高人一等该是自己的功劳就是自己的功劳该是别人的功劳就是别人的功劳即使自己比别人水平高出许多他还是在想还有更高的技术顶峰等待攀登不可自傲看到别人取得的成绩首先感到去祝贺然后去学习而不是心怀嫉妒从中挑刺尽量贬低。
良好的心理素质使得程序员更加理性地处理好各种成功和失败带来的各种问题更有利于程序员超越自我以平常之心去迎接更大的挑战。
当然一个程序员是否成熟是一个仁者见仁智者见智的话题。有的人强调程序员的个人能力方面有的人强调是程序员的社会能力方面。我认为从以上8个方面综合地去评判一个程序员是否成熟应该能说明些问题了。我们标志成熟一个目的是对程序员前面成长过程给与一个肯定和鼓励让程序员认清自己的所处的阶段让自信找出依据。另外一个目的是对程序员未来成长提出更高的要求。走向优秀是程序员面临的更大的挑战。 很多程序员到了成熟阶段后就会处于一个停滞状态。技术上已经驾轻就熟工作上已经按部就班心里虽然感觉有些不甘但是何去何从他们显得很茫然很无助。我认为程序员到了成熟阶段后如果还想要向优秀阶段发展一定会遇到这个瓶颈的穿过这个瓶颈就会走进另一片开阔的前景穿不过则会停留在原地止步不前。
1、技术瓶颈
技术上的瓶颈是很明显的主要表现在对学习缺乏热情对技术缺乏钻研对新技术发展缺乏了解等三个主要方面。其中原因主要是第一成熟的程序员编程技术已经能够满足开发软件的要求很多人认为只要能编出来就行了至于编得更好那就要看兴趣了看时间允许了。第二由于成熟程序员承担着比一般程序员更多的工作比如软件设计和项目管理比如和用户打交道、和领导打交道很多时间精力无法放在编程上面。第三由于软件开发任务一般都比较紧工作起来必须加班加点才能完成因此没有时间再做技术上的深入。第四很多程序员处于一个自发的发展状态自己的成长完全取决于自己工作内容工作内容强度和复杂程度决定了其技术水平的高低因此他自己根本不知道自己技术发展的方向是什么技术上的差距是什么也就无从谈起自己的努力的方向。
因此成熟的程序员应该有更上一层楼的意识千万不要固步自封夜郎自大。首先要对自己在技术上有一个客观的分析看看自己的长项在什么地方弱项在什么地方。对自己的弱项就要想办法进行克服千万不要留在那里日后必然会影响自己的进步。比如很多人弱项在面向对象的设计方法人机界面交互大数据量处理处理效率等如果有这些方面的问题就要想尽办法去解决。其二要注重编程基础技能的深入掌握很多时候程序员只是拿来主义知其然不知所以然把基础缺失的那个部分再补回来为今后向更高的技术境界打下基础比如像操作系统网络知识、程序设计语言、数据库、系统构架、软件工程等基础知识要重新审视把其中有用的知识掌握好并且要学会把各种基础知识给串联起来加深对基础知识的认识。其三要逐步把编程技术从功能实现方面转向参数化设计、软件构架等高级阶段方面的研究在共享、通用、标准化方面有所建树。
2、工作上瓶颈
程序员在工作上也存在向上的瓶颈。就一般而言很多程序员在这个阶段工作上比较稳定领导对自己相对比较了解和信任同事对自己的工作能力和技术水平也比较认可软件用户对自己的服务也相对比较满意。因此在充满工作上的满足感的同时工作上日复一日没有什么新意疲倦感油然而生而以往那种激情很少有地方释放了。所以程序员有时也会思考自己在工作上究竟要在什么地方进行突破究竟怎么才能更上一层楼。
程序员在工作上的现状还是来自于软件公司或部门上级的安排所致尽管自己在具体工作上付出很多编程上有很大的自主权但是从总体上来看程序员只是企业经营过程中的执行人员是一个被动的角色。因此程序员要改变工作上的现状程序员必须要有主动意识尽可能主动地规划好自己的发展方向主动地向上级反映自己的想法和打算争取上级的理解和支持在工作条件许可的情况下把自己的时间和精力以及主点放在自己关心的方面。例如程序员感觉自己编程方面已经满足工作要求了但是自己与客户打交道的能力市场资源的积累很差。他就可以向主动上级提出自己想做售前工作如果领导同意则可以在这个岗位上提高自己这方面的能力。在岗位不调整的情况下可以根据自己的工作范围尽可能多多和客户打交道了解客户的需求从而为自己开发的项目做好基础同时通过与客户打交道和客户交朋友为自己的市场资源做些积累。其实在工作层面上可以有很多值得改进的地方的。
3、收入上瓶颈
说到底程序员最大得瓶颈在于收入上的瓶颈虽然经过多年的努力奋斗收入也有了一定得提高有的甚至达到了社会平均收入的中上水平。但是面对中国的生活现实买一套房需要花光几十年得收入即使按揭还是要每月偿付本息的而且工作很难稳定到几十年不变除非是公务员。因此绝大部分程序员的收入是很难满足那种程序员向往的生活尤其是过上中等生活的要求和过上稳定生活的要求。当然例外总是有的极少的程序员收入也是相当高的生活过的很滋润。就普遍情况来看我们付出的和得到的是不成比例的这不能不说是社会的一种悲哀。回到某个程序员具体情况来看程序员的收入一般比较稳定有的一年动一次有的几年动一次这要看所在各公司情况和所在单位部门情况而定。程序员和其他职业的员工一样很少在工资收入方面有自己的话语权。
程序员经历了成长过程的风风雨雨之后到了成熟阶段收入应该比过去高了许多。但是程序员的预期和实际收入的反差是程序员内心最大的烦恼因此增加收入或大幅度增加收入是程序员无法突破得瓶颈。
面对收入瓶颈程序员应该调整心态光靠埋怨是绝对无用的。要解决这个问题程序员可以从以下几个方面来考虑。第一程序员可以本公司部门进行收入增加的挖潜可以主动提出调整到收入高的岗位可以参加高奖金的项目开发凡是能够增加收入的各种工作都可以考虑去做。第二在这个基础上如果程序员感到自己的收入还是无法达到自己的预期不妨可以考虑离开这个公司或部门通过应聘高薪工作的方式来提高自己的收入当然这种选择还是要慎重的要考虑多方面的影响很多情况下收入不是唯一的因素未来收入和现有收入很小的差距更是忽略不计的因素。第三程序员在条件和精力的许可的情况下可以从事一些第二职业由于程序员这种职业特性程序员可以独立完成某个编程任务也可以和其他人共同完成编程任务的通过从事第二职业程序员可以增强市场意识可以比本公司、本部门知道更多的软件的价值结识更多的软件同行学习更多编程技术并且获得相应的劳动报酬。更重要的是在此期间可能会遇到自己发展的机遇。
满足现状的程序员就不可能遇到这些瓶颈他们会在一个自己的世界中得到满足他们会在这种满足下持续自己的工作求得一份平静的生活。而那些不满足现状的成熟程序员那些追求优秀的程序员因追求而困惑因瓶颈而求突破。程序员只要不甘于现状只要认定一切要靠自己只要准备付出比过去能多精力只要准备克服比过去跟多的困难只要求新求变最终都会破茧成蝶的。那绚丽的天空下那自由飘飞的彩蝶正是他们未来的身影。 从技术层面上来看优秀程序员和一般的程序员相比其中一个重要区别就是重心从程序制作转变到构架制作。绝大部分程序员关心的是如何将各种各样的需求通过计算机语言进行编程实现。因此他们有三个方面的重点需求、编程、需求到编程那个过程。所以他们的主要精力在用于需求是什么需求怎么变成功能设计如何实现功能的程序编写他们的出发点是需求终点是程序。
随着我们编写程序的数量增多我们慢慢地会发现有两条主线同时在运动一条是用户需求一条是程序编写。就用户需求而言我们就会发现不同用户的项目之间的需求比较类似做的越多我们看到相同的需求或类似的需求就越多。在程序编写方面我们面对相同需求或类似需求的时候就会自然用原来的程序或用原来的程序进行修改来完成了。同理程序编写的越多我们用到的原来的程序的次数就越高。这种现象是和需求趋同的规律是一致的。在项目开发过程中我们就会自然而然地将相同的需求用相同的程序来完成。于是我们就会产生了需求和程序之间的对应关系。例如我们想要在A项目中检查一下用户的权限我们自然就会想起以前在B项目编写过的check_usr_right这个函数。于是我们就会把这个函数拷贝过来用在A项目之中。虽然拷过来的函数并不能完全满足项目A检查用户的权限要求我们可以对check_usr_right函数进行改造这样就成了新的check_usr_right函数了。如此一来我们就会积累出很多相同的程序这些相同的程序表现为公用函数、控件、类库等。这种编程方法和最初一心实现需求、采用原始的连续性编程方式相比开始考虑了软件构架问题了。
那么什么是软件构架软件构架就是站在软件自身角度上而不是站在需求角度上编制软件的技术方法。通俗地说是软件之上的软件。如果我们一个窗户看作一个项目那么窗框就可以看作成构架而窗框里的小框和玻璃以及玻璃上的贴花和贴膜则可以看作小构架和构架下的各种功能。我们可以看到窗户的形状方形长方形、半圆形、异形等是由窗框决定的而窗框中的小框和玻璃等是在窗框范围之内的。因此我们可以这样认为软件构架决定了这个软件的大范围和构架而其中的功能软件则是在这个构架之下的功能实现。
既然我们知道软件构架是软件之上的软件那么软件构架和我们一般程序有什么不同呢我认为其不同之处在以下几个方面。
1、 抽象和具体之间的差别
一般程序主要是解决具体的需求形成一个具体的功能。比如要计算12等于几非常之具体程序员容易理解。而软件构架并不针对一个具体的需求比如要进行算术表达式处理。当然这个算术表达式的处理也可以处理12等于几的需求但是这个算术表达式是抽象的并没有具体的需求但是能处理具体需求。
2、 大和小之间的差别
一般程序主要是解决具体的需求程序很小功能点也比较直接并不复杂。而软件构架则是软件之上的软件考虑问题比较多。例如它要考虑软件的整体的一个构架构架中的各种模块的功能构架中的模块之间的关系和接口构架怎么与具体程序相联系等各种问题。因此构架程序量是很大的功能也相对复杂。
3、 高和低之间的差别
一般程序在解决需求时并不会去给软件分层最多是按B/SC/S或者是按表示层、逻辑层、数据层三层构架来进行程序分层。另外一般程序只要能满足具体需求就OK了其技术上的并没有硬性的要求。但是软件构架就不同了它是将软件进行了分层处理最上面是构架最下面才是具体功能。因此软件构架对技术要求相对是比较高的比如程序的结构程序的效率程序的通用性和扩展性程序的并发处理、程序的例外处理等等。这样有了软件构架概念之后软件就分为构架软件和具体软件两个部分了。构架软件处于上层可以应用于各个项目而具体软件或称具体程序则处于下层这个具体程序和我们现在所说的一般程序很接近这两者结合形成了具体的项目或系统。
4、 全面和局部之间的差别
一般程序主要是解决一个项目的某个具体需求因此它体现出程序的局部性所以一个项目可以给不同的程序员去完成。软件构架在设计时或者在制作时则是站在全局的高度来审视整个抽象的项目一方面要考虑构架本身的功能另一方面要考虑到如何向具体程序提供合适的接口。这两个方面都需要对项目或软件有一个整体认知而不仅仅限于某个局部。
当然以上的差别是非常宏观的并不很具体。但是有一点是可以肯定的那就是软件构架制作是和一般程序编写不同的。这一点需要程序员去细心地体会的。如果一个程序员没有软件构架的意识只是满足于停留在一般程序编写的优劣之中那是很难进入优秀程序员行列之中的。那么什么是软件构架的主要内容呢程序员应该关注那些问题呢
1、 构架意识
意识我仍然在强调意识的重要性。没有对某个事物重要性的意识就不会关注和研究这个事物就不会去主动掌握这个事物就不会利用这个事物去创造更大的价值。同理如果我们的程序员没有构架意识就会在普通程序员中求得那种优越感时间一长就感到自己在软件中没有可以发展地方。而有了构架意识我们的程序员就可以在原有的编程基础上向更高层面发展那里有更大的空间需要我们去学习和展示自己的才华可以说构架领域中的学识和技术是没有止境的。
2、构架制作
光有构架意识还不够还要让构架从设计走向程序这就需要进行构架制作也就是说我们要编制构架程序。而编制构架程序就涉及到具体的程序设计语言涉及到具体程序语言的特性、涉及到具体程序设计语言的编程技术和技巧。这些编程需要程序员要有很扎实的编程基本功很高的程序设计的技巧以及程序编制的丰富经验。构架制作绝大部分都是面向对象、面向抽象功能、面向通用、面向参数化的编程。
3、 构架应用
我们不能为构架而构架我们编制构架的其中目的就是可以更快、更好、更节约地开发出我们的应用系统。如果我们编制的构架不能运用到具体项目开发中或者编制的构架反而比普通的编程效率更差质量更差达不到我们预期的目标那么我们的构架只能是失败的构架失败的构架比没有构架更加糟糕。因此我们要编制那些有用的构架并且通过具体项目的开发来验证构架的正确性和有效性。可以这样说开发的项目越多构架的积累也就越多。只有这样我们才能让我们的构架更加具有实用性和实用价值在开发和运用中发挥越来越大的作用。
4、 构架研究
构架一方面是一个实用的程序另一方面也是一门学问它需要理论和实践的不断地结合和完善来体现其价值。例如我们如何划分构架程序与具体程序之间的界限我们面对各种应用系统是采用统一构架方式还是采用多构架方式来完成项目的开发我们在应用构架时如何设计和应用参数并使得参数运用更加简便合理我们在采用不同程序语言在制作构架时应该注意什么问题我们如何处理构架与具体需求之间的关系我们怎么利用具体程序与构架之间的接口实现动态程序的挂接等等话题都是我们可能要面对和解决的。因此我们要静下心来要学习构架各种知识要大量积累项目开发经验区分那些是属于构架方面的功能那些是属于具体程序方面的功能研究采用什么样的编程技术才能达到构架的最佳效果。理论和实践的结合才会让我们长成腾飞的翅膀。
采用构架的方法开发程序可以让你的程序技术上个档次让你的项目结构更加清晰让你的项目开发更快更好让你的项目更具有可维护性和具备可扩展性。
没有构架的约束我们可能更加自由但是有了构架的约束我们可以让自由更加有价值。追求价值才是我们最终的目标。