本人网络出身,一年运维经验准备转程序员

本人网络出身,一年运维经验准备转程序员,第1张

兄弟我先跟你说一句,假如你的目标是钱,千万别自学!!!

我就受够了这种自学,我也是为了钱,你想,我上大学的时候自学了3年的编程(专业不是这个),我是从C、C++、Java、开源框架,这个线路来的,可是,你知道我总结出这个线路浪费了多少时间吗?废了多少无用功吗?尼玛没个坚强的心真难坚持下来啊(没有老师、没有师傅、只有自己啊)!!!!

因为我没钱,所以上不起培训机构,可是兄弟你可不能自己搞啊,我是在上大学的时候自学啊,时间有的是,可是你错过了这个好条件啊!!! 兄弟我劝你还是忍痛去个包就业的培训机构,可以让你在“最短的时间里”学会Java或者PHP,而且还有了项目经验啊!!!培训机构不会从C开始教你,而是用最实际的方式教你学会工作需要的东西。所以,就算你连print都不知道也无所谓。何况你已经熟悉了web的运行方式,而且至少了解了数据库的作用。

我找工作时候就是因为没有项目经验而且还是自学人家不爱要啊!!!当初我找程序员工作的过程太痛苦啊!!!!

==========

再跟兄弟透露个钱的问题,你刚学成出来的时候,不会给你多少钱(除了某些好点的培训机构出来的),钱是随着你的年头而翻翻的!是“翻翻”!

==========

兄弟,你还年轻,才22,钱是压在我们身上的大山,不怕吃苦还不行,还要有一颗为了目标而坚持的恒心啊!!!

php和java现在都很多,也很好找工作,我看你对程序还是门外汉,而且是为了钱,所以不要去从C开始了,C是赚钱,但大多是搞嵌入式或者是金融相关的程序,要的是“经验”啊!何况,咱们国家前几批的老程序员可都是搞“C”啊,你觉得你能在短时间内学成C并插进一脚吗?!

================

你的这些问题完全可以去你看上的培训机构咨询,真的,现在的你千万别自学了,千万!!你没有多少可挤出的时间了!!!

你可以想办法去达成你的理想,假如钱不够,可以去和他们商量来,如果下定了决心,就坚持,千万要坚持!!!

========

可能工作压力的原因,居然写了这么多。。。悲哀啊……

在一个初具规模的互联网公司,从业务方面出发,有很多岗位类型,比如运营、客服、市场、产品、设计、技术等等。

在这些大类下面,还要细分各种小类,以技术为例,可分为前端(客户端)、后端、测试、运维、DBA等等,这些都是技术类岗位。

那么如果想从事这些技术岗位,该如何选择,哪一个更有前途呢?

这五个岗位,可以做一个分类,前端和后端、运维和DBA、测试

前端和后端属程序类,也就是通常大家知道的程序员,主要是根据产品的需求开发出软件,属于公司的技术核心,非常重要。没有程序员的软件公司,也不好意思称为软件公司。

运维和DBA,这两个岗位的主要工作是管理服务器程序运行的环境和依赖的数据。运维可以看成是服务器管理员,所有跟服务器相关工作都是由他处理,比如服务器程序运行环境CPU、内存、磁盘资源监控、网络是否稳定监控,服务器程序依赖的软件安装等等。DBA就是数据库管理员,专门管理生产环境的数据库如MySQL、Redis。这两个岗位的工资不一定比程序员低,但是市场需求没有程序员旺盛。一家软件公司可以没有运维和DBA,但是不能没有程序。运维和DBA一般只有上规模的企业配备,小公司都由程序员兼任,毕竟如果公司只有个位数的服务器,完全没有必要专门配备一个运维,老板也不愿意花这个钱。

测试,虽然也是技术岗位,但是我个人感觉他们的工作不和技术挂钩,他们的工作就是不断使用程序员开发出来的软件,找出其中的BUG和漏洞。与此同时,他们的另一项工作就是督促程序员干活,修BUG。

论这些岗位的技术含量,我觉得测试是最低的,低端的测试几乎没有技术门槛,只要有软件使用经验,基本上都能干干测试的活,毕竟只是用用软件找找BUG嘛,而程序和运维则不行,必须掌握基础的技术技能才能上岗。当然高端的测试另当别论,他们也可以牛逼到天上。

