❶ 名校计算机专业出来的只能当苦逼的程序员吗
计算机专业毕业并不是只能做程序员,可以做的事情很多,在以后的生活中,专业给你带来的思维方式会给你很大的帮助。
我就介绍几个与计算机相关,但不需要编程的非技术岗位:
1: 产品经理
产品经理负责整个产品从0到1的规划,设计,产品后期的营销策略,依据大数据分析对产品功能不断迭代完善等产品全生命周期的活动,是产品的最重要负责人。虽然产品经理不需要编程,但是对于产品经理的综合素质要求还是很高的,除了完成大学计算机基础和专业课外,还要自己补充如下知识: 管理类: 计算机信息系统项目管理,敏捷开发,表达与沟通类的课程 市场营销类: 产品文案设计,传播学基础,市场营销,尤其是互联网营销等 认知与心理学类: 社会心理学,产品设计心理学,消费心理学,互联网思维系列,大数据思维系列,逻辑学基础,版权法律等法律通识课等等
2 销售
需要不断拜访客户,维护客户关系,有时还需要挖掘出客户的需求和痛点,反馈给技术部门,不断完善公司软件产品。
3 运营
可分为: 用户运营,市场运营,数据运营,内容运营等。运营工作在互联网公司尤其重要,大家熟知的淘宝,在互联网届公认的是靠运营不断发展壮大的公司。
❷ 程序员三观不正怎么办
程序员三观不正,
就需要提出,提醒,督促改正。
❸ 有关程序员的经典名言都有哪些
程序员是IT专业人才的代名词,他们往往沉迷电脑包不可自拔,甚至很多时候造成了忽视生活“返还原始社会"的现象,因此也被戏称”程序猿“很多时候,人们对于程序员的世界充满了好奇,那么,对于程序员来说有那些经典语录呢?
关于程序员的有关话题和程序员的段子还有更多呢,对于程序员而言他们更是出色的段子手啊!
❹ 美国程序员把工作外包给中国程序员,为什么啥也不干年入 20 万美元
近日,有这样一则新闻,一位美国程序员把工作包给中国程序员,自己什么也没干就年收入20万美元,为什么会出现这种现象?我们一起来了解一下。
总体经济不太发达,但人口稠密地区的劳动力非常适合外包,想要改变这种现象,要加上地方政府的政策,这个行业的快速发展将很快得到促进。例如,印度班加罗尔是印度典型的所谓小硅谷,几乎所有跨国公司的技术巨头都在那里设立了分支机构,用低劳动力成本做高质量的事情。
❺ 做程序员8年了感觉好累,有没有其他好的行业推荐
上周做了几次咨询,来访都是三十多岁的程序员,每个人对年龄都表露出深深的焦虑。这周一和知乎一个话题的策划者电话聊选题,选的也是35+的互联网人何去何从。这不由又唤起了我对年龄焦虑的思考,索性来谈谈大龄程序员的未来吧,献给所有找我做咨询的程序员们,也献给所有为年龄而焦虑的互联网人。
首先我会讲下年龄焦虑的本质,然后会谈谈大龄程序员的8种出路,最后会聊聊如何选择自己的方向。
年龄焦虑的本质是竞争力不足
所有和我聊年龄的程序员,聊到最后,都会确认这个事实:所谓年龄焦虑,焦虑的根本不是年龄,而是竞争力相较于年轻人,逐年下降。
这才是年龄焦虑的本质——竞争力不足。
介绍两个简单的方法。
第一个方法是以终为始,面向未来做决策。
也就是说,你先设想你想要的目标,想过的生活,想成为的样子,然后来倒推,自己现在该怎么去做。
有的人可能想不清楚未来会怎样,介绍一个小技巧——找榜样。通过榜样的工作和生活状态,来明确自己想要的,然后你再来倒推。
第二个方法是贪婪算法,不管未来会怎样,总是基于现在,做出在当前看来是最好的选择。
比如现在你觉得自己要是在技术上多投入时间,可能快速提升技术水准,还可能拿到更高薪水,那就倾尽全力去钻研技术,先不管别的,干上两年再看。
比如在你现在的公司里,管理者有更大的权力和回报,这深深的吸引着你,那你就想尽办法去抢管理的坑,先抢到再说,不管别的。
所有的方法,都是纸上谈兵,最重要的,是你结合自己的情况,落地执行。
❻ 关于程序员
那编程能力实在是太强了,而且开发经验丰富。你要想成为程序员就一定要做好吃苦的准备,还有一点要说明,做这个行业不是早结婚,就是晚结婚,这是不争的事实。
学好某一门语言或学好多门语言只是成为一名合格的程序员必备的条件之一,重要的是软件工程所要走的一个流程,看一下CMMi方面的资料会对你有一些好处.
(Capability Maturity Model Integration,能力成熟度模式整合)
CMMI( Capability Maturity Model Integration)的本质是软件管理工程的一个部分。软件过程改善是当前软件管理工程的核心问题, 50多年来计算的发展使人们认识到要高效率、高质量和低成本地开发软件,必须改善软件生产过程。基于模型的过程改进是指用采用能力模型来指导组织的过程改进,使之过程能力稳定的进行改善,该组织也能变得更加成熟。
然而,软件组织形成一套完整而成熟的软件过程不是一蹴而就的事情,需要经历一系列的成熟度。软件组织首先要进行差异分析,评定自己比较接近哪一个成熟度,然后再根据自身的情况来决定要采取哪些改进活动,来更有效地改进自己的软件过程。这就对软件过程的评定提出了一个客观的标准。美国卡内基梅隆大学软件工程学院于1987年研究成功的SW-CMM(Capability Maturity Model for Software)就是这样的一个理论模型,其目的在于帮助软件组织改善软件生产流程,以探索一个保证软件产品质量、缩短开发周期、提高工作效率的软件工程模式与标准规范。
CMMI是一个可以改进系统工程和软件工程的整合模式。1997年10月SEI停止对CMM的研究,改而致力于CMMI,以解决使用多个过程改进模型的问题。SEI同时宣布CMMI将取代CMM,与2000年8月11日颁布了CMMI-SE/SW 1.0版本,2001年12月颁布了1.1版本,这次发布标志着CMMI正式启用,并准备今年内完成CMM到CMMI的过渡。说到CMMI就不能不提CMM。
CMM
CMM框架用5个不断进化的层次来评定软件生产的历史与现状:初始级描述了不成熟,或者说是未定义的过程的组织,是混沌的过程以不可预测结果为特征;可重复级是经过训练的软件过程;已定义级是标准一致的软件过程,以组织内改进项目执行为特征;已管理级是可预测的软件过程,以改进组织性能为特征;优化级是能持续改善的软件过程,以可快速进行重新配置的组织性能,和定量的、持续的过程改进为特征。任何单位所实施的软件过程,都可能在某一方面比较成熟,在另一方面不够成熟,但总体上必然属于这5个层次中的某一个层次。
CMM包括两部分"软件能力成熟度模型"和"能力成熟度模型的关键过程域"。"软件能力成熟度模型"主要是描述此模型的结构,并且给出该模型的基本构件的定义。"能力成熟度模型的关键过程域"详细描述了每个关键过程方面涉及的过程域。
可重复级关键过程域:需求管理,软件项目计划,软件项目跟踪和监控,软件子合同管理,软件质量保证,软件配置管理。
已定义级关键过程域:组织级过程焦点,组织级过程定义,培训大纲,集成软件管理,软件产品工程,组间协调,同行评审。
已管理级关键过程域:定量过程管理,软件质量管理。
优化级关键过程域:缺陷预防,技术更新管理,过程更改管理。
多数组织的基本目标是达到成熟度3级。评估组织当前的成熟度级别的手段之一是软件能力评估(SCE)。SCE通过评估软件过程(一般以方针陈述的形式)和项目实践来确定该组织是否言行一致。组织的过程体现了如实记录所做的工作,项目实施(对该过程的特定剪裁和解释)应该证明说到做到。
现在全球许多不同的组织以CMM为协助企业作全面的过程改进活动,除了肯定其软件成熟度外,更像征具有跨足国际市场的能力。现在通过CMM5级认证的组织达到了一百多家。
CMMI
CMM的成功促使其他学科也相继开发类似的过程改进模型,例如系统工程、需求工程、人力资源、集成产品开发、软件采购等等,从CMM衍生出了一些改善模型,比如:SW-CMM,SE-CMM,IPD-CMM等。不过,在同一个组织中多个过程改进模型的存在可能会引起冲突和混淆。CMMI就是为了解决怎么保持这些模式之间的协调。
由业界、美国政府和卡内基·梅隆大学软件工程研究所率先倡导的能力成熟度模型集成(CMMI)项目致力于帮助企业缓解这种困境。CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。
与原有的能力成熟度模型类似,CMMI也包括了在不同领域建立有效过程的必要元素,反映了业界普遍认可的"最佳"实践;专业领域覆盖软件工程、系统工程、集成产品开发和系统采购。在此前提下,CMMI为企业的过程构建和改进提供了指导和框架作用;同时为企业评审自己的过程提供了可参照的行业基准。
CMMI的源模型:软件能力成熟度模型2.0版,C稿;电子行业协会临时标准(EIA/IS)731;集成产品开发能力成熟度模型(IPD- CMM)。
CMMI的原则:
1. 强调高层管理者的支持。过程改进往往也是由高层管理者认识和提出的,大力度的、一致的支持是过程改进的关键。
2. 仔细确定改进目标,首先应该对给定时间内的所能完成的改进目标进行正确的估计和定义并制定计划。选择能够达到的目标和能够看到对组织的效益。
3. 选择最佳实践,应该基于组织现有的软件活动和过程财富,参考其他标准模型,取其精华去其糟粕,得到新的实践活动模型。
4. 过程改进要与组织的商务目标一致,与发展战略紧密结合。
CMMI目标:
1. 为提高组织过程和管理产品开发、发布和维护能力的提供保障。
2. 帮助组织客观评价自身能力成熟度和过程域能力,为过程改进建立优先级以及执行过程改进。
CMMI的方法:
1 决定哪个CMMI模型等级最适合组织过程改进需要。
2 选择模型的表示法是连续式还是阶段式。
3 决定组织需要用到的模型中的知识领域。
4 类似CMM提出的过程改进6步,集成化过程改进分成:开始集成过程改进,建造集成改善平台,集成传统过程,启动新过程,进行改 进评估。
CMMI内容
CMMI内容分为"要求"、"期望"和"提供信息"三个级别,来衡量模型包括的质量重要性和作用。最重要的是"要求"级别,是模型和过程改进的基础。第二级别"期望"在过程改进中起到主要作用,但是某些情况不是必须的可能不会出现在成功的组织模型中。"提供的信息"构成了模型的主要部分,为过程改进提供了有用的指导,在许多情况下他们对需要和期望的构件做了进一步说明。
"要求"的模型构件是目标,代表了过程改进想要达到的最终状态,它的实现表示了项目和过程控制已经达到了某种水平。当一个目标对应一个关键过程域,就称为"特定目标";对应整个关键过程域就称为"公用目标"。整个CMMI模型包括了54个特定目标,每个关键过程域都对应了一到四个特定目标。每个目标的描述都是非常简捷的,为了充分理解要求的目标就是扩展"期望"的构件。
"期望"的构件是方法,代表了达到目标的实践手段和补充认识。每个方法都能映射到一个目标上,当一个方法对一个目标是唯一就是"特定方法";而能适用于所有目标时就是"公用方法"。CMMI模型包括了186个特定方法,每个目标有两到七个方法对应。
CMMI包括了10种"提供的信息":目的,概括和总结了关键过程域的特定目标;介绍说明,介绍关键过程域的范围、性质和实际方法和影响等特征;引用,关键过程域之间的指向是通过引用;名字,表示了关键过程域的构件;方法和目标关系,关键过程域中方法映射到目标的关系表;注释,注释关键过程域的其他模型构件的信息来源;典型工作产品集,定义关键过程域中执行方法时候产生的工作产品;子方法,通过方法活动的分解和详细描述;学科扩充,CMMI对应学科是独立的,这里提供了对应特定学科的扩展;公用方法的详细描述,关键过程域中公用方法应用实践的详细描述。
CMMI提供了阶段式和连续式两种表示方法,但是这两种表示法在逻辑上是等价的。我们熟悉的SW-CMM软件能力成熟模型就是阶段式的模型,SE-CMM系统工程模型是连续式模型,而IPD-CMM集成产品开发模型结合了阶段式和连续式两者的特点。
阶段式方法将模型表示为一系列"成熟度等级"阶段,每个阶段都有一组KPA指出一个组织应集中于何处以改善其组织过程,每个KPA用满足其目标的方法来描述,过程改进通过在一个特定的成熟度等级中满足所有KPA的目标而实现的。
连续式模型没有像阶段式那样的分散阶段,模型的KPA中的方法是当KPA的外部形式,并可应用于所有的KAP中,通过实现公用方法来改进过程。它不专门指出目标,而是强调方法。组织可以根据自身情况适当裁剪连续模型并以确定的KPA为改进目标。
两种表示法的差异反应了为每个能力和成熟度等级描述过程而使用的方法,他们虽然描述的机制可能不同,但是两种表示方法通过采用公用的目标和方法作为需要的和期望的模型元素,而达到了相同的改善目的。
======================================================================
CMMI 模型的前身是 SW-CMM 和 SE-CMM,前者就是我们指的CMM。CMMI与SW-CMM的主要区别就是覆盖了许多领域;到目前为止包括四个下面领域:
1.软件工程(SW-CMM)
软件工程的对象是软件系统的开发活动,要求实现软件开发、运行、维护活动系统化、制度化、量化。
2.系统工程(SE-CMM)
系统工程的对象是全套系统的开发活动,可能包括也可能不包括软件。系统工程的核心是将客户的需求、期望和约束条件转化为产品解决方案,并对解决方案的实现提供全程的支持。
3.集成的产品和过程开发(IPPD-CMM)
集成的产品和过程开发是指在产品生命周期中,通过所有相关人员的通力合作,采用系统化的进程来更好地满足客户的需求、期望和要求。如果项目或企业选择IPPD进程,则需要选用模型中所有与IPPD相关的实践。
4.采购(SS-CMM)
采购的内容适用于那些供应商的行为对项目的成功与否起到关键作用的项目。主要内容包括:识别并评价产品的潜在来源、确定需要采购的产品的目标供应商、监控并分析供应商的实施过程、评价供应商提供的工作产品以及对供应协议和供应关系进行适当的调整。
在以上模块中,企业可以选择软件工程,或系统工程,也可以都选择。集成的产品和过程开发和采购主要是配合软件工程和系统工程的内容使用。例如,纯软件企业可以选择CMMI中的软件工程的内容;设备制造企业可以选择系统工程和采购;集成的企业可以选择软件工程、系统工程和集成的产品和过程开发。CMMI中的大部分内容是适用各不同领域的,但是实施中会有显着的差别,因此模型中提供了"不同领域应用详解"。
CMM的基于活动的度量方法和瀑布过程的有次序的、基于活动的管理规范有非常密切的联系,更适合瀑布型的开发过程。而CMMI相对CMM更一步支持迭代开发过程和经济动机推动组织采用基于结果的方法:开发业务案例、构想和原型方案;细化后纳入基线结构、可用发布,最后定为现场版本的发布。虽然CMMI保留了基于活动的方法,它的确集成了软件产业内很多现代的最好的实践,因此它很大程度上淡化了和瀑布思想的联系。
在 CMMI 模型中在保留了CMM阶段式模式的基础上,出现了连续式模型,这样可以帮助一个组织以及这个组织的客户更加客观和全面的了解它的过程成熟度。同时,连续模型的采用可以给一个组织在进行过程改进的时候带来更大的自主性,不用再像CMM 中 一样,受到等级的严格限制。这种改进的好处是灵活性和客观性强,弱点在于由于缺乏指导,一个组织可能缺乏对关键过程域之间依赖关系的正确理解而片面的实施过程,造成一些过程成为空中楼阁,缺少其他过程的支撑。两种表现方式(连续的和阶段的)从他们所涵盖的过程区域上来说并没有不同,不同的是过程区域的组织方式以及对成熟度(能力)级别的判断方式。
CMMI 模型中比 CMM 进一步强化了对需求的重视。在 CMM 中,关于需求只有需求管理这一个关键过程域,也就是说,强调对有质量的需求进行管理,而如何获取需求则没有提出明确的要求。在CMMI的阶段模型中,3 级有一个独立的关键过程域叫做需求开发,提出了对如何获取优秀的需求的要求和方法。CMMI 模型对工程活动进行了一定的强化。在CMM中,只有3级中的软件产品工程和同行评审两个关键过程域是与工程过程密切相关的,而在CMMI中,则将需求开发,验证,确认,技术解决方案,产品集成这些工程过程活动都作为单独的关键过程域进行了要求,从而在实践上提出了对工程的更高要求和更具体的指导。CMMI中还强调了风险管理。不像在CMM 中把风险的管理分散在项目计划和项目跟踪与监控中进行要求,CMMI3级里单独提出了一个独立的关键过程域叫做风险管理。
❼ 程序员如何摆脱“码农”的称谓
首先,程序员和这些民工、矿工一样,都是使用非常简单的工具,典型的就是vim/emacs加make,典型的活动就是使用这些工具一个字符一个字符地敲代码,这和使用榔头的农民没有本质的区别。要摆脱码农的命运,就需要使用更加先进的工具,比如DSM(Domain Specific Modeling,这里有一篇中文的简介 ),使用模型(领域知识)构建产品。 其次,程序员的产品一般都是一个萝卜一个坑,为一个产品写的代码下一次还需要再写一次,也就是同样的价值需要差不多同样工作量的重复劳动才可以创造,有人据此称软件开发为一个劳动密集型的产业。其实程序员在一个产品开发过程中,创造的财富不仅仅是代码,还包括领域知识、需求工程、架构、设计决定、文档(有兴趣的可以看一下,SEI的 发掘现有产品中的财富 ),可以说在软件开发的整个生命周期中,程序员的劳动成果都是宝贵的财富。就我个人的工作经验来说,一个月用于编写代码的时间不会超过25%,所以带着重用的思想做每一件事情就显得非常的重要。 第三,如果我们比较一个工人和农民的区别,就会发现,有形形色色的工人(环卫工人、机械工人、纺织工人等数百个工种),但是农民只有非常有限的几种(粮农,菜农,花农,还有吗?)。从分工的力度和专业化的程度来看,写代码的都叫程序员,程序员也是什么都干,写脚本、装机器、写代码、写文档、做测试。套用某培训机构的广告语只有正规,才有机会!,只有分工明确、专业化程度增加,程序员才能从民工跨越到工人。 顺着工人这条路子,我们就走进了软件工厂 。软件工厂的概念其实很简单,为了更加的专业化,它把软件工程分成了两部分,领域工程和应用工程。领域工程根据领域支持提取公共的知识,构建可以重用、定制的软件资产;应用工程使用这些资产为客户定制出产品。领域工作者就可以根据领域通用规则、知识、需求进行工作,当然还是要把应用程序的需要放在比较重要的位置,程序员在这里可以发展成为领域分析专家,企业在这里就类似于零件提供商。应用工作者可以专注于客户商业需求分析和产品构建,程序员在这里可以发展成一个产品专家,企业在这里就类似于产品装配商。 从个人的角度来讲,软件工厂并不意味着程序员从一个码农成为一个组件生产员或者一个组件装配工,那些还是重复劳动,每个领域都有产业链的上游,还是要有意识、有计划地力争上游。
❽ 为什么会有这么多调侃“程序员”这一职业的段子呢
因为网络都是程序员搞出来的,所以程序员是最早接触网络的人群,在自家的后花园里开点小玩笑,挨着你了。
❾ 什么是程序员什么是代码
程序员所写的代码,是为某一特定程序或某一个应用程序所制定的编码和内部测试的组织实施,使此应用或程序应能够在程序员编写的代码中,实现各种功能。程序员(英文Programmer)是从事程序开发、程序维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、中级程序员、高级程序员(现为软件设计师)、系统分析员,系统架构师,测试工程师六大类。代码又臭又长
我见过最长的方法是5000多行,那段代码没人敢动,只敢往下加 if else,每次需要改这段代码的开发都战战兢兢,生怕出现什么莫名其妙的bug。java 可是一门面向对象的语言,一个方法里面有5000多行可以说是很可恶的事情了。我想一开始代码长度可能没这么夸张,是什么导致这种结果的?一个是当初写这段代码的人本身写的是直来直去的方法,一堆if else ;后面迭代的开发,面对这么长的代码瞬间失去了从头读到尾的耐心,直接继续在后面加 if else 迭代,最后这个方法就变成了一个缝合怪一样的玩意。
好的 sql 可以很大程度上简化代码的复杂程度,但是太过复杂sql 本身就会给后来的开发人员造成阅读困难,结果又是变成一条无人敢动的祖传代码,我想这应该是不少公司极度抵制存储过程的原因之一。当然不少银行应用开发还是大量使用存储过程,存储过程有用武之地的,但是一个又臭又长的存储过程就等着变成祖传代码吧。当年我见到一个60多个join的sql,看到第一眼就惊为天人从此难以忘怀,当然那段sql也成了没人敢去动的代码了。
代码逻辑不明
代码逻辑不明所以是我们开发很容易去犯的毛病,是一个不致命却烦人的毛病。在代码上的体现是,逻辑判断写的比较反人类各种双重否定是肯定,不把你绕晕不罢休。或者是写起代码来东一榔头西一棒槌,让人不知道你想干嘛。导致这个的原因有可能是开发人员在需求理解上出现偏差,做到后面发现不对劲,再回去改又不大可能了,只能硬着头皮往下写,结果就是代码弯弯绕绕;还有很重要的锅是在产品经理,任意变更需求,想一出是一出,开发人员无奈只能跟着想一出写一出。还用可能是开发人员方法或者类命名太艺术了,什么四川方言拼音这种没有十年脑血栓想不出的命名咱就不说了。就说那种国产凌凌漆式的无厘头命名——这看上去是个刮胡刀实际上是个吹风机,就这种不知道让人说什么好。
规划代码的核心思想
吐槽了一堆代码规范问题,接下来我们说说如何去规范我们的代码以及如何做到就算开发人员更换了,或者项目转手给他人了,仍然可以让后面的开发可以无碍的去阅读代码修改代码。当然各个公司/团队都有自己的一套代码规范,比如项目的结构、代码命名风格、代码格式等等。不同团队有不同的风格,但核心思想是大同小异的。接下来我就我个人的开发经验来分享一下一些代码规范的思想。
❿ 普通的程序员和大神级的程序员有什么区别
你好,普通程序员只能做一些重复简单的事情,大神级程序员可以解决普通程序员解决不了的难题,还可以给普通程序员建框架。