导航:首页 > 程序命令 > 创意项目程序员

创意项目程序员

发布时间:2022-05-14 06:00:41

程序员该如何创业

团队很重要,先成立一个团队..有激情,然后就详细的创业计划,分步实施.

Ⅱ 程序员工作到底能干多久程序员的前途如何

千千万万的程序员们一直困惑程序员的前途如何、程序员工作到底能干多久的问题。目前比较普遍的认识,程序员的职业通道有两条进阶路线。一条 是技术路线,即由程序员、高级程序员、系统分析师,到架构设计师。在这条路线上,立足于从业务模型到计算机软件模型的转换,成为高端的软件技术工作者。另 一条是管理路线,即由程序员,经开发小组负责人、项目经理,再到企业中高层管理者。程序员加强自己管理意识的培养,多站在组织的角度来分析问题和解决问 题,成为优秀的管理者,甚至职业经理人。 近年来,产品管理成为企业多产品经营形势下一个越来越受重视的管理课题。特别是知识经济环境下,诸如互联网与软件、创意、传媒等现代新型产业链中, 其几乎可以忽略不计的复制成本,有竞争力的产品与优秀的产品管理成为了制胜的关键。基于产品的商业化运营,在越来越具聚合效应的网络时代,扁平经营、草根 聚合、精准营销、直通车服务等全新的经营环境常常造就了赢者通吃的局面,以产品为中心的企业管理逐渐形成独立的产品管理体系,被众多企业所关注和采用。 在软件企业中,随着产品管理的兴起,可以说,走向产品,是程序员在技术与管理之外的第三条职业通道。越来越多的程序员开始转型做产品工作,特别是对 那些具有创业意识的程序员而言,走向产品是一条必经之路。腾讯的马化腾和360的周鸿祎,他们都是由程序员做起,然后开创自已的产品和事业。 产品管理的兴起,产生了以产品经理为中心的产品工作职业方向。产品职业方向可以从产品系列的职务与岗位两个维度来观察。职务上,有首席产品官 (CPO)、产品总监、产品经理、产品专员、产品助理,其中尤以产品经理一职最为中心;岗位上,有产品竞争分析与用户需求管理、产品创意与策划、产品原型 设计、产品运营规划、产品实现过程跟踪、产品商品化实施、产品运营、产品经营成果分析与跟踪、产品升级维护管理、产品管理体系与制度建设、产品人员技能培 养等。这些基于产品而设计的岗位以有效满足用户需求为中心,它不同于其它以专业技术和职能效率为中心的因职能分工而产生的岗位。 产品管理是近些年随着IT和互联网的快速兴起而被各企业所重视,而现在的各大院校并没有产品管理相关的专业,各类培训机构也少有类似培训课程,从事 产品工作的人员大多是从不同专业、不同岗位转型过来的。相比较而言,程序员有着营销、测试、客服等岗位走向产品的人员所难以比拟的优势。有些公司甚至做出 了规定,欲从事产品工作,必须要有多年的软件开发经验。程序员转型从事产品工作所具有的独特优势主要包括以下几点: 第一,程序员能够更好地理解产品的实现方案,所策划的产品更具可行性。做产品策划工作,也许缺的不是点子或创意,而是有效可行的方案。多年的程序员 工作经验,对软件技术和软件实现方案的判断,可以规避那些天马行空的产品想法,工作更有成效。比如在整理用户需求时,程序员的前期有效判断和可行性辨别, 会大大提高产品的策划质量与速度。程序员出身的产品人员可以和研发人员进行无隙的沟通,用更便于研发人员理解的语言和思路来进行产品方案的解读和跟进。 第二,程序员的软件开发工作,与其说是代码的编写,不如说是逻辑语句的组织。程序员一般都具备严密的逻辑思维能力,这是进行纷繁而杂乱的需求分析和 产品概念设计必备的优势,更有利于从中分门别类理清脉络关系,转换为产品功能规划,把产品做成精品。例如需要往U盘写文件,产品人员可能只想到正常的操作 逻辑,但程序员可能会想到更多异常情况,如:U盘损坏、传输过程中拔出、断电、传输的文件损坏、U盘写保护、重复文件、焦点位置、空间不足等等。再有,好 的用户体验的产品,在本质上,就是产品功能的逻辑展示,或者说用户操作的逻辑引导。 第三,程序员往系统分析的技术方向发展,从本质上来说,同往产品策划方向发展是相通的,都需要对真实世界本质关系有着充分的理解与把握。能够走向系 统分析员的优秀程序员,完全有可能成为一个优秀的产品策划人员。差别在于系统分析员的工作成果是面向程序员、面向计算机,而产品策划是面向用户、面向市 场。每一名程序员也必定是某个软件产品开发工具的使用者,有深厚的软件产品使用体验,具有从用户出发来表述问题的基础。 第四,程序员一般都具有快速学习能力,保持对计算机相关行业动态和技术革新的观察与思考,这在一定程度上会培养对行业与技术的洞察力。产品策划和设 计工作,最后能否获得市场的成功,考验的正是这种洞察力。因为产品工作是时时围绕解决的是什么人的什么问题来开展,也就是始终围绕做正确的事。只 有对行业与技术有洞察力的人,才能够站在用户需求的角度来理解与体验,激发创意,做出好产品来。 当然,程序员虽具备上述独特优势,并不等于程序员转做产品工作,就一定能够成功。要策划出好的产品,要成为一名优秀的产品经理,他们也面临着各种挑战: 第一,创新和结构化思维的冲突。 结构化思维可以说是程序员的典型标志,这种思维模式对于把一件事情做好是很重要的,但它往往也会是创新思维的天敌。创新却是产品工作的灵魂,程序员需要不断打破常规激发灵感才能做好产品工作,就必须克服已经形成的思维定势。 第二,团队协作与英雄主义的矛盾。 程序员往往习惯于单打独斗的工作方式,崇尚技术牛人,缺少团队协作意识和与人沟通的技能。产品工作则需要大量的沟通协调,甚至组织领导工作,强调的是团队作战。在合作精神方面,想要转向产品工作的程序员的确亟待加强。 第三,商业意识和市场运营知识匮乏。 特别是在全面产品管理思想下,产品人员需要有很强的市场营销方面的知识和商业化运作的策划与分析能力,仅仅把产 品做出来是不够的,卖得掉才是硬道理。产品策划的环节,面临着营销模式、目标用户、渠道选择、竞争策略等的选择与设计,这也是摆在技术出身的程序员面前的 重要课程。 每个企业,都会根据自身所在行业特点和本企业的资源优势,来部署不同形式的产品管理机制。程序员针对自己的性格特点和能力特征,抓住产品管理这一方兴未艾的职业机遇,走向产品,以优秀产品经理的能力模型培养来规划学习道路与职业生涯,是值得重视的一个职业方向。 ------------------------------------------------------------------------------ 安徽高新专修学院

