自己关于所从事工作的一些看法,希望对你有用。
为什么要选择软件互联网行业
从宏观上来看,软件互联网工作者算得上是这个时代的弄潮儿,站在潮流的前沿,致力于为用户创造更加时尚便捷优质的生活。在当今这个移动互联网的浪潮之中,你可以感受到互联网正在改变人们的生活方式和思维方式,激发时代的变革,进而改变中国,改变世界。如今,一切传统行业如果不拥抱互联网,就将面临被时代浪潮淘汰的危机。拿金融银行业来说,阿里巴巴余额宝的面世为千千万万的拥有小额存款的打工一族及其他社会基层人民提供了一种可观的稳定可靠的且入门门槛较低的理财方法,给广大民众带来巨大福音,而余额宝也因此触动了传统银行界国有垄断者们的利益根基,虽然他们目前企图联合起来抵制这种互联网金融,但我相信他们这是逆流而行,终究挡不住互联网带来的金融变革!
在我看来,互联网巨头Google是这个时代最伟大的科技企业,他们的决策者正在带领员工用科技,用智能手机、Google Glass、无人驾驶汽车、热气球无线网络改变世界,改变生活。而在中国,阿里巴巴这样的互联网企业也都在努力探索改变和颠覆一切不尽人意的传统行业,使之更加亲民,更加具有用户体验性。总之,在互联网面前,一切传统事物都具有无限的想象空间。这大概也是互联网从业者比其他传统行业从业者更加容易创业的原因吧。
从微观来说,移动互联网时代真的是让人们的生活更加高效便捷甚至优雅,地图,叫车,付款,订票,吃喝,购物,社交这些事情因为智能手机和移动互联网而变得轻而易举,也使得世界近在咫尺。可以坦言,我个人现在的生活已经几乎离不开手机,离开将寸步难行,这或许从另一个方面来看也许有些悲哀,但你不得不承认移动互联网如今已经植根于我们的生活,从事移动互联网的建设会让人们的成就感如此真实贴近。当然,互联网工作者相对于其他行业从业者来说,也有普遍相对较为可观的收入。
互联网工作者不局限于程序员
不过有一点需要明确的是,互联网工作者不仅限于程序员,因为一个好的互联网产品绝不是单单由程序员创造的,它需要各种不同职能的人分工合作共同创造出来。
作为一个程序员,在我的日常工作中,接触比较频繁的角色通常分为以下几种:
1、PM
Product Manager,即产品经理的意思。这一类角色主要负责追踪和分析市场需求,从而提出并定义有价值的产品,进而推动这些产品的开发实现。他们需要具有敏锐的嗅觉和前卫的思维,他们可以不用写程序画界面,但需要懂技术,知道什么功能是可以实现的,什么功能难以实现。
2、RD
Research and Development engineer,研发工程师,也就是所谓的程序员,诸如PHP程序员,Java程序员或者C/C++程序员等等。从更为专业的角度区分,程序员分为客户端RD(包括windows RD,MAC RD,Android RD,IOS RD,WP RD等等)、服务器RD(也分为前端和后端,前端是后面要提到的FE,后端包括PHP Python C/C++等不同语种的RD)和系统嵌入式级RD(开发操作系统和嵌入式级别的软件——听起来功力更加深厚的人群)。总之,程序员致于力将PM提出的产品实现出来,并且具有合理的运行逻辑。
3、FE
Front-End Development,前端开发。实际上这类角色也是写代码,不过偏向JS、HTML、CSS这些决定网页布局展示的脚本代码。他们除了需要掌握这些脚本技术之外,也需要具有一定的美学和艺术功底。
4、UE
User Experience,即用户体验。他们负责产品的用户界面和交互逻辑的设计,为程序员们各种图片资源,而这些设计和资源基本决定了产品的美观程度和易用程度。
5、QA
Quality Assurance,测试工程师。他们负责对RD们实现的产品进行检验和评测,提BUG挑毛病。他们也属于技术类的角色,需要理解产品的实现原理和逻辑,并且会利用相关工具和技术(包括必要的程序语言,如各种脚本语言)来对RD的程序从功能、性能(内存、速度、效率等)等方面进行检验和评测。必要的条件下,他们需要阅读RD所写的代码,从而提出潜在的风险和问题。
6、OP
Operator,操作员,管理员。在我们这里他们主要负责服务器的管理和维护。RD开发出的服务器类程序最终会由他们布置并运行到线上机器,也就是服务器。他们也属于技术类角色,精通服务器操作的各种命令和工具。他们相对RD来说更加具有大局观念,因为他们管理的是大量由不同的RD实现的不同的服务。
- 1
- 2
程序员的工作生活状态
- 1
- 2
- 3
程序员也可以创造优雅的艺术
- 1
- 2
- 3
程序员是怎样练成的
- 1
- 2
- 3
- 4
- 5
- 6
一些针对性的建议
- 1
- 2
1、学习掌握C/C++程序语言。学习的方法不建议一味地看书,最好是多写些典型的小程序运行运行(教材上或者网上应该有很多,诸如链表算法之类的实现等),在实践中学习进步。相关书籍的话,基础语法书就好,C++ Primer(这种很厚的书一般我是看不进去的,都是拿来当字典一样查阅的,而不是当教材来学习)。
2、多进行工程实践,课程设计或者毕业设计这种系统级别的工程实践。最典型的就是用MFC图形界面(或者C#)和sql sever(或者My sql)实现一个图书馆管理系统,这里面就不单是程序语言的问题了,更重要的是架构规划和设计思想,包括数据库的设计、界面逻辑的设计、程序结构的设计。这里面就会涉及sql数据库,界面开发等不同的技术。这其中,安装数据库及开发工具并最终打通界面与数据库初步构建一个系统对于一个初学者来说是一个大的挑战,也是提升能力的关键。当然也可以做PHP网站项目,或者Andrdoid IOS等手机项目,这些应该比MFC项目更加有前途,图书馆里面或者网上应该可以找到很好的训练项目。这样的项目实践对提升程序员的技术能力和解决问题的能力有很大功效。
3、找实习,在企业里面亲身实践,努力提升。企业工作环境能够提供不同于学校的学习和进步的环境,尤其对于程序员来说更加不可或缺,实习的话就不要过多关注待遇,更多的要关注如何脚踏实地地干活,从而提升技术实践能力。我毕业前曾经在杭州一家做手机软件的企业实习过近一年,自认为提升非常大,如果没有那一年的实践经验我也基本不可能来到现在的单位。当然,实习单位也可以是就业的一个选择,如果合适的话,一般实习单位很容易接收在那里实习过的人的,毕竟培养一个员工并不是一件轻而易举的事情。
4、关于应聘求职。在我之前写的求职感悟之中也提到过,程序员求职笔试是一个门槛,你必须进行充分准备,只有通过了笔试你才能获得进一步的机会。另外受挫折是不可避免的,你需要不断地尝试,在各种笔试面试中积累经验,提高应聘技巧,以求能够抓住后面的机会。
关于书籍方面,如果针对提升求职技能的话,C++(JAVA)程序员面试宝典,C和指针这类专门应对应聘的书籍是很适用的。另外为了真正提升专业素养,也可以尝试一些层次较高的书籍,如设计模式、thinking in C++/java之类(我这里所列举的并不一定是最好的,也不是全面的,网上可能有更好更多的推荐)。
5、程序员的基本技能。一般情况下,一个合格的程序员除了需要掌握一门程序语言外,还需要了解和掌握数据结构及算法思想、操作系统原理、数据库原理、网络技术(TCP/IP)等等。这些都是程序员的基本技能,而加强这些技能的有效方法就是在简单学习理论知识的前提下通过工程项目实践来深入理解和运用。
至于半道出家或者非专业出身,我还是那个观点,项目实践是提升程序员技能的唯一有效途径,程序员招聘非常简单,就是看你会什么,做过什么,有潜力做什么。只要你实践足够多,经验足够丰富,不在乎你的出道时间和是否专业出身。我个人上大学以前,在电脑面前基本就是个白痴,大学时粗浅地学过C/C++,大二以后才有自己的电脑,后来修了个计算机双学位才有了一些基本的专业素养。不过提升最大的还是在自己做课程实践和毕业设计的过程中得到的。在我看来成为一个合格的程序员的门槛相对来说还是比较低的,稍微入门之后,课程设计这种级别的实践是的物质代价和时间代价都是比较低的,一台电脑,一本指导书,少则几周,多则上月就可以完成一次实践。对于培训的话,其实我也不是很了解,如果有助于你进行项目实践,那自然也是可以考虑的,如果纯粹像学校一样授课而不能推进实践,那么不去也罢,还不如自己利用这个时间自己亲自动手探索。
总之要想得到好的结果,关键还是靠自己的毅力和决心。
程序员的焦虑
- 1
- 2
1,健康问题
由于长期久坐,各种颈椎腰椎问题在程序员中普遍存在。同时久坐不运动引发的脂肪肝超标也非常常见。此外,长时间不间断劳作引发的身体突发异常情况的现象在程序员中时有发生。这些健康问题一直都在生理和心理上困扰着广大的程序员,而无法得到妥善解决。
2,生活问题
早出晚归的生活节奏,加班赶工的工作常态,使得程序员陪伴家人的时间和精力普遍减少。从某种程度上来说,程序员相对较优越的收入是以减损人性化生活为代价换取的。这也是许多程序员的痛处。
3,前途问题
必须承认,程序员这样的工作不能不说是靠吃青春饭维持的。在我们这样的单位,几乎很少看到四十岁以上的程序员,即使有,可能也不是写代码的角色了。上了年纪的程序员是无法适应需要快速学习频繁变更的工作任务的。一种通常的想法是,走管理路线。这当然是可行的,然而是不是任何程序员都适合走管理路线,或者有管理路线可以走呢——毕竟能够最终走到企业上层的人还是占少数比例,况且上层的岗位也是有限的。还有一种想法是,自己干,创业!无可否认,程序员创业的成本和门槛相对来说是非常之低的——几台电脑,一个可以上网的工作室,几个志同道合的人和一个美好的梦想,足矣!但非乐观主义者总是不难看到前路的障碍重重和成功的机会渺茫,毕竟梦想总是丰满的,而现实多是骨感的。人们所乐于仿效和推崇的成功者们,很少不是踏着累累白骨走上耀眼的巅峰的。总之,程序员终究需要为写不动代码的后半生做好心理准备和打算,这也正是焦虑来源。
- 1
- 2