草庐IT

谈谈程序猿的职业方向

runoob 2023-03-28 原文

大学生在校期间可能会有这样的疑问:将来就业干啥好呢?


如果你是学计算机的,将来想进入软件和互联网行业,恭喜,这是个好行业,薪水很高, 也不需靠关系,一切靠实力说话,不需要有个好爸爸。


坏处是,这个行业需要极为繁重的脑力和体力劳动,加班也是司空见惯的事情。


接下来的问题是:现在软件和互联网大概有哪些方向?看看下文的解释:


1、首先是需求从哪里来?


1.1  客户的项目


如果做的是客户的项目,需求当然是从客户那里来的,当然客户绝对是软件开发的小白(其实也不能这么绝对啦,我也见过极少客户中很优秀的软件人才),他们很难清楚地描述自己真正的业务要求,这时候就需要有个人隆重出场了:业务分析师。对于大公司,业务分析师是专职的,对于小公司,项目经理或者开发骨干也就硬着头皮上了。业务分析师需要把需求理理清楚,交给后面的架构人员做设计。


业务分析师如果在某个行业干久了,就会变成业务专家,例如你把国内各大银行的核心系统项目都做了个遍,那你对银行业务的熟悉程度甚至可能超过银行的特定人员,这时候你就超级值钱了,不仅仅能分析业务,更能够帮助银行优化业务,你说牛不牛?


问:业务分析师需要懂技术吗?


答:最好是懂一点,你分析出来的东西是要码农们实现的,如果不考虑现有的技术,一味地迎合用户,肯定会被码农们骂死。


如果你是由程序员成长起来的业务专家,技术精湛,那就坐着数钱玩吧。


1.2  公司的产品


如果你做的是产品,例如微信、QQ、淘宝、魔兽世界、征途、大话西游,那需求其实是自己公司的人来定义的。


定义这个需求的现在有个时髦的职业:产品经理。像张小龙就是微信的超级产品经理,史玉柱就是征途的骨灰级产品经理。


产品经理主要根据用户的心理和体验来设计产品,让大家用的爽,好的产品经理现在非常吃香,也属于紧缺人才。


问:产品经理需要懂技术吗?


答:需要,最好是从程序员成长起来的,知道一个产品设计实现的难度,要不然只顾自己爽,也会被码农骂死。


2、设计和开发


2.1 架构师


听起来很高大上的一个职位,但是需要强悍的技术实力和深厚的技术积累。
架构师的成长需要历练,需要技术的广度和适当的深度。


设计优雅、灵活、可扩展的架构是架构师的主要工作。


不能追求最新、最热的技术,还要考虑现有团队的能力,技术的成熟度。


人员需求:★
难度指数:★★★★★


2.2 web后端码农


后端码农主要实现业务逻辑,提供接口给前端使用。


Java 当然是用的最多的,但是也有别的相对小众的像 Python、ruby on rails 等,还有就是PHP,简单粗暴,中小网站常用,无论哪一个,学习起来都不是很难。


这一块的人员需求是比较大的。


人员需求:★★★★★
难度指数:★★★


2.3 web前端码农


主要是 Javascript、CSS、JQuery 等,最近几年大家重视浏览器端用户体验,浏览器端做得越来越炫,所以也很火。


人员需求:★★★★★
难度指数:★★★


2.4手机端码农


主要是 Android、iOS,由于移动互联网的发展,现在很火爆,需求量很大,相对而言 iOS的门槛高一些,程序员也少一点,不过工资高一点。


人员需求:★★★★
难度指数:★★★★


2.5 系统编程码农


有些需求很简单,有些需求很复杂,需要支持海量的用户,海量的并发,像淘宝的双11, 像微信的春节抢红包。


需要做云计算,虚拟化,分布式处理,支持系统水平扩展。


对于海量的数据,还需要做大数据分析,从中提取有价值的信息,例如 Hadoop。 


由于需要对操作系统,数据库,服务器端系统做定制开发,甚至自己搞一套,小公司一般没有这样的技术能力,主要是BAT这样的公司在搞。


人员需求不是很大,对码农来讲,需要在一个领域钻研得非常深,技术稳定度比较好。


人员需求:★★
难度指数:★★★★★


2.6 安全


互联网时代,你的信息一不留神就有可能被偷走,安全变得越来越重要。 
所以单单实现了功能,满足了性能还不够,很多公司,尤其是BAT对安全非常重视。
这个方向也需要对技术钻研得很深才可以。