Ⅲ 程序员可以通过什么方式赚钱

Google Adsense
利用Adsense可以将广告发布到你的网站上去,通过访客点击广告来赚取佣金。这似乎是一个很不错的主意,如果你有一个不错的创意,写一个网站对于程序员的你应该不难,网站放上Adsense广告,推广、引流、收美金。

02
Android App交易市场收入
首先,他的Android应用是免费的,他并不是靠卖App来赚钱,而是通过向App中投放广告来赚取佣金的。如果你对Android技术非常熟悉,或者你的工作就是做Android开发,那么为什么不自己开发一个应用放到Android市场,为自己创造另一份收入。

03
参加一些开发者大赛
这是一种最实在的方法了,拿奖金,只赚不赔,不过前提是你得有足够的实力。他参加过Google的Android开发者大赛,很得瑟的跟我们说那时候他赢得了2000美金,尽管不是很多,但从中也可以学到不少知识,至少,通过学习,他可以自己开发Android应用来赚取广告费了。

04
承接一些项目
当然这要花费你很大一部分时间,承接时你要考虑时间成本,至少这些时间要和你的工资相当。个人不怎么推荐这种方法,有时候周期会很长,很容易丧失积极性,不过也算是一种方法

05
刷机、越狱
现在都是智能手机,有些用久了,卡了,像电脑一样要重装系统,一些小白有教程都搞不定,这时候你可以借此开展刷机业务。还有iOS的越狱,这个需要你对iOS的操作非常熟悉。你可以将此业务挂到淘宝上,帮助买家实现他们要的功能。

06
做黑客
黑入银行,盗取前女友现任老公的所有钱,哈哈,开玩笑了。不过,做一名优秀的计算机黑客确实可以帮你赚取很大一笔收入,比如帮助一些企业提高计算机网络的安全性、做一些抵御攻击的积极措施等。

07
写评测
DevStore专门收集各种开发者评测,开发者花几个小时测试下,如果文笔好的话可以大赚一笔,一篇评测600以上吧。

08
兼职论坛大神
各种开发者论坛会专门聘请一些大神,专门回复论坛各种小白问题,提高论坛的专业度。

09
做网站、博客
没事写个博客,整个论坛,招几个编辑帮你维护着。平时在编程过程中有什么心得感悟什么的都写下来,不知不觉网站流量就上来了,你就可以收广告钱了。

Ⅳ 【创业点子】 我们是几个程序员组成的小团队,想开发一个创意类的软件,怕被大公司剽窃抄袭,怎么办程

卖给他们,再经营,庞大了,再跳出来

Ⅳ 程序员要具备什么技能

一名合格的程序员需要掌握哪些技能呢?

熟练掌握开发工具

做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVA One很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。

熟知数据库

为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。

对操作系统有一定的了解

当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。

懂得网络协议TCP/IP

在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。

明白DCOM/CORBA/XML/WEB Services存在的意义

随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。

不要将软件工程与CMM分开

现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。

拥有强烈的好奇心

什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。

Ⅵ 如何成为优秀的程序员

