Java 开发者路线图
我的一个朋友想知道为什么开发人员总是那么高兴。她给出的答案简单而令人惊讶:他们做自己喜欢的事并赚大钱。 欢迎来到软件开发者的世界。
软件开发人员的工资
我想告诉你开发人员的薪水。土地如何取决于工资,你应该去哪里工作,你不应该去哪里。如果你不是开发者,自己去摸索,可能会得到一个颇具争议的数据。重点是,影响开发人员薪酬的主要因素不是资质,而是就业地点。有时,在同等资格水平的情况下,工作地点的好坏之间的差异可能是 2 到 10 倍(!)。每个给定的时刻,您的资格都是不变的。你不可能在一个月内获得两倍的资格并获得两倍的报酬。但是你可以在一个月内换一个工作地点并获得两倍的薪水。在两个月的流动中,我的工资翻了三倍(!)——难忘的经历。那么,让我们找出哪个地方最好。- 公司主营业务是否为软件开发
- 公司是面向全球市场还是本地市场
- 主要办公地点在哪里:发达国家还是发展中国家
具体数字
由于世界不同地区的薪水不同,我建议以拥有 5 年经验的 Senior Java Developer 的薪水为起点,并将其称为“5 year maximum”。下面的所有数字将作为此金额的百分比给出。以下是世界不同城市“5 年最高”薪水的一些示例:


除非你做傻事,否则你能取得什么
如果你现在开始在编程方面进行自学,你的薪水可能是这样的:
计划
0-3个月(学生)
你对编程知之甚少。您可能已经在学校或大学基础水平上学习过它。 您需要做的是学习如何编程和学习 Java。 您的目标是在 3 级或更高级别的公司中获得 Java 初级开发人员的工作。在计划的前三个月,您将一无所获,因为您只是在学习如何编程。但是越早开始越好。最好的时机就是现在。将来,当你有家庭和大量贷款时,重新获得资格将变得更加困难。为了纠正你的错误,你将不得不存钱以支付至少一年的正常生活。不要犯愚蠢的错误。3-15 个月(Java 初级开发人员)
您已经是一名软件开发人员,并且您的经验每天都在增长。不要放松。在搁置桨之前,您有很多事情要做。 您需要做的是– 学习作为中级开发人员需要的技术。这些是什么?世界在不断变化。我会给你很多建议,生活会改变这一切。在网上查找一些职位空缺,看看您需要申请什么。请务必阅读 Bruce Eckel 的一本书“Thinking in Java”。 您作为 Java Junior Developer 第一年的目标是达到 Java Middle Developer 的水平。没有人说这很容易,但对于一个以目标为导向的人来说,这是可能的。它会立即将你的工资增加到“5 年最高限额”的 40%(旧金山和伦敦为 5 万美元,班加罗尔为 6 千美元)。2 年编程(Java 中级开发人员,一级)
去年你做得很好,现在你是一名 Java 中级开发人员。赚取 Senior Java Developer 薪水的 50%,你可以过得很好。您在工作中被赋予了一些严肃的任务,并且您的经验显着增加。你将在两三年内达到 Java 高级开发人员的水平。不用着急。无论如何,您的薪水不会很高。 您需要做的是学习设计模式,阅读 – McConnell 的代码大全。完善您的代码质量和团队技能。制定每月阅读 1 本计算机编程书籍的规则。然后,在 4 年内,你将比其他人聪明 50 本书。不要推迟它:你不会得到更多的空闲时间,此外,你很可能会组建一个家庭,或者如果你有一个家庭,它会变得更大。 你的目标就是选择几项技术作为Senior Java Developer专攻。你不可能把它们都学完,你知道的。成为单一专业领域的专家总是一个不错的决定。
3 年编程(Java 中级开发人员,二级)
您现在是一名经验丰富的中级开发人员,并且正在考虑成为一名高级开发人员。它既令人愉快又享有盛誉。你的工资超过“5 年最高工资”的 60%(班加罗尔 1 万美元,基辅 2.5 万美元,柏林 4 万美元,纽约 8 万美元)。从这一刻起,对像您这样的专业人士的需求增加了报价。你总能在几天内找到工作,而且你的收入几乎不会比现在少。当然,如果你不做任何愚蠢的事情。 你需要做的是继续研究你选择的技术。工作得更好。不是为了你的雇主,是为了你自己。申请参与涉及有前途技术的项目(例如 BigData,目前正在撰写本文)。不管怎么说,你每天都会在办公室呆 8 个小时,所以为什么不多赚点钱呢,更重要的是,你将来需要的是最宝贵的经验。 你的目标是找到一份新工作。总是可以找到一个好的团队。您将面临新的项目和技术。你不需要扎根到你的椅子上。如果您仍在三级公司工作,请考虑进入四级公司。5 年编程(Java 高级开发人员,1 级
您现在是一名高级开发人员。也许,你不值得,你感觉到了。不过,我还是要祝贺你。你现在是否配得上你的位置并不重要,重要的是你将来配得上这个位置。我想你会同意找到一份好工作更好,在成长到所需的水平之后反之亦然。我希望你没有忘记我每月读一本书的建议?现在任何学生都会羡慕你的知识和技能。更具体地说,他会为他们祈祷。试想一下:您的收入可观,接近“5 年最高”工资的 90%。你可能还很年轻。世界就在你的脚下。 你需要做的是重新评估您选择的技术。也许,你需要改变专业化。世界变了,技术变了,你在过去两年里获得了相当多的知识。您现在选择的内容将成为您未来几年的头条新闻。是时候选择您最喜欢的技术了。 你的目标是选择你的成长方向。他们很多,没有人能说出所有的名字,但你必须现在就做出选择。如果您今天做出一点改变,您将在未来得到很大的改变。6 年编程(Java 高级开发人员,二级)
你已经决定了你的未来,你正在努力实现你的梦想。一个正确选择的方向以及前进的愿望——结果不会长久。恭喜。我很高兴看到又有一个人实现了他的梦想。有一个深刻的道理。人们常常高估自己一年能取得的成就,而低估自己五年能取得的成就。回顾五年前。是这样的。 你需要做的是避免做出不明智的决定,不要偷懒。 您的目标是选择方向并继续前进。还是你以为到这里就结束了?记住你的毕业典礼。这不是结束,只是开始。你未来专精

Java 开发者的职业生涯
开发人员的职业不同于任何其他职业。你不需要成为一名经理就可以赚到很多钱。高级开发人员的收入经常超过他的经理老板。你获得的经验越多,你与老板的工作关系就会从“老板-下属”转变为“明星和经理”。
两百岁的开发者
如果您最喜欢编程,那么这就是您的方式:高级开发人员,然后是技术主管开发人员和架构师。这样您就可以作为开发人员工作 50 年或更长时间。在大多数情况下,高级开发人员和技术主管开发人员的薪水超过他们的经理。所以让你的钱物有所值。经理。你很幸运你不像其他人
你跑到敌人那边去了。只是在开玩笑。如果你发现了出色的组织能力,那么你的方式是:团队领导,然后是项目经理。它会让你有机会成为部门主管并开办自己的公司。那就是你想要的,不是吗?家是心之所在

见那不勒斯而不死。
你还没有家庭,但你喜欢旅行。oDesk 就是您的全部。找一个客户,同意每小时 20-50 美元的费率,带上笔记本电脑就可以走了!你的薪水足以在世界任何地方生活。为什么不立即开始让您的梦想成真呢?我不想编程,我是个女孩..
如果你是女孩,你可能需要休产假。这听起来像是一个性别歧视的笑话,确实如此。尽管如此,其中还是有很多常识。最有可能的是,休产假后您将能够获得大量产假津贴(在社会保障较高的国家)。有些公司不支付任何费用,有些公司支付高额费用。我的一个学生在休产假期间拿到了年薪的三分之一。这发生在 2009 年春季,在裁员期间。一年半后你可能会回来,至少是中级开发人员。6级

1 艾丽。对象可见性。无效的
- 嘿,阿米戈! - 嗨,艾莉!你今天能告诉我一些有趣的事吗? - 今天给大家讲讲对象的生命周期。一个对象创建后,它会一直存在(存在),直到至少有一个变量存储了它的地址(至少有一个对象引用)。如果不再有引用,那么该对象就消亡了。示例:
2 教授,垃圾收集

3 艾莉,敲定
- 再一次问好!现在我将向您简要介绍方法finalize()。该方法在对象被销毁之前由 Java 虚拟机在对象上调用。其实这个方法和构造函数是相反的。在此方法中,可以释放对象使用的资源。- Object 类有这个方法,因此,每个类都有它(Java 中的所有类都被认为是从 Object 类继承的,并且包含它的方法的副本)。如果您在类中编写 finalize() 方法,它将在此类对象被销毁之前调用。示例:
4 Elly,对象生命周期
- 我还想告诉你一些关于对象生命周期的有趣事情。在 Java 中,意外丢失对象是非常困难的;如果你有一个对象引用,就意味着这个对象肯定是活的。 - 在对象引用中存储一个数字——该对象在内存中的地址。您无法更改、增加或减少该数字。当内存中只有地址时,您无法创建引用。您只能创建一个新对象并将其引用分配给一个变量。这是获得新参考的唯一方法。 - 我懂了。也就是说,如果我将所有对象引用设置为 null(擦除),我将永远无法获取对象引用并访问它? - 是的。但通常情况恰恰相反——有太多未使用的活动对象。大多数程序在运行时创建许多对象并将它们存储在不同的列表中,但从不清理这些列表。 -大多数情况下,程序员将不需要的对象标记为“已删除”,仅此而已。没有人关心将他们从名单中删除。因此,大型 Java 程序往往会膨胀 - 越来越多未使用的对象仍然存在于内存中。- 就这样。以后我会一直提请您注意未使用的物品并妥善处理它们。 - ОK,谢谢。您已经清除了一些关于参考文献的事情。5 Diego,对象生命周期任务
- 嘿,阿米戈!这里有几个任务给你:任务 | |
---|---|
1个 | 1、Cat类的finalize()方法在Cat类中 写一个方法protected void finalize() throws Throwable |
3个 | 2. Cat 和 Dog 类以及每个类的 finalize() 方法 在每个 Cat 和 Dog 类中编写一个finalize()方法,它向屏幕显示一条消息,表明对象已被销毁。 |
3个 | 3. 5万个猫类对象和5万个狗类对象 循环创建5万个猫类对象和5万个狗类对象。(Java虚拟机会销毁不用的对象,所以finalize()方法至少会被调用一次)。 |
4个 | 4. 猫计数器 在Cat类构造函数[public Cat()]中,将猫计数器(同类静态变量catCount)加1,在finalize()方法中减1。 |
6 Elly,静态类和方法
- 这是一个有趣的新话题。我想告诉你静态变量和方法。 - 哦,我已经听说过静态变量。我想,关于静态方法也是如此。但我想知道更多细节。 -在类中声明变量时,我们指定这些变量是否在单个共享实例中创建,或者是否有必要为每个对象创建它们的副本。默认情况下,为这个类的每个对象创建一个类变量的新副本。它看起来是这样的:



7 Risha,静态类和方法
-除了静态方法还有静态类。稍后我们会考虑这种情况,我将向您展示一个示例:
8 Diego,静态方法任务
- 嘿,阿米戈!以下是关于静态方法的一些有趣任务:任务 | |
1个 | 1.Cat类和静态变量catCount在Cat类中 写一个静态变量int catCount 。创建一个构造函数 [ public Cat() ],其中给定变量应增加 1。 |
2个 | 2. 静态方法:int getCatCount() 和 setCatCount(int) 向 Cat 类添加两个静态方法:int getCatCount( ) 和setCatCount(int),使用它们可以获取/更改猫的数量(变量 catCount) |
3个 | 3. 类 Util 实现一个静态方法double getDistance(x1, y1, x2, y2)。它应该计算点之间的距离。使用方法double Math.sqrt(double a)计算传入参数的平方根 |
4个 | 4. ConsoleReader 类 编写一个 ConsoleReader 类,它有 4 个静态方法: - String readString()从键盘读取字符串 - int readInt()从键盘读取数字 - double readDouble()从键盘读取小数 - void readLn ()等待按下回车 [使用 readString()] |
5个 | 5. StringHelper 类 编写一个StringHelper 类,它将有2 个静态方法: - String multiply(String s, int count)应该返回字符串s 重复的次数。 - String multiply(String s)应该返回重复 5 次的字符串 s。 示例: Amigo → AmigoAmigoAmigoAmigoAmigo |
9 教授,对象静态作用域和生命周期

10 胡里奥
- 嘿,阿米戈!你今天做得很好。这就是为什么我不能给你更多。来,坐下,表演开始:11 松鼠船长
- 你好,士兵! - 早上好先生! - 我有一些好消息要告诉你。这是一个快速检查以加强您的技能。每天都这样做,你的技能会很快提高。任务是专门为在 Intellij IDEA 中执行而设计的。在 Intellij Idea 中完成的其他任务 | |
---|---|
1个 | Cat类和静态变量catCount在Cat类中 写一个静态变量public int catCount 。创建构造函数 [public Cat()]。每创建一只猫(一个新对象Cat)就让静态变量catCount加1。创建 10 个对象 Cat 并显示变量catCount的值。 |
2个 | 2.静态猫
要创建cats变量,请使用代码行: public static ArrayList<Cat> cats = new ArrayList<Cat>(); |
3个 | 3. 移动一个静态修饰符 移动一个静态修饰符以便代码编译。 |
4个 | 4. 最少数量的静态关键字 添加最少数量的静态关键字以使代码编译并使程序成功完成。 |
5个 | 5.有什么新想法吗?让我们想想...
|
6个 | 6. KissMyShinyMetalAss 编写一个名为 KissMyShinyMetalAss 的类。创建此类的一个对象,然后将其显示到屏幕上。 |
7 | 7.三个静态变量名 写3个公共静态变量:String Solution.name , String Cat.name , String Dog.name |
GO TO FULL VERSION