其次是运维,当然并不是说运维这个岗位没有技术含量,同样运维的技术含量也很高,只是通常情况下,程序员都会点运维的工作,装装环境,监控下服务器运行情况,都没什么问题。反过来,运维却不一定会程序员的工作。我觉得运维应该是脱胎与程序员,然后随着行业的发展,独立成为一个岗位,本质上还是依附与程序员。

最后则是程序,一个合格的程序员,不但要掌握程序员本职的技术,还需要会服务器运维的技术,比如自己搭建一个测试环境,这样的技能是必须的,所以对服务器必然要有较为深入的了解。同时需要会DBA的技术,通常DBA是在数据量巨大的情况下才会配备,大多数时候一家公司不需要DBA,DBA的工作的都由运维或者程序员兼职的。与此同时,程序员还需要测试技能,当程序员写出来一个程序时,免不了要进行自测,写测试用例等等,只有经过自己测试,才可以将功能提交给专门的测试人员进一步测试。

所以,对于这三类岗位,我觉得程序员的技术含量是最高的。

我们再来说说这些岗位的发展前景。

对于一个大公司来说,会有专门的研发部门、运维部门、测试部门,然后设有研发总监、运维总监、测试总监,这些领导在公司的身价不相上下,不存在谁压谁一头的情况。但是在小公司通常只有一个技术部,这个部门管辖所有技术类员工,包括程序、运维、测试,甚至有的公司还会包含设计人员。而技术部门的领导十有八九是程序员出身,几乎不太会是运维或测试出身。因为一个软件公司的技术部门,没有运维和测试,照样可以运转,虽然有可能转的不顺溜,但是一定可以转,但是没有程序员,即便运维和测试配备的多么强大,这个部门也转不起来。其次一个技术部门程序员的数量绝对是压制运维和测试人员数量的。因此在程序员中出技术部门领导的概率远大于在运维和测试中出领导,除非真的遇到难得一见的人才。

所以,如果你想从事互联网软件行业的技术岗位,要想选其中比较有前途的技术类岗位,那么首选程序员,当然,更多的机会也意味着有更大的竞争,同时也有更大的难度,你选择程序员不见得一定会成为技术部门的领导,选择测试和运维也不意味着职业生涯会默默无闻,只是相对来说程序员的情景更加明朗。

与此同时,关于35岁程序员会被淘汰的观点,其实运维和测试的危险性更大,仔细想想难道不是吗,运维和测试并没有比程序员更有优势,反而劣势一大堆,那么肯定比程序员先一步面对淘汰,这是市场规则。

其实程序员除了写代码,最重要的技能就是找bug了,运维可以使你能够更经常的发现问题,解决问题

这种经验真的比单纯写代码更重要,任何经验都是经验,都会为你带来能力的提升,获得这些经验以后,以后写代码就会知道要注意什么,写的代码质量更高,其实java发展这么多年,如果你能把java的基础知识用好,就根本不存在落伍的问题

IT行业一直都有前景,但只不过千篇一律培训出来的程序员,需要考虑一下自己的未来了。以Java为例:2003年,新入行的程序员只需懂Javaweb和数据技术,就可以找到好工作;2008年,互联网公司要求程序员懂得多种框架技术,并拥有实战项目经验;到了2018年,用人企业的要求进一步提高,Java程序员需要掌握多个领域的行业级解决方案,而不再是过去对单纯某项技术。现有的IT培训机构,4-6个月培养的初级程序员,显然已无法满足企业需求。

我们可以看到互联网的发展是飞快的,很多企业也认识到了这个问题。 我看回答当中有多目前的大方向5G、物联网、大数据,AI等;那这些公司不需要前端吗?不需要UI吗?不需要前端开发吗?不需要后端开发吗?

在今年年初的时候,因为网易的H5在朋友圈火了一把,各大企业纷纷招聘前端;如今抖音家喻户晓的,各大企业又开始在招聘新媒体有短视频运营的人。

其实岗位就在这里,并且需求也是一样。为什么很多人找不到工作?无非是技术过于老,不了解新特性。或者是培训出来的东西过于千篇一律,大家都一样,企业招聘的时候当然是挑技术好的,或者学历高的,再不济挑说的好有眼缘的。

其实这个问题根本没有必要去问,因人而异。有的人希望往管理层走的,就去努力提升对产品的了解去了。有的希望成为技术专家的,也深入去研究自己领域的技术了。

也会有一些程序员,看到AI或者是物联网等等发展前景很好,去学了Python,开始看机器学习方面的书。也有大部分的程序员,不为所动。