首先是 来自自身内部的创造性的一面
虽然你可以从别人那里学到很多东西,也可以已有的东西中得到灵感。但真正的创意灵感来自于你自己。例如乔布斯,他不是一名工程师,也不是程序员,但他很有创意,他推动苹果公司创造了iOS,Siri。
或许你想问编程需要什么创意?任何人都可以在线或离线学习一些课程,阅读一些书籍就可以开始写代码了。但这些东西都是别人灌输给你的,你需要有自己的一些想法和创意,想出自己的框架。例如Dennis Ritchie,他就创造性地编写了C编程语言,而且目前这是使用最广泛的语言。
它像任何口语一样,每个人都知道一些语言,但不是每个人都是一个诗人或一个作家。你需要创造性的技能才能被称为伟大的诗人或作家。
其次是技术方面
你需要从一些编程语言开始。过去很多人开始是以C语言开始编写程序。然后很多人开始使用BASIC。现在人们从Python或PHP开始。其实从什么语言开始不重要。重要的是一旦你掌握了这些概念,你就可以编写算法并绘制流程图。
总的说来,如果你花太多时间做下面的事情,它可能会提高你的技能一点点,但你永远不会是一个好的程序员:
只知道看书的程序员用永远不会成为一个好程序员。俗话说All read and no practice makes Jack a ll boy,古人的话绝对是有道理的,不是说让你不要阅读,只是不要只有阅读,你应该通过应用你学到的东西来构建简单的应用程序。
通过记忆代码和算法。编程是思考而不是记忆。你可以拥有最好的记忆力,但是如果你没有自己思考,你永远不会是一个好的程序员。我们有计算机和互联网为我们记住事情,你不需要记住任何东西 , 你只需要了解在哪里以及如何找到你需要的信息。
通过编写你看的书中的单个函数和算法,即编写愚蠢的冒泡排序函数和类似的无用算法。
通过测试其他人的代码。例如是否使用测试软件或编写单元测试等
通过阅读和调试其他人的代码。这可能会在短期内有所帮助,但是只是在对方的代码写得很好的情况下,你可以从中学到别人的一些良好的习惯;但阅读不好的代码作为例子会教你养成不良的习惯,而且你或许一直会记得这个错误的习惯。从长远来看,花费太多时间阅读和调试其他人的代码将不利于你的成长。
让别人来管理你。编程就是为自己思考,你需要自己管理自己,也就是上面所说的,要有自己创造性的思考。
成为优秀的程序员最好的打开方式就是:
你必须自己完整的完成一个项目。不要过多地把重点放在阅读书籍,语法,算法和功能上,也就是说,在开始时不要太关注细节。你可以简单地坐下来思考一个你想为自己开发的应用程序/系统......如果实在需要的话,可以问你身边的同事/老师的想法,但是你必须有自己的思考并且自己独立去完成它。
一旦你想明白了,就把这个想法留在脑海,并且富有激情的去完成它,所有的一切都会慢慢地开始。你会想到你要实现的功能,你将开始研究如何实现这个或那个。
只有在这个时候,你才应该拿起一本书或在互联网上搜索关于如何实现这个你认为可以做的很酷的功能的答案。随着你的应用程序/系统的发展,你将会慢慢地开始考虑编写更简洁的代码,以便在将来也可以派上用场,让自己的工作更轻松。
只有通过把自己的想法带入生活,你才能学会如何成为一名优秀的程序员。你应该把自己看成是一个艺术家,而不是像编写代码的人那样去编译和运行。如果你只是在别人的代码上工作,或者只是阅读书籍等,你将很快失去动力,你永远不会发现或利用你的才华。

Ⅶ 在大家眼中,程序员是一个怎样的职业

程序员首先是雇员、然后是工程师;比起创造力,工程能力对这个职位更为重要

为什么有人在技术造神

大家应该已经感受到,技术圈这两年已经和娱乐圈创业圈差不多的氛围了,这其实是有原因的。

最主要的原因是,创业公司和创业媒体越来越多,他们需要大量的程序员投身到创业这个高风险的行业中,而造神,正是让程序员们自动跳进火坑的绝佳办法。不是说程序员不能创业,我是说,创业媒体们故意模糊了创造和创业的界限,把程序员们的创造冲动偷换概念,鼓吹了太多不适合的人去创业。

另一个原因是,招聘成本高涨,CTO 们为了能提升影响力,不得不频频出席各种大会刷脸。文笔好的再做做自媒体和技术社群,既能强化个人品牌提高身价,又能在融资的时候提升成功率。

总之,这个行业出现了各种技术大神。

这些大神在普通人类和初级程序员眼里是无所不能的,是他们向往的目标;在中级程序员和高级程序员眼里,这些大神就是他自己,只不过他还没红起来而已…

于是攀比心理也开始泛滥,全国第三的架构师比比皆是,整个圈子渐渐就浮躁起来。

然而绝大部分程序员,依然是雇员

媒体们在包装时,最喜欢按独立开发者的路线来整。“从小就对技术有天分”、“大学时曾在某编程大赛一鸣惊人”、“写了个 APP 玩结果一个月有了千万用户”、“从公司离职自立门户三年上市”。

OK,这的确是程序员的一条职业路线图。但是媒体们不愿意告诉你的是,一:只有极少数程序员是通过这个路线成功的;二:这条线其实需要太多非程序员职位的技能,比如产品设计能力和销售能力。


程序员的价值决定

绝大部分互联网公司的程序员职位,没有技术门槛

然而不幸的是,绝大部分互联网公司都不是技术驱动的公司。真的就是鸟哥说的那样,绝大部分技术岗位,其实技术门槛都不高(门槛在工程上,后文细讲)。技术不过是这些公司的护航舰,而不是破冰船。

先别打我,冷静下来想想,到底有多少你会的那些技术,是你的同行们不会的呢?不多,对吧?

几年前亿级别的搜索还是问题,现在已经到处是通用解决方案了;几年前千万到亿级别的网站和 APP 解决方案还在大公司手里,现在各个架构大会都讲烂啦,而且其实都差不多;就连 DeepLearning,带 API 接口的框架也开始涌现,只需要把图片用 REST 传进去就能取到结果了。