人员需求:★★
难度指数:★★★★★


3、测试


这个对技术要求不太高,但也需要测试相关的知识,能够设计测试用例,准备测试数据,执行测试。


现在敏捷开发流行,对测试也要求懂开发知识,至少能够开发一些自动化的脚本。


很多女生后来转到了测试岗位,我想主要是女生比较细心吧。


我在IBM见过一个非常优秀的测试人员:她不仅仅能出色完成上面说的工作,还可以参与设计开发的讨论,经常能从测试角度提出开发人员都没有想到的问题,极大地帮助提升了软件的质量。


4、数据库管理员


几乎所有项目都需要数据库的支持,对于大型、超大型项目,会有一个叫做DBA的职位。他对数据库知识极为精通,平时对数据库进行管理,开发时能帮助开发团队设计数据库,并且找出性能瓶颈,进行性能调优。


5、美工/文档


美工:就是对界面进行美化了,一般是由美工先出界面原型,大家讨论,修改,确定后美工会生成各种界面元素,像图标、按钮等。


现在对美工也有一定的技术要求,不仅仅是画界面,还要把html模板做出来,所以美工需要懂得 HTML、CSS,甚至部分 Javascript。


程序员拿到 html 模板后,往上添加业务代码即可。 


文档编写人员:小项目一般是有人兼职做,大的项目、产品会有人专职写文档, 我 2003 年的时候参与过上海证券交易所的项目,看到有个专职的文档编写人员写的 Word,实在是太专业了,那个精美啊,完全是可以直接出版的水准。


我把它 copy 下来,自己都想山寨一个,照葫芦画瓢都做不出来。


6、项目管理


项目已经开始了,业务分析师、架构师、开发、测试等一群人如饿狼扑食,势必要把项目撕个粉碎。


可是这么多人怎么协作? 如何管理?进度能不能按要求完成?这就需要项目经理出马了。


项目经理,说白了就是带着大家做项目,主要和人打交道,需要协调各个方面的关系,保证项目的进展顺利。 


问:项目经理需要懂技术吗?


答:当然需要,最好是开发出身,要不然你就听不懂那帮码农在说什么,只能在表面漂浮着,没法深入项目,别人也就不服你,肯定是带不好团队的。


7、运营


如果你是在开发自己的产品,开发完成以后,马上就会遇到一个问题,怎么推广?


在互联网时代,世界是公平的,竞争异常激烈,一个好的软件,或者App,或者网站,缺乏运营,你的技术再好也不行。


运营其实就是想方设法让你的产品被人知道,被人用起来,这里边水很深,例如怎么写个软文?怎么在社交网络、微信、微博进行营销?怎么统计,分析,精准地定位?


这方面,2014年以前的小米绝对是典范。雷军的 7 字诀:专注,极致,口碑,快, 黎万强的《参与感》 都是经典。


好的互联网运营人才奇缺,当然非常的吃香。
对编程不感兴趣的同学,不妨看看这个方向。 


说了这么多职业方向,你会发现,绝大多数都要求懂一定的技术,所以我其实想说的是:
刚参加工作,不妨先从程序员开始,慢慢地再寻找自己感兴趣的方向。


来自:码农翻身(微信号:coderising)
作者:刘欣

有关谈谈程序猿的职业方向的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  3. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  4. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  5. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  6. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  7. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  8. ruby - 检查是否通过 require 执行或导入了 Ruby 程序 - 2

    如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby​​文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否

  9. ruby-on-rails - 如何在 Gem 中获取 Rails 应用程序的根目录 - 2

    是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在

  10. 程序员如何提高代码能力? - 2

    前言作为一名程序员,自己的本质工作就是做程序开发,那么程序开发的时候最直接的体现就是代码,检验一个程序员技术水平的一个核心环节就是开发时候的代码能力。众所周知,程序开发的水平提升是一个循序渐进的过程,每一位程序员都是从“菜鸟”变成“大神”的,所以程序员在程序开发过程中的代码能力也是根据平时开发中的业务实践来积累和提升的。提高代码能力核心要素程序员要想提高自身代码能力,尤其是新晋程序员的代码能力有很大的提升空间的时候,需要针对性的去提高自己的代码能力。提高代码能力其实有几个比较关键的点,只要把握住这些方面,就能很好的、快速的提高自己的一部分代码能力。1、多去阅读开源项目,如有机会可以亲自参与开源

随机推荐