不明白为什么程序员要转型,要是在职程序员都转型了。那么对于小白,和培训的学生是一个很好的消息。因为企业对于初级程序员又会有需求了。

可以肯定的回答,程序员最应该重视的不是互联网寒冬,不是什么比较火什么有发展前景。已经一个在职的程序员,无论是要升管理层,或者是提升自己。最重要的都是技术!

你不一定需要转型,但起码要有具备转型的能力!

这个要看大方向还是小方向,目前来看5G、物联网、大数据、AI人工智能是个不错的方向前景。

程序员的话一般往Python语言或者JAVA语言发展。

其中Python(易读可靠,功能强大,未来趋势的语言,媲美JAVA,在人工智能与大数据分析这一块优越于JAVA)。

个人建议在有其它语言基础的情况下,可以往Python方向考虑。必竟以后将是数据决定未来的时代 。谁能在行业中站住脚也是要考虑的方面。

希望对您有所帮助。

程序员做的好话,很多多转产品经理,升级了。

另外,IT行业目前机器学习/AI还是很火的,不过难度也蛮大,毕竟你面对的竞争者都是比较优秀的人。

现在很多同事都学习Python,作为近年来最火的编程语言,越来越收到重视。无论是做数据分析还是人工智能,都是少不了Python的影子!

大家都很有学习热情,有几个同学甚至花上万块钱周末报的培训班来学习人工智能,搞的我也压力很大,也在开始学习!也有学习大数据和云计算的,这要根据自己的情况来选择

如果你学历可以,有比较强数学功底可以选择转人工智能,如果以前搞JAVA的可以考虑转大数据或者云计算。当然了这都不是绝对的也根据自己的爱好以及对未来发展规划而定!

在IT行业对学习,无论转不转方向,及时的提高自己是很重要!

1有限数据的商业价值挖掘,与大数据不同,这一领域除了IT基础知识,更重要是锻炼商业逻辑和有限数据分析能力。

2电商配套的新媒体运营,随着新媒体时代的到来,这方面的人才突然出现短缺,需通过自学+大量实战才能掌握。

3区块链与实体经济的结合,新技术经历近十年发展,已经到了大量应用场景的实际使用,人才缺口大。

4跨境电商的运营,随着买全球,卖全球升级,加上中国在移动互联网和电子支付优势。这一领域必须大量人才加入。

建议针对自己的兴趣,专注一个领域,多实践和试错,这是IT最好的学习方法,培训要做好选择,太多机构学不到什么,不如参与新项目锻炼自己的技能。

都在往构建人类命运共同体和一带一路、中国梦的铿锵大道上高质量快速发展

1架构师

有些程序员爱好编程,很安心做一名程序员,虽然随着年龄的增长,代码产出大不如前,但是解决问题的能力却无人能及,如果一直保持对某一领域技术的专注,必然会成为行业技术大牛,在技术的道路上也会越走越强!

2 研发管理

研发管理是程序员比较常见职业发展方向,主要包括工程师、项目经理、研发总监、技术副总以及CTO等,该职位需要具备一定的领导能力。

3 培训讲师

培训讲师是一些程序员的职业选择方向,拥有丰富的一线经验,把自己所掌握的知识,传授给更多的人,帮助更多的走向编程之路,创造富足生活,也是人生一大乐事。

4 销售

开发出身的销售,比较务实,扎实的技术功底,更容易与客户建立信任,因此,相关技术的销售岗,也是程序员发展的一个方向。

5 咨询师

程序员聚焦在一定的IT技术领域,掌握精深技能,可以转行做该领域的咨询师,为客户解答相关技术问题。

6 创业

在“互联网+”的时代,IT创业是很常见的事情,开发者利用自身技术优势,可以通过创业逆袭,直接当上CEO。

以上是几种常见的IT程序员除了软件测试、产品经理、运维、等职业生涯的发展方向,都是IT程序员职业发展的好选择!不管将来最后从事的哪个版块,IT编程都是必须要先掌握好的技能,否则无法在行业入门,更加谈不上发展。

对于一个开发人员来讲,可能运维并不是自己的职责所在。但是作为一名开发人员,却不能不了解自动化运维的整个流程。因为对于一个信息系统而言,开发和运维本质是一体的,尤其对于一些小公司来讲,可能运维人员本身就是开发人员抽空兼任的。

而自动化运维,本质上是介于开发和运维之间的,是运维和开发的交集,甚至很多时候都要写不少代码。因此,任何一个开发人员,都需要有自动化运维的相关知识。