很多事情,已经没有难度,只需要持续投入。是的,对绝大部分程序员来讲,他们不需要成为科学家,而需要成为工程师,成为从科学家手里接过火种,去燎原大地的人。

怎样才是一个好工程师

工程的本质不是创造,而是去风险化。

工程是关于如何低成本、高效率、按时按量完成既定任务的。所以判断一个工程师是否优秀,并不是他多有创意多有名气,而是看他有多稳,看他能多 GettingThingsDone,中文就是“靠谱”。

有时候一个好的解决方案,未必采用了最新的技术和框架,而是看上去朴实无华,功力都包涵在背后的细节里。就像顶尖高手打的斯洛克台球,每一杆都平淡无奇,只是因为上一杆的回球太到位。

有同学问,那我工程做的太好,岂不是没有机会遇到一些高难度挑战了么?放心,一般公司都雇佣了产品经理来帮你制造高危事件。

同样的,一个好的工程师,会选择最适合需求和团队的方案,考虑开发效率和系统效率的均衡,从而已达到最优效果;而不是整天和别人去争论什么语言最好、哪些框架过时了。

工程的另一个要求是进度控制和质量控制。

在项目立项之后动工之前,对要做的事项作出详尽的规划,对未来一到两周的工作给出细致的排期,这是进度控制的基础。

代码的及时入库与合并,自动化测试和每日构建,CodeReview 和文档编写,这些看似无关紧要的习惯则决定了项目质量。

不幸的是,很多程序员把这些工程上至关重要的东西当成垃圾,视为对他们“创造力”的压抑。

他们总是以创造力为借口去寻求自身的自在,比如上班不带胸牌不打卡,中午休息时间在公司看视频打游戏,最好可以远程上班,项目到期之前再来检查进度,公司不要用统一框架,只有傻逼才写文档。

对职业的理解偏差和工程能力上的荒芜,培养了大批能写代码但死活写不好代码的“码农”,反而让那些有着彪悍工程能力和良好习惯的程序员变得奇货可居。

最后,来说说程序员那无处安放的创造力

有了锤子想找钉子是很正常的原始冲动,但我们必须认识到,创造力对于程序员这个职业来讲,是锦上添花的东西。如果你没有强大的工程能力,那么创造力也不过是无本之木。所以扎扎实实的把工程基础打好,这是最根本的。

在此基础上,我比较推荐程序员采用内外两条线来培养自己。在公司内的项目上采取相对保守的策略,尽力把稳定性做到最好,培养出自己卓越的工程能力;然后在公司外的开源项目和自己的独立项目上,采用一些新的技术、实践一些新的想法、充分发挥自己的创造力,梦想还是要有的,对吧。

这样做最明显的好处是,你可以了解到新技术和激进方案的优缺点,从而在进行方案选型时,有更多的依据;还有一个职业发展上的好处:如果不是主负责人,公司的项目往往不能代表你的能力;但独立项目却可以作为一个非常好的能力证明出现在你的简历里边。

你可以是一个身怀绝技的手艺人,在自己家里你尝试各种手法各种风格的个人作品;但当你参与颐和园这种级别的工程时,好好的把自己负责的石头雕成总设计师要求的样子就好 —— 毕竟这个时代一个人已经很难负责整个项目了。这就是我所理解的程序员的工匠精神。

Ⅷ 程序员工作到底能干多久程序员的前途如何

