❶ 程序员如何提升自己的核心竞争力
首先需要在一个技术领域深耕,只有一个领域的知识真正吃透,才能有效地共享到别的领域,构成知识领域的森林,相近领域逐步横向拓展
❷ 程序员的出路
先总结后论述,打工是不可能一辈子打工的,程序员一定要有自己的生产资料。
我一直认为工作只是作为前期的一些资本积累,知识积累,人脉积累。最根本的出路还是要有自己的生产资料,这样才能应付各种危机。这里的危机不限于裁员,生病等常见危机。一切需要钱的危机都算。
生产资料就包括很多种了,程序员可以开自己的公众号,经营自己的网站,开发app,开发游戏,等等,一切可以构成你的睡后收入的都算你的生产资料。房子其实也算,因为可以收租。
其实拥有这些也不难,为什么这么说?因为程序员在工作中可以帮助公司开发创造这些,那么自然也是可以为自己创造和开发这些的。
创造和开发这些要么是一个人,要么是一群朋友一起。后者需要你的人脉关系作为支撑,前者非常适合全栈工程师和个人开发者。
很多人觉得全栈工程师都是自己一个人做,只有小公司才会这样子培养人,大公司不需要这样的人,因为分工很明确,每个地方需要你的技能都是明确的。
但是其实从谋求自己掌握生产资料的角度来说,其实全栈工程师是最好的。
我以我自己为例,我大学刚毕业,进的小公司,那时候安卓,后台都会自己开发。后来进了另一家公司做前端和后台去了。再后来进了大公司,做了偏向部署,云方向的工作。
到现在我发现自己基本遗忘了安卓开发的知识,前端也有些许遗忘,后台开发还很熟悉,但也没有以前这么熟练了。
以前熟练的时候,基本几周就可以搞定一些小项目的开发。
可能有人会问,那时候你为啥不开发掌握自己的生产资料?那时候年轻,想法没有现在这么多,随着年纪越来越大,经历的事情越来越多,就会想到这些事情。年轻的时候很少会想这些,觉得自己竞争力非常强。
也有人会觉得在公司做这些项目,是有很多资源可以支持的,当你自己做的时候需要考虑的东西很多,而且也没有这么多资源的支持,一个人需要兼顾花费的精力非常多。
话是这么说,没错,但是我们要做的东西也不是一蹴而就,可以用时间慢慢迭代,而且也不是要做很大很有野心的东西,一上来不要谋求做平台,一定不要做平台。先做出来再说,不要停留在ppt概念,想法的层级上。
我遇到很多停留在想法,ppt层级上,迟迟不行动的人,同时也有一些开始行动的人,后者已经产生了不菲的收入了,随着产品迭代更新,用户的反馈,自然而然可以做出成熟的产品。
简单来说,就是初期不要考虑太多,先把东西做出来,然后后期根据用户的使用反馈和建议不断打磨产品,当你慢慢产生收入,这时候再花钱继续迭代就容易多了。
而且自己打磨产品,学习到的知识,遇到的坑,自己慢慢消化,对自己是有很大帮助的。
在小公司开发,老板给你洗脑说,可以学到很多东西。但是生产资料是公司的。
现在为自己开发,制造属于自己的生产资料,也需要你给自己洗脑,如果成功了,知识是你的,生产资料也是你的。
最后希望每一个程序员都有属于自己的生产资料。
❸ 刚做java软件开发不久,想了解一下Java程序员未来职业路线
由于Java语言是全场景编程语言之一,所以未来Java程序员的发展路线还是比较多的,从技术角度来看,Java程序员可以选择走两条发展路线,其一是走全栈程序员路线,其二是走研发级程序员路线,这两个发展方向都有不错的职业前景。简单的说,数学基础好就走研发级路线,否则走全栈程序员路线。
从岗位升级的角度来看,Java程序员未来还可以选择走管理路线、设计路线或者咨询路线。管理路线比较常见的选择是项目经理岗位,项目经理岗位的成长空间也比较大,随着自身资源整合能力的不断提升,所从事的项目也会逐渐升级。要从事项目经理岗位,一方面需要丰富自身的知识结构,能够了解整个项目开发过程中所涉及到的细节,另一方面还需要培养自身的沟通交流能力,能够搭建起有战斗力的项目团队。
对于一部分行业认知能力、技术认知能力和产品认知能力都比较强的Java程序员来说,选择从事产品经理岗位也是不错的选择。由于具备扎实的技术背景,所以程序员从事产品经理岗位也具有一定的优势,对于技术边界的把握会更精准。随着产业互联网的发展,未来大量的传统行业领域也需要产品经理,所以岗位需求量还是比较大的。
咨询路线也是Java程序员未来发展的重要方向之一,目前整个IT行业领域存在大量的咨询岗位缺口,咨询专家更是具有非常可观的薪资待遇。要想成长为咨询专家,除了需要具备较强的技术背景之外,还需要具有较强的行业认知能力,能够根据不同的应用场景给出针对性的解决方案。
总之,Java程序员未来的发展空间还是非常广阔的,可以根据自身的知识结构、能力特点和兴趣爱好来选择发展方向。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言!
如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言!
❹ java全栈和java大数据哪个好
首先你要理解全栈和大数据什么意思,理解之后你再选择,被人推荐始终是别人的了解,自己理解做出自己的选择。
❺ 目前全栈开发的就业前景怎么样
全栈工程师掌握前端开发技术、移动APP开发、微信小程序开发、炫酷的网站开发、桌面应用开发等,期岗位发展方向也是清晰明了,从初级全栈工程师,经过经验的积累及自身的学习,一步步发展为高级全栈工程师,薪资稳定在20K到25K之间,最后成长为产品总监,薪资稳定在30K到50K。职业晋升线路一目了然,有好的发展和可观的薪资,你还在担心全栈工程师没有前途吗?
涉足领域广泛
因为全栈工程师会的技能多样,所以在多种领域都可以发光发热,包括金融、医疗、社交、汽车、生活服务、电商等常见领域,以及游戏、人工智能等新兴的热门领域,都有全栈工程师的一席之地,未来随着互联网公司的需求增多,全栈工程师一定会成为将来的一个发展趋势。
❻ 全栈开发和大数据哪个好
都是做程序员,只不过做不同的项目,但从公司水准上来看的话,大数据开发的薪资略高一点,但是从就业范围来说的话,全栈开发的就业范围广,这就取决于你自己对自己未来职业方向的定义了。
❼ 全栈工程师就业好不好
什么是全栈工程师
在现在这一个时代来说,不会有人掌握所有的编程语言、技能,以后应该会有,但是掌握这些全部技术的不是人类了。所以,其实我们需要的是懂得多种技术的,并能借些独立完成产品的人。
当我们需要做一个移动 CMS 的时候,我们就会在不同的技术栈之前选择,或是 RequireJS + Backbone + jQuery + Mustache,又或者是 ReactJS + Backbone,当然也有可能是 AngularJS 等等。我们所需要做的是,从中选出一个最好的方案,然后实施之。
这也就意味着,我们需要有更好的知识面,也会导致对于某些技术的不够深入。两者就是一个很好的对立面,在这两之间很好地平衡可能就意味着平庸。有时也并非如此,但是多数时间这这样的。要么成为专家,要么成为全栈,要么就平衡他们。
全栈工程师 VS 专家
人的大脑如同一间空空的阁楼,要有选择地把一些家具装进去。
柯南道尔说的话还是很有道理的。由于这个阁楼的大小是有限的,假定他是一个书架。那么全栈工程师的书架就会充满各种各样的技术栈从 MySQL、SQLite、MongoDB、Redis 等等各种各样的书籍;而专家的书籍则是 MySQL 优化、MySQL 重构、MySQL 权威指南、DBMS 等等的专业书籍合集。
如果他们都是一本书,那么全栈工程师的书是一个索引。专家的书则更多的是内容本身。
所以,每个人都会去选择不同的存储方式、不同的数据库。
对于我们大脑这个数据库来时,平时我们存储的是 Key-Value (ps: 我们只有 key,value 是 Google 和书本),对于专家来说,存储的是 Documents。在同样的容量大小的情况下,我们可以了解到更多的知识。如下图所示,左边的关系数据模型即为全栈工程师,右边则为专家。
Key
曾经迷惑了很久: 为什么对于一些知识点,我需要去 Google,而别人可以独立地完成的时候。我就意识到我更适合于互联网企业,据说在一些电信设备制造商里是没网的办公环境。然而在多数的时候,这并非一种劣势。
我们会更快地方式来解决问题,因为我们有一些这方面的经验。不足则是,有时候我们没有办法深入问题去分析。
如何成为全栈工程师
这是一个有趣的问题,在知乎也有这样的讨论。而我觉得,最重要的是好奇与创造。
创造
记得在上大学之前已经有一个明确的目标,尽可能地做到能做到的程序——想到的都应该能做到。于是,顺着这个目标构建了一个知识体系,又或者说是索引。
当我们心里有一个想法的时候,我就开始从一个 key 中进行头脑风暴,如之前做的地图搜索。我们要做的功能便是: 持久化 GEO 信息,在地图上显示坐标。
1. 首先会在头脑中列出所有我用过的框架,选择后台框架:
Django (python)、Flask (Python)、Ruby On Rails (Ruby)、Sinatra (Ruby)、NodeJS、Laravel (PHP)、Spring (Java)
排除过后就只剩下 Django、Flask、NodeJS,接着因为 Django 内置 Geo 支持,果断选择了 Django。
2. 接着,对于持久化方案的选择:
由于 Django 内置 ORM,所以这一步可以轻轻松松地过去。不过,我选的是 SQLite3,本地调试方便,还可以将数据复制到服务器上。
3. 然后,对于空间搜索的支持:
就这么有了两个搜索引擎和一个数据库: ElasticSearch、Solr 以及 MongoDB。因为 Django 对于 MongoDB 支持的原因,想到使用搜索引擎会更容易搜索到结果。接着找到了 Haystack,看到 Solr 需要手动更新索引就选择了 ElastiSearch。
4. 到了,移动开发:
要跨平台支持自然是 Cordova,用 Hybird 还是 Ionic 好用。
5. 实战
这一步自然也不是问题,向来是以实战出真知的。
在不断创造地过程中会学到更多的知识,有更多的方案可以选择。下一次,将会想着用不同的技术栈再实现一遍。有了之前的体系,再横向深入也是一个很好的突破点。如,我们用 Python 构建一个原型,然后我们用 Java 来实现。
好奇
与专家不同的是,全栈工程师更容易被新的技术吸引。至于,是好是坏我想大家都懂的。
当 ReactJS 出来的时候,就会试着去玩。
当 Ionic 还在测试版的时候,就会做一个个 Demo。
而有意思的是,同我们在《技术的本质》中看到的一样,新的技术都是基于旧的技术产生的。没有一种技术可以无中生有。所以要学习一种新的技术必然不难,只是有时候会难以深入。
全栈程序员进阶
在思考过一些日子后,我明白了更多的东西。也似乎找到了两条更有意思的成长路线:
构架设计
在我打算试着写一个名为 Echoes 的 CMS 的时候,找到了书架上的几本书:
《架构之美》《面向模式的软件架构》《领域驱动设计》《实现领域驱动设计》《软件框架设计的艺术》发现书中提及到的一些模式似乎已经很常见了,要理解起来已经变得很简单,看上去那些更像是一个又一个的项目的缩影。
更主要的点还有:
> 架构师并不是最好的程序员,但是知识面一定要广。
只有有着更多的知识才能决定好方案,如果我们只深入一部分知识,那么我们无法总做出正确地决定。所以,也必须也是一个好的成长方向。
成为专家
我一直不认同木桶理论的一点是,我们会被最低的木板限制。但是有一天我们会被最高的那一块限制到,毕竟我们都会意识到我们的短片,我们会尽量把所有的木板提到同样的高度,以保证水的容量。但是,如果最高的那块木板不是那么高呢? 那么,为什么不在一开始的时候,让它尽可能的高?
于是,我想说的是我们需要在某一部分成为专家。当我们在某一领域成为专家,要在另外一领域成为专家,也是很容易的一件事。
当我向 Senior 程序员咨询一些成长意见的时候(ps: 毕业不到一年),那么就是往专家发展。对于一个 Java Web 程序员来说,成长意见可能就是深入 Spring、探索 Tomcat 底层、深入 JVM。问题是,他们都写得复杂,但是我们又不能放弃这样的成长机会。我们还能做的事,从一个更简单的语言中学会这些原理,再回头去补充。
对应于 Spring,会有 Flask、Tornado;对应于 Tomcat,我们是不是可以深入 Gunicorn;对应于 JVM 是不是也会有 Python VM,不过还是 JVM 的书比较多。等我们在一个更简单的层级上了解到这些,那么对于一个臃肿的语言来说不会是难题。
❽ 全栈工程师行业在未来会有很好的发展吗
最近,网上很流行一个词:全栈(Full Stack)工程师,也可以叫全端工程师,无论是前端知识,还是后端架构你都要了解。甚至有些调皮的程序员这样理解全栈工程师:全栈工程师=屌丝战斗机=系统+网络+研发+dba+架构+安全=没女朋友、拿一份工资做三份事情的典型、每个站长都是一个全栈工程师,每个站群的站长都是超级全栈工程师。
以前,软件工程师最在意的是成为某个领域的专家或者高手,如今,随着软件技术的发展以及需求的变化,尤其是越来越多的程序员出来自己创业,由于各种条件限制,许多技术上的问题不得不亲力亲为地去完成,因此,很多程序员慢慢地就练就了精通多门技术的本领。
Full Stack Developer在国内不被接受的一个主要原因是公司缺乏稳定的T线(技术职位晋升路线)。很多有才华的人写了几年代码后去做了管理。今天的网络相关技术,聪明又能持续学习的人,在三年之内可以在一个领域做到很高的水准。那么如果你做五年,十年甚至十五年呢?我认为成为Full Stack Developer是很自然的选择,而且可以跟随最顶尖的技术。
Full Stack Developer的核心并非否定团队和协作,而是更多的体现在架构设计,快速原型和TroubleShooting方面。随着今天的分层越来越清晰,平台和语言越来越有特点,更加全面的技术人员可以根据不同的语言搭建整个架构。
Full Stack Developer并非杂而全——Facebook也不会雇庸手。他要求的是一种更加全面的深入。 一方面,他是技术人员不断学习的结果。另一方面,他也是对自己事业的一种责任。
❾ Java和全栈开发哪个发展前景好
全栈和java哪个能更好迎合市场需求,有同学咨询学习哪个在以后前景和工作薪水上能更吃香,首先我们先来了解下Java开发和全栈开发的区别。
全栈开发工程师是指掌握多种技能,能够独立开发应用程序的前端和后端以及数据库工作的开发人员。其中前端通常是指用户在应用程序中能看到或交互的部分,后端是应用程序中处理业务逻辑,数据库交互,用户认证,服务端配置等部分。全栈开发需要掌握至少一门编程语言,PHP、Java、C#、Python等,运用开发框架和第三库,前端技术,数据库与缓存,基本的设计能力。
Java后端语言,用来处理数据库操作,用户认证和应用程序逻辑等操作。你就需要掌握面向对象的设计和开发,设计模式的应用,基于J2EE各个组件的开发等等。只要你学习了解JAVA语言,并且学习与所选择的语言的细微差别,那么在实际中,无论你学什么都会比较轻松。如果新的库、框架和工具都在持续不断的涌现。
目前看来,单一技能的前端/后端程序员已经不能满足企业的需求,而且事实上Java已经成为全栈前端和后端开发中最流行的语言,所以要学学习全栈开发,全栈开发包括Java开发。一样相比,全栈开发者比Java开发者在就业求职中具备多种技能更吃香,同比薪水高出20%不等。
❿ 程序员:新手到专家的5个阶段
程序员需要 不断的学习
不仅仅是学习 新技术 ,还包括应用的 问题域 ,用户的奇思妙想,同事的古怪习惯,行业的八卦 新闻 和项目演进的重要特征
我们必须学习学习再学习,持续不断的学习,然后把学习成果 应用到解决 日常遇到的一切新旧问题上
新手在该技能领域经验很少或者 根本没有经验 ,这里提到的经验,指的是通过实施这项技术促进了 思维的改变
举个反例:
可能一个开发人员声称拥有 十年经验 ,但实际上只是一年的经验 重复了九次 ,那么这不算是经验
引申问题:
一年有365天,你是过了365天!还是只过了一天,重复了365遍?
1.新手非常 在乎他们能否成功 ,没有太多经验指导他们,他们不知道自己的行为 是对是错
2.新手不是特别的想要学习,他们只是想实现一个 立杆见影 的目标
3.他们不知道 如何应对错误 ,所以出错的时候,他们非常容易 慌乱
以上是新手的明显特征,所以跨越新手有以下几个步骤
1. 渴望成功 ,但是不要太过于执着,急功近利往往是失败的前兆, 不急不躁 的心态最好
2.没有经验就去 寻找经验 ,一个 好的老师 和一些优质的资源能够迅速把有用的经验传递给你
在亲身累计经验之前, 逆向思考,寻找经验才是核心和紧急目标
3.进行 能力测试, 可以利用第三方的题库和测试流程,标准而大众化的测试,同时也需要 自我测评 ,比如完成一个项目,自己统计整体 时间 ,自己撰写 时间轴日志 ,自己判断自己的 词汇量 和 熟练度 等
自我测评是第三方无法完成的 ,这点尤其重要,简单来说,也可以称为 自我认知 ,并且把数据 可视化
4. 兴趣是最好的老师 ,没有兴趣也是可以培养的
想要一个立竿见影的目标其实并没有错,新手恰恰需要 酷炫有趣有用 的目标才培养自己的兴趣,一个 完整的小案例 能够把所学的知识点 融会贯通
新手要做的,是一边需要沉下心来学习 零碎的知识点 ,一边整合知识点做出一个完整的效果案例,两相结合才能迅速进步
反之,一味的学习零散的知识点不去做案例,学的太多也只是 空背概念而已 ,一味的追求项目效果而不去深入内容,那么 永远不会进步 ,碰到一点改动就毫无办法了
5.不知道如何应对错误没关系,心态要冷静,并且及时的把 错误整理下来 ,学会处理错误的方法尤为重要,比如 如何正确提问 ,比如 高效引擎检索 ,比如官方帮助手册等,遇到错误并不可怕, 可怕的是找到解决错误的办法
高级新手能够多多少少摆脱 固定的规则
1.他们可以 独自尝试任务 ,但仍难以解决问题
2.他们想要快速的 获取信息 例如,当学习一门新语言或者API时,你可能会感觉到这点,你发现自己会快速 浏览文档 以寻找一个方法或参数列表,你不想在此寻根究底,或者 重温一遍基础知识
3.高级新手能够根据 过往的经验 ,逐步在正确的情境中采纳建议,但比较吃力,同时,他们能够形成一些总体原则,但不是全貌, 他们没有全面的理解,而且的确不想有
以上是高级新手的明显特征,所以跨越高级新手有以下几个步骤
1. 思考难以解决问题的原因所在 ,是哪个地方限制了你解决问题的能力?
这一点与你个人的现状有关,你正在学习的技术栈,你所做的项目,你的综合 能力和资源
简单的说 具体问题具体讨论 ,你必须对问题有深刻的认知并且 对自己有足够的了解
2.在这个追 求效率的时代 ,要去思考和学习底层原理,是一件很难的事情,因为 时间不允许
事实上绝大多数事物的不成功,就是 没有足够的时间
在时间的维度上,再无知的新手也有一个宽泛的坐标,那就是 寻找一个参数方法的时间和解析一个参数方式的时间都大致明确的
比如找到并使用某个参数方法大概需要 2分钟-10分钟 ,正常情况是5分钟,而解析一个方法原理,需要的时间是不确定的,确定的是 大于等于10分钟 ,可能是30分钟,也可能是几个小时,这 与效率不符 ,从利益上看也不划算
寻根究底是需要的,但它的 重要等级 排列在熟练了解全局内容之后
重温知识点也是如此
3.高级新手在一个熟练的框架里有所经验,有所作为,但是换了一个框架, 复用原来的知识 ,就显得生涩了
在学习的过程中,要不断的 举一反三 ,一个例子刻意练习三遍以上,一个例子做出不同的三种效果,一个例子应用在三种不同的情境等等等,学会 触类旁通
在第三阶段,从业者现在能够 建立问题的概念模型 ,并 有效 的使用它们
他们可以独立的解决自己遇到的问题, 并开始考虑如何解决新的问题 ——那些他们之前没有遇到的问题
你可能会看到,处在这一水平的人通常被认为有 主动性 和足智多谋
他们往往在团队中发挥领导作用(无论是否有正式的头衔),他们是 团队里的好人 ,既可以 指导新手 ,也不会经常骚扰专家
以上是胜任者的明显特征,所以跨越胜任者有以下几个步骤
1. 教是最好的学 ,当你可以胜任工作,可以独自解决大部分问题,已经比较 完善 了
这个时候要追求 知识的深度 ,想要进一步提升,就需要整合以前所有学习的内容,资源以及学习方法,在底层原理上,还有很多需要融汇贯通的地方, 通过教授新人和他 人,能够完善自己的知识体系,找到自己的薄弱点,以 另一个层面的角度来重新调整视野
2.学习与之 相关的领域, 这些内容你不一定会用到,或者不是在你的职责范围之内,但是学习之后会让你的本职做的更好, 让你的知识更加全面
前端胜任之后,可以适当学习后端,也可以适当学习UI,往 全栈的方向 ,学了python之后,也可以学学java, 了解不同语言之间的优点和缺点 ,运用不同的内容适当的解决问题
对比思维,左右辩证 ,看似把时间花费在精通之外,实际上效果一样会 反馈到核心事物上
广度和深度是一个 选择题 ,在时间上,只能 二选一 ,适度就行
精通者有足够的经验, 他们知道下一步会发生什么 ,如果没有发生又需要什么
他们非常明确哪些计划需要取消,而 应该采取什么行动
处于精通者的人更像是 初级专家 ,而不是高级胜任者
1.精通者一定是 身经百战 ,给一个项目,他能在一开始就判断出这个项目需要多长时间,分为那几个步骤,需要什么人员
从一开始就是 了然于胸 ,排除可能出现的错误,剩下的只是按部就班的走正确的流程就好,达到 高效,高质量,少错误的效果
这个阶段的人,已然有了质的变化,想要如何往上跃迁,还需要另外的 质的改变
终于我们来到第5个也是 最后一个阶段 :专家
专家是各个领域知识和信息的 主要来源
他们总是不断的寻找 更好的方法 和方式去做事
他们有丰富的经验,可以在恰当的情境中选取和应用这些经验
他们 着书,写文章,做巡回演讲 ,他们是当代的 巫师
思考:
1.自我测评,你处在哪一个阶段?
2.如何做才能提升到下一个阶段?
3.针对你的行业,细分阶级,比如十个阶级?哪十个阶级?