一个了解好的开发人员,即使自己不做运维相关的工作,也能够知道自己在将项目交付给运维人员的时候,哪些东西是重要的,那些是必须配置的等等。然而在实际工作中,往往开发人员会给运维人员留下一些坑,一些只有他自己知道,而运维人员不知道的东西。导致运维人员自己试了很多次发现不行的时候,找到开发人员,开发人员研究了一下才会告诉他,在某某环境中必须用哪个端口之类的。这样不仅白白浪费了运维人员的时间,也增加了很多沟通的工作量。

反过来也是如此,一些现场的问题如果运维人员不能现场给出问题的定位。对于开发人员来讲是非常难以复现的。比如之前有某家企业,运维人员在客户现场发现问题。费了很大力气从客气的内网里面把日志导出来,发给开发人员,结果开发人员仔细研究了日志之后,发现是网不通的问题。开发人员显然是不可能知道为啥网不通的,搞不好是压根没连网线。

所以今天我们来聊一聊,对于一个程序员来讲,需要了解的自动化运维的那些事。

一、自动化运维的概念

随着信息时代的持续发展,初期的几台服务器已经发展成为了庞大的数据中心,单靠人工已经无法满足在技术、业务、管理等方面的要求。一个运维人员手工配置几台服务器还可能。配置几百上千台服务器那就累死了,还容易出错。那么就需要对运维工作进行标准化、自动化、架构优化、过程优化等。从面降低运维服务成本。其中,自动化最开始作为代替人工 *** 作为出发点的诉求被广泛研究和应用。

所谓自 动化运维,即在最少的人工干预下,结合运用脚本与第三方工具,保证业务系统724小时高效稳定运行 。这是所有业务系统运维的终极目标。

按照运维的发展成熟度来看, 运维大致可分为三个阶段

(1)依靠纯手工,重复地进行软件的部署与运维;

(2)通过编写脚本,方便地进行软件的部署与运维;

(3)借助第三方工具,高效地进行软件的部署与运维;

二、自动化运维需要解决的问题

自动化运维通常来讲,需要解决以下几个问题: 自动部署配置、风险事前预警、故障事中解决、和故障事后管理

三、自动化运维的常用工具

自动化运维常用的工具包括以下几种:

1、Ansible

ansible是基于Python开发的自动化运维工具,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible具有如下一些特性:

(1)模块化:调用特定的模块,完成特殊的任务。

(2)Paramiko(python对ssh的实现),PyYaml,jinja2(模块语言)三个关键模块。

(3)支持自定义模块,可使用任何编程语言写模块。

(4)基于python语言实现。

(5)部署简单,基于python和SSH(默认已安装),agentless,无需代理不依赖KPI(无需SSL)。

(6)安全,基于OpenSSH

(7)幂等性:一个任务执行一次和执行n遍效果一样,不因重复执行带来意外情况。

(8)支持playbook编排任务,YAML格式,编排任务,支持丰富的数据结构。

(9)较强大的多层解决方案role。

2、Chef

Chef是一个功能强大的自动化工具,可以部署,修复和更新以及管理服务器和应用程序到任何环境。

Chef 主要分为三个部分 Chef Server、Workstation 以及 Chef Client。用户在 Workstation 上编写 Cookbook。然后,通过 knife 命令上传到 Chef Server。最后,在 Chef Client 上面实施安装和部署工作。所以,对于 Cookbook 地编写在整个自动化部署中起到了重要的作用。

Chef Server 包含所有配置数据,并存储描述Chef-Client中每个Nodes的Recipe,Cookbook和元数据。配置详细信息通过Chef-Client提供给Nodes。所做的任何更改都必须通过Chef Server进行部署。在推送更改之前,它通过使用授权密钥来验证Nodes和Workstations是否与服务器配对,然后允许Workstations和Nodes之间进行通信。

Workstations 用于与Chef-server进行交互,还用于与Chef-nodes进行交互。它还用于创建Cookbook。Workstations是所有交互发生的地方,在这里创建,测试和部署Cookbook,并在Workstations中测试代码。

Chef命令行工具 是创建,测试和部署Cookbook的地方,并通过此策略将其上载到Chef Server。

Knife 用于与ChefNodes进行交互。

Test Kitchen 用于验证Chef代码

Chef-Repo 是一个通过Chef命令行工具在其中创建,测试和维护Cookbook的存储库。

Nodes 由Chef管理,每个Nodes通过在其上安装Chef-Client进行配置。 ChefNodes 是一台机器,例如物理云,云主机等。