千千万万的程序员们一直困惑“程序员的前途如何”、“程序员工作到底能干多久”的问题。目前比较普遍的认识,程序员的职业通道有两条进阶路线。一条 是技术路线,即由程序员、高级程序员、系统分析师,到架构设计师。在这条路线上,立足于从业务模型到计算机软件模型的转换,成为高端的软件技术工作者。另 一条是管理路线,即由程序员,经开发小组负责人、项目经理,再到企业中高层管理者。程序员加强自己管理意识的培养,多站在组织的角度来分析问题和解决问 题,成为优秀的管理者,甚至职业经理人。近年来,产品管理成为企业多产品经营形势下一个越来越受重视的管理课题。特别是知识经济环境下,诸如互联网与软件、创意、传媒等现代新型产业链中, 其几乎可以忽略不计的复制成本,有竞争力的产品与优秀的产品管理成为了制胜的关键。基于产品的商业化运营,在越来越具聚合效应的网络时代,扁平经营、草根 聚合、精准营销、直通车服务等全新的经营环境常常造就了赢者通吃的局面,以产品为中心的企业管理逐渐形成独立的产品管理体系,被众多企业所关注和采用。在软件企业中,随着产品管理的兴起,可以说,走向产品,是程序员在技术与管理之外的第三条职业通道。越来越多的程序员开始转型做产品工作,特别是对 那些具有创业意识的程序员而言,走向产品是一条必经之路。腾讯的马化腾和360的周鸿祎,他们都是由程序员做起,然后开创自已的产品和事业。产品管理的兴起,产生了以产品经理为中心的产品工作职业方向。产品职业方向可以从产品系列的职务与岗位两个维度来观察。职务上,有首席产品官 (CPO)、产品总监、产品经理、产品专员、产品助理,其中尤以产品经理一职最为中心;岗位上,有产品竞争分析与用户需求管理、产品创意与策划、产品原型 设计、产品运营规划、产品实现过程跟踪、产品商品化实施、产品运营、产品经营成果分析与跟踪、产品升级维护管理、产品管理体系与制度建设、产品人员技能培 养等。这些基于产品而设计的岗位以有效满足用户需求为中心,它不同于其它以专业技术和职能效率为中心的因职能分工而产生的岗位。产品管理是近些年随着IT和互联网的快速兴起而被各企业所重视,而现在的各大院校并没有产品管理相关的专业,各类培训机构也少有类似培训课程,从事 产品工作的人员大多是从不同专业、不同岗位转型过来的。相比较而言,程序员有着营销、测试、客服等岗位走向产品的人员所难以比拟的优势。有些公司甚至做出 了规定,欲从事产品工作,必须要有多年的软件开发经验。程序员转型从事产品工作所具有的独特优势主要包括以下几点:第一,程序员能够更好地理解产品的实现方案,所策划的产品更具可行性。做产品策划工作,也许缺的不是点子或创意,而是有效可行的方案。多年的程序员 工作经验,对软件技术和软件实现方案的判断,可以规避那些天马行空的产品想法,工作更有成效。比如在整理用户需求时,程序员的前期有效判断和可行性辨别, 会大大提高产品的策划质量与速度。程序员出身的产品人员可以和研发人员进行无隙的沟通,用更便于研发人员理解的语言和思路来进行产品方案的解读和跟进。第二,程序员的软件开发工作,与其说是代码的编写,不如说是逻辑语句的组织。程序员一般都具备严密的逻辑思维能力,这是进行纷繁而杂乱的需求分析和 产品概念设计必备的优势,更有利于从中分门别类理清脉络关系,转换为产品功能规划,把产品做成精品。例如需要往U盘写文件,产品人员可能只想到正常的操作 逻辑,但程序员可能会想到更多异常情况,如:U盘损坏、传输过程中拔出、断电、传输的文件损坏、U盘写保护、重复文件、焦点位置、空间不足等等。再有,好 的用户体验的产品,在本质上,就是产品功能的逻辑展示,或者说用户操作的逻辑引导。第三,程序员往系统分析的技术方向发展,从本质上来说,同往产品策划方向发展是相通的,都需要对真实世界本质关系有着充分的理解与把握。能够走向系 统分析员的优秀程序员,完全有可能成为一个优秀的产品策划人员。差别在于系统分析员的工作成果是面向程序员、面向计算机,而产品策划是面向用户、面向市 场。每一名程序员也必定是某个软件产品开发工具的使用者,有深厚的软件产品使用体验,具有从用户出发来表述问题的基础。第四,程序员一般都具有快速学习能力,保持对计算机相关行业动态和技术革新的观察与思考,这在一定程度上会培养对行业与技术的洞察力。产品策划和设 计工作,最后能否获得市场的成功,考验的正是这种洞察力。因为产品工作是时时围绕“解决的是什么人的什么问题”来开展,也就是始终围绕“做正确的事”。只 有对行业与技术有洞察力的人,才能够站在用户需求的角度来理解与体验,激发创意,做出好产品来。当然,程序员虽具备上述独特优势,并不等于程序员转做产品工作,就一定能够成功。要策划出好的产品,要成为一名优秀的产品经理,他们也面临着各种挑战:第一,创新和结构化思维的冲突。结构化思维可以说是程序员的典型标志,这种思维模式对于把一件事情做好是很重要的,但它往往也会是创新思维的天敌。创新却是产品工作的灵魂,程序员需要不断打破常规激发灵感才能做好产品工作,就必须克服已经形成的思维定势。第二,团队协作与英雄主义的矛盾。程序员往往习惯于单打独斗的工作方式,崇尚技术牛人,缺少团队协作意识和与人沟通的技能。产品工作则需要大量的沟通协调,甚至组织领导工作,强调的是团队作战。在合作精神方面,想要转向产品工作的程序员的确亟待加强。第三,商业意识和市场运营知识匮乏。特别是在全面产品管理思想下,产品人员需要有很强的市场营销方面的知识和商业化运作的策划与分析能力,仅仅把产 品做出来是不够的,卖得掉才是硬道理。产品策划的环节,面临着营销模式、目标用户、渠道选择、竞争策略等的选择与设计,这也是摆在技术出身的程序员面前的 重要课程。每个企业,都会根据自身所在行业特点和本企业的资源优势,来部署不同形式的产品管理机制。程序员针对自己的性格特点和能力特征,抓住产品管理这一方兴未艾的职业机遇,走向产品,以优秀产品经理的能力模型培养来规划学习道路与职业生涯,是值得重视的一个职业方向。沈阳师范大学火热招生中!

Ⅸ 程序员提升开发技术需要注意哪些

一、不提升非技术技能
我们认为非技术技能是项目成功的主要因素。这些非技术技能也可以称之为“软技能”,总体上来说,它已经被公司证明为能够驾驭企业和客户之间的长期商业关系,因此也能决定公司的成长发展路径。一些关键的软技能指标包括:

a.纪律——这是最重要的特征之一,缺乏纪律,最终会让这个开发团队在开发能力上“缺乏自信”。解决这一问题的矫正方法就是每天制定详细的to-do清单:兑现你的承诺、完成你开始做的事情、避免多重任务,因为这些往往会让你的生活产生混乱。
b.顾客的声音——不把客户置于决策的核心地位只会跟你们业务的原始目的相冲突。如果客户不高兴,即使你拥有世界上一流的专业知识和资源也不会起什么作用。保持符合客户期望的解决方案、及时交付才能体现出项目的真正价值。
c.沟通——尤其是当客户和供应商并不在同一地点的时候,明确而及时的沟通是填补服务空白的极好措施。主要集中在这三个方面你就能克服问题——进行主题讨论、清晰表达、干脆简洁。
d.了解需求——在整个开发生命周期过程中,决定成功和失败的之间的一个至关重要的区别将会给人留下深刻的印象。通过最初的头脑风暴法了解问题状态,以及后续的交货程序,这其中都要和客户完美配合。只有这样,客户才会赞赏你的工作,给你好评。
二、对编码不理智
古人云:善泅者溺,善骑者堕。但估计绝大多数 的程序员都认为自己的编程技术绝对的牛。而同样真实的是,每一个代码,让不同的程序员去实现的话都会不可避免地发现它所存在的缺陷。所以说,只有通过在一 个项目上的合作,程序员之间必然有的摩擦才能证明谁是最好的。健康的竞争是好事,但它不应该成为一个本来可以成功的项目的负担。

另一个创意阻碍是无法将预定义的模板使用在对你有利的开发项目里。几乎所有的编程语言有一个很好的在线 /内置的代码片段存储库,可以修补代码,防止重新编程。然而,如果因为不理解需求或缺乏接触各种可用库/模板的话,这就意味着程序员最终会无意间将一开始 就创建的代码付之东流。这不仅增加了开发时间,也提高了总体成本。另外一点就是,发布了的代码已经经过了质量检测,所以只有将它用作模板才能发挥它更大的 价值。
三、不一定什么都要被理解
如果你是刚调到这个团队来的编程人员,对于手头的工作并不是很熟悉,那该怎么办?肯定是先看一些前任留下来的工作计划,要是他写的详细倒也没什么,如果写的不详细,估计会让你更加的挠头。
因此,推己及人,在需要交代的工作上,最好是把任务写的尽可能的详细。这么做也是非常现实的原因:能够把编程问题解决掉,最好是保证使用解释性的语言和英语发音来表示变量。一些基本的指针可以让你的程序更容易被理解,包括:
a.把所有参数、引用、方法和变量名称尽可能接近英语表达。保持文件名简短但有助于理解的功能。
b.使用++包装文字是一个好办法,能让代码和注释更加清晰。
c.将编写的程序保持在一个连续的流程上,尤其是在使用OOP基础上的语言:C#、C 和 C++。
d.对于不同的代码块使用不同的描述名称。
四、不使用经过验证的工具和技术
程序员的好坏从他使用的编程工具和调试工具上就能看出。在异常情况的跟踪上,下面就是程序员经常会出现的常见错误。
对一些可能会对其它代码有影响的常见案例进行捕捉,处理这些比较常见的异常情况(而不是特殊的异常)意味着无意中除除掉了会抑制整个程序的残留部分,因此并不会影响他人的代码。
也许程序员可能带有恶意的意图来捕捉所有的异常情况,但即使是捕捉到了也不实施采取措施,这就是常说的“虚假安全阀”,这种异常处理手段是对整个软件的稳定和安全的一种妥协方式。
五、较差的控制版本
在任何涉及多个团队的项目里,当谈到版本控制的时候不去介绍使用最佳实践都是一个十足的罪过。版本控制的目的是确保由一个人执行的编辑或修订不去影响另一个人的工作。
版本控制不仅有助于将由两个或两个以上的程序员的编辑工作合并到一起,还有助于跟踪程序的更改历史。所以说,任何开发团队都应该做一些好的改进措施以确保强大的版本控制,这其中就包括:
为每个解决方案创建一个“逻辑单元”
给解决方案制定描述性的名称
确保你所使用的都是最先进的文件
频繁的向团队分享你所做的各种改变
六、拥有最新信息的个人代表不了团队
这是相对有趣的一点,所有的商业产品都想要以自身的敏捷技术和产品文化来给客户留下深刻的印象,但是现 实中很少有厂商会花时间去磨练他们员工在介绍产品特点上的技能。许多公司只是简单地提供了一些基本的培训,并且抱希望与员工在真实的日常项目里学到更多的 技能。所以部门经理和项目的直接领导可以通过以下两个办法来提高员工的业绩:
一旦有新员工加入,就立刻强制安排他参加专业培训,让他知道他的角色是用来干什么的,尽早产生创造力。例如一个测试人与加入之后,就应该向他介绍编程的理念,之后将培训重点放到测试实践上,而不是继续阐述编程的重要性。
现阶段的技术的进化程度比以往任何时候都要快,,所以要记住,定期培训是必不可少的,这是在给团队创造价值。例如一个Web 设计师需要知道响应式设计,提供给设计师大量的用户日常使用的移动设备的不断扩张的样品,希望他们能获得灵感。
七、不恰当的测试
测试作为整个系统开发生命周期(Systems Development Life Cycle,简称SDLC)的重要一个要素,通常不需要开发团队给出太惊人的结果。但是如果在测试环节没有付出恰当的、相应的努力的话,这是说不过去的。 下面的一些方法或许对你的测试团队有用,至少在你们交付产品的时候能够给用户一个好的交代。
单元测试
实物模型
综合测试
八、注意安全漏洞
有的时候在软件开发过程中,就会遇见如下这样的安全漏洞:

A、不同组件之间意想不到的交互作用:a、输入不正确的验证信息;b、SQL资料隐码攻击;c、跨网站指令码;d、命令植入攻击;e、跨站请求伪造(CSRF);
B、难以实施的资源管理,包括:a、不尊重可用内存缓冲区;b、对外控制;c、使用有潜在危险的功能;
九、和客户交流
最初的合同签订后,开发公司通常会忘记每天与客户进行产品上的信息交互,以至于在交货的时候还需要进行升级。两大关键的交流点可以让你和客户保持更好的、更长的关系:
在客户开问之前,开发方应该和客户进行交流沟通。
和客户保持周期性的交流。
十、避免标准实践面临的迫在眉睫的最后期限
通 常情况下项目都会遇到进度延误的现象。然而,这不是说你有理由去偷工减料或者是在开发或测试阶段耍花招,未经测试的模块绝对是一个隐患,会让你的开发团队 名誉受损的。一个更好的方法来管理延迟是提前告知客户并且积极执行延迟计划。只要延期的理由是有效的,客户应该会理解,也会给你额外的时间来解决这个问 题。

Ⅹ 如何成为有思想、创新的程序员

写这篇文章也源于我和新员工的一些谈话心得,一些基础比较薄弱的技术人员,看起来有点像没有思想和灵魂的程序员。你可能也会觉得国内有很多小企业出来的人或者刚毕业的人,会的最多也是CRUD和拖拉控件。我也接触过一些技术人员,他们告诉我他们再也不想搞技术了,因为技术是在太无聊了,特别年纪稍大一点的,想的最多的就是转行。曾经我非常惊讶于这样的状况,事实上,写程序是一件很有创造力的事情,但为何很多人都会觉得无聊呢。 随着年纪的增长,这些问题的答案慢慢变得清晰一些。在这里,我不敢说,我说的都是正确的,我只是在一直不停的探索。在探索之后,我对我的新员工说了以下的话:“进入我们公司,虽然我们也是很不起眼的刚创业的小公司,但是,你在这里需要做一些改变了。我知道你们以前的工作性质可能是上司给你交代任务,告诉你怎么做,然后你管也不管就照章办事,拉拉控件,以完成项目功能为首要任务。在我们这里,你需要成为一个有思想的程序员。有思想的程序员需要懂得如何使用聪明的脑袋瓜。事实上,很多人都不知道我们的脑袋瓜到底能做多少事情,不过,一旦你尝试了,你就会体会到‘不是做不到,而是想不到’。需要记住这些话,从思想上改变,从今天开始。首先,我们是做软件产品的公司,质量是产品生存的首要标准,产品质量的最低要求就是易用性;其次,我们要保证产品的质量,代码的质量首先要过关,标准编码方式、异常处理方式、代码的生命周期管理、编码的完整性都需要兼顾;第三,避免写一些垃圾代码和重复的代码,这需要动用你聪明的脑袋,我曾经写了10几个的CRUD产品,从而自主创新了控件关系映射、对象-对象映射、通用窗体框架,乃至我们现在的OSGi.NET产品和云计算SaaS商店平台,都是从这些重复的劳作中不断思索发明的。我看到设计模式的书时,可以骄傲的向同学们吹牛,我也设计过几个‘模式’;第四,学会发现问题,探索问题,积极询问,避免把问题遗留下来或者拖机取巧。浪费一个发现问题和解决问题的机会,相当于浪费提高自己的机会。最后,你要有信心成为一流有思想和灵魂的技术人员,别哪一天你离开尤埃时,丢我们的脸,:)。” 我不敢说,我现在多有思想,但是,我隐隐约约感觉到一些这样的有意思的东西。我崇拜“道法自然”,它告诉我违反规律就会受到惩罚,因此,我会时刻反省我是否有做错的事情,包括在平时编码、设计和架构的时候,以及平时生活上的为人处事。接下来,我介绍一下,我如何来发明我曾经的产品,希望能够给人一些启发。 1 我是如何发明了控件关系映射组件 控件关系映射的发明源自于我在参与一款MIS系统的设计,该系统是一个钢管管理系统,每一个钢管的信息有很多很多的属性,我记得钢管厂给我们的数据说明书里面,一个管子的信息有惊人的380多列。因此,我们在查询、修改、添加记录的时候,总是会有类似以下成片成片的代码。1 var add***Sql = "insert into Test(a1,a2,....aN) values(@a1,@a2,....@aN)";2 ...... 3 var para1 = new SqlParameter("@a1", SqlDbType.String, a1.Text.Trim(); 6 var paraN = new SqlParameter("@aN", SqlDbType.String, a1.Text.Trim(); (忽略中间的N-3行代码,以及查询、修改和删除的代码)我记得,我们一起做的另一个小伙拿了一个CRUD一千多个字段的表来向我们显耀说:“我他妈的把这功能实现了!”。我不知道大家是否反感这样的代码,反正我是厌倦了。当我想到这是一件很痛苦的事情的时候,我考虑了如何来解决它。经过一些思考,我惊讶的发现,所有的CRUD以及界面的流程都可以抽象为“输入-处理-输出-输入-处理-输出......”的过程,处理的过程实际上是获取输入,然后组装成SQL语句,最后在响应到界面。这个过程是以SQL语句为中心,SQL语句的参数来源于界面的控件或者界面类的其它成员,SQL语句执行的结果可能是跑到另一个页面、执行DataGrid绑定、执行下拉列表绑定、给控件赋值。因此,我想到一个方法,可以设计一个SQL映射的配置,即利用这个配置,直接将界面控件映射到数据库,并且也可以执行反向映射。以下是映射SQL的配置。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 以下是调用映射SQL语句实现CRUD中的一个操作。 1 namespace HumanDispSolution2 {3 public class login : CrmPage4 {5 private void btnLogin_Click(object sender, System.EventArgs e)6 {7 DataSet ds = this.ExecuteMapping("Login") as DataSet; 8 if(ds.Tables[0].Rows.Count > 0) //登入 9 { 10 System.Web.Security.FormsAuthentication.RedirectFromLoginPage(UID.Text,false);11 }12 else13 this.lAlert.Text = "alert('登录失败,请重新输入帐户信息!');";14 }15 }16 } 另外,我还编写了一个工具来自动生成这样的配置文件,从此以后,关于数据库的CRUD,我爽了!! 2 我是如何发明了通用窗体框架 控件关系映射的发明也是源于上面提到的钢管系统。当超过2个人一起参与一个复杂项目时,可能他们都需要操作主界面,在主界面加上各自模块需要的菜单、需要的界面元素,此外两个人设计的东西也完全不一致。这就造成一些问题了,因为如何实现两个人的集成就有一些麻烦,而且经常出现意外。于是我就发明了一个通用窗体框架,这个框架提供了以下功能:(1)集成用户权限;(2)集成数据访问;(3)插件式支持,每一个人都可以并行开发,集成时仅需要将配置文件集成一起就形成一个组装起来的软件了。 每一个开发人员只需要编写类似以下的配置文件就可以集成了: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 3 我是如何设计了对象-对象关系映射 ORM对于一些小型应用感觉有点庞大,但是对于大型应用,我想是一个比较总要的组件了。在我们使用ORM组件时,也经常会写以下代码。1 var user = new User(); 2 user.Name = NameTextBox.Text.Trim(); 5 OrmFactory.Save(user); 6 ----------------------------------------------7 var user = OrmFactory.QueryScalar(...); 8 NameTextBox.Text = user.Name; 9 ...... 如果一个MIS系统充斥了大量这样的代码,估计你也会腻味,从而丧失对编程的兴趣了。记得我刚才说什么来了,“有问题,意味着升华”,“做一个有思想的程序员”。因此,接下来的问题就是,我们如何来解决类似这样重复的劳动。我在2006年时想到的办法就是实现一个对象-对象的映射。首先,设计如下实体类: 1 public class UserEntity2 {3 ……4 [Member]5 public int Age; 6 [Control] 7 public string Name8 {9 get { return this._Name; } 10 set { this._Name = value; }11 }12 [Control("CardNo.Text")] 13 public string CardNo14 {15 get { return this._CardNo; } 16 set { this._CardNo = value; }17 }18 ……19 }20 21 public class EmployeeEntity22 {23 ……24 [Reference(typeof(UserEntity))] 25 public UserEntity User26 {27 get { return this._User; } 28 set { this._User = value; }29 }30 [Control] 31 public float PostSalary32 {33 get { return this._PostSalary; } 34 set { this._PostSalary = value; }35 }36 ……37 } 其次,调用ObjectEngine实现OO映射。A 实现表单类与实体类映射1 private void Map_Click(object sender, System.EventArgs e)2 {3 this.o = CZB.ObjectMapper.ObjectEngine.Map(this,typeof(EmployeeEntity)) as EmployeeEntity; 4 } B 实现实体类与表单类的映射1 private void InverseMap_Click(object sender, System.EventArgs e)2 {3 this.o.User.Name = "c.z.b in"; 4 this.o.User.Age = 19; 5 this.o.CompoInsurance = 0; 6 CZB.ObjectMapper.ObjectEngine.InverseMap(this,o); 7 } 4 我是如何设计OSGi.NET和SaaS商店产品 至于OSGi.NET和SaaS商店是我在不断思索通用窗体框架以及对现有科技的趋势的把握下,由几个很有创造力的编程人员,在建立了完善的产品保障体系下,构建起来的。这两个产品我会在后面介绍如何设计的。他们的设计我用了很长的时间。 我不是什么老鸟,希望我们在如此多的技术的世界中能够多多交流,共同进步。解决这些问题,不仅增加了编程的乐趣,更是增加了自己的见识,从而避免自己成为一个没有思想的程序员!我也知道,我们可以找到很多理由来反驳文中提到的做法和观点,但是,提高自己才是最重要的,不要去着急的否定一些什么,并给自己找借口。

阅读全文

与创意项目程序员相关的资料

热点内容
北美程序员vs国内程序员 浏览:181
php解析xml文档 浏览:121
石墨文档APP怎么横屏 浏览:185
墙主钢筋加密和非加密怎么看 浏览:144
金山区文件夹封套定制 浏览:708
soho程序员 浏览:672
java字节截取 浏览:525
php提交作业 浏览:815
房产还没解压可以办理赠予吗 浏览:224
java毫秒转分钟 浏览:753
模式识别中文pdf 浏览:774
c语言平均数字编译错误 浏览:170
单片机算交流 浏览:45
php自适应网站 浏览:467
2b2t服务器怎么获得权限 浏览:816
c语言javaphp 浏览:804
程序员技术不分高低吗 浏览:619
dos不是内部或外部命令 浏览:709
PC机与单片机通讯 浏览:675
二级加密图 浏览:113