Chef-Client 负责注册和认证Nodes,构建Nodes对象以及配置Nodes。Chef-Client在每个Nodes上本地运行以配置该Nodes。

Cookbook 是Chef 框架的重要基础功能之一。在 Chef Server 对目标机器做安装部署的时候,是通过 Runlist。而 Runlist 里面又包含了一个一个具体的 Cookbook,所以,最终对一个目标机器的部署任务就落到了 Cookbook 上。而对于 Cookbook 来说,其中包含了多个组件,我们可以将 Cookbook 简单地理解成一个容器或者可以理解为一个包,里面包含了 recipes、files、templates、libraries、metadata 等信息。这些信息用于配置我们的目标机器。

3、Puppet

puppet是一种Linux、Unix平台的集中配置管理系统,所谓配置管理系统,就是管理其里面诸如文件、用户、进程、软件包等资源。它可以运行在一台服务器端,每个客户端通过SSL证书连接到服务端,得到本机器的配置列表,然后根据列表来完成配置工作,所以如果硬件性能比较高,维护管理上千上万台机器是非常轻松的,前提是客户端的配置、服务器路径、软件需要保持一致。

客户端Puppet会调用本地facter,facter探测出该主机的常用变量,例如主机名、内存大小、IP地址等。然后Puppetd把这些信息发送到Puppet服务端;

Puppet服务端检测到客户端的主机名,然后会检测manifest中对应的node配置,并对这段内容进行解析,facter发送过来的信息可以作为变量进行处理;

Puppet服务器匹配Puppet客户端相关联的代码才能进行解析,其他的代码不解析,解析分为几个过程,首先是语法检查,然后会生成一个中间的伪代码,之后再把伪代码发给Puppet客户端;

Puppet客户端接收到伪代码之后就会执行,执行完后会将执行的结果发送给Puppet服务器;

Puppet服务端再把客户端的执行结果写入日志。

4、Saltstack

SaltStack是基于python开发的一套C/S自动化运维工具。部署轻松,扩展性好,很容易管理上万台服务器,速度够快。与服务器之间的交流,以毫秒为单位。SaltStack提供了一个动态基础设施通信总线用于编排,远程执行、配置管理等等。它的底层使用ZeroMQ消息队列pub/sub方式通信,使用SSL证书签发的方式进行认证管理,传输采用AES加密。

在saltstack架构中服务器端叫Master,客户端叫Minion。

在Master和Minion端都是以守护进程的模式运行,一直监听配置文件里面定义的ret_port(接受minion请求)和publish_port(发布消息)的端口。当Minion运行时会自动连接到配置文件里面定义的Master地址ret_port端口进行连接认证。

saltstack除了传统的C/S架构外,其实还有一种叫做masterless的架构,其不需要单独安装一台 master 服务器,只需要在每台机器上安装 Minion端,然后采用本机只负责对本机的配置管理机制服务的模式。

saltstack提供如下一些功能:

(1)远程执行:(批量执行命令)在master上执行命令时,会在所有的minion上执行。

(2)配置管理/状态管理 :(描述想到达到的状态,saltstack就会去执行)

(3)云管理(cloud):用于管理云主机

(4)事件驱动:被动执行,当达到某个值会自动触发

这四种自动化运维工具的比较如下,现在主流的基本上ansible和saltstack用的多一些:

首先,程序员转行先认清目前的自己,如果要转行的话先确定了行业,还是熟悉自己的行业,因为如果跨行转业的话,我们还得用几年的时间才能够真正了解一个行业的精髓,所以跨度大的行也对我来说是不占优势的,要深入了解自己的职业,适合程序员转行的行业,比如软件营销,软件技术培训,研发管理,技术咨询,市场推广也可以自主创业等,如果想在软件上一直一路走下去,应该注意自己的知识纵生深度够了,这样的速度才有意义,转行,无论是哪个职业的转换,对一个人来说都需要很大的勇气不要在自己不冷静的情况下做决定,一定要清晰的认识自己和分析自己的未来,无所谓对错,遵循自己的内心,无论你有什么样的决定都要对自己的决定去对待工作对待自己人生的再一次探索。

以上就是关于本人网络出身,一年运维经验准备转程序员全部的内容,包括:本人网络出身,一年运维经验准备转程序员、运维、测试、程序员,这些技术岗位哪个更有前景、领导调动我去做java项目的运维 我该怎么做保证自己技术不落伍呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9322771.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存