《大话Java性能优化》作者:聊聊职业发展、写作和职业素养

简介: 《大话Java性能优化》作者:聊聊职业发展、写作和职业素养

         

作者|周明耀,浙江大学硕士,九三学社社员,区政协委员,

著有《大话Java性能优化》等四本著作,发明专利60+,曾任IBM开发者论坛、InfoQ等专栏作家。


前言

前几天作为嘉宾参加了一场小型教育主题沙龙,谈及自己对于孩子教育方式和未来规划引导话题,我的回答是:“孩子按照我们所谓的经验、想法,大概率不会成长为我们或者他们想要的人呢”,我这么回答,是因为我觉得每个人都是独特的,光靠看公众号里别人的成长文章,或是听讲座,多半是不会成长为你的目标。教育是这样,IT职业生涯也是这样,本文我会针对几个成长过程中的话题进行展开,仅仅是自己的一些理解,没有对错之分,也决定不了你的未来,你如何学习、思考、执行、提升,那是每个人自己能够决定的事情。

自己以软件开发工程师身份进入科技行业,目前已有十八年,前几年业余时间也是科技类书籍作家角色。无论对于工程师、管理者、技术专家,还是科技类书籍作家,其实我更喜欢用使命这个词形容每一个角色,而不是用职业这个词。这样更为抽象,大概更便于展开话题。

关于工作理念

即便像我这样缺钱的人,也没有在一开始工作时就强调需要多少钱。我觉得一个人的态度很重要,读书时曾经听学长说:“给多少钱干多少活”,幸好我有独立的思维习惯,没有听他的,而是选择勤奋工作和学习,刚毕业时根本没有谈需要多少钱。大家知道我的第一份工作多少工资吗?800元,很少,但是我后来每年翻一倍,连续6年。

做人要看长远,20几岁刚毕业的时候,选择公司的因素会有很多,但是我个人认为兴趣应该是最主要的。校招面试的时候,我也更喜欢那些有明确技术兴趣和方向,知道自己想要做什么的候选人。如果做一件不喜欢的事情,那么很难有动力在今后的工作中继续前进。

IT 行业是个知识更新非常快的行业,其他行业也在发展进步,但是相对而言没有这么强的节奏。同时,IT行业的机会很多,每次失败最好都能够从自己身上找原因,这样才能继续向前,提升自己。选择很重要,要想清楚自己想要什么,选择之后,另一个放弃的选择就不重要了,重要的是怎么把选择的事情做好。

关于写作

科技作家们内心心知肚明,写出一两本科技类书籍不算难事,但是要坚持不懈地写下去,或是打算靠写科技类书籍或者专栏养家糊口,却是一桩极为艰难的事情。或许不妨断言:一般人是做不到的,无论是兴趣使然,还是打算以此养家糊口。该如何表述为好呢,因为其中需要有些特别的东西,既需要一定的技术能力,也需要实际的锻炼场合,还要有相当的情怀,或者说气概。此外,如同人生中其他事情一样,运气和机遇也是重要的因素。

科技类书籍作者们基本都是宽容以待,落落大方。之所以宽容,或许与这个圈子并非一个你死我活的社会有关系。这个圈子不会出现某本书卖了十万册,而导致另一本书少卖几万册的情形,事实上,大多数的计算机书销量不会超过5000册。有时反而因为一个作家的作品畅享,呼唤了读者对于书籍的热情,发动整体呈现出勃勃生机。

2014,我开始担任IBM开发者论坛的兼职专栏作者,写的时间久了,还得了个中国区专家的称号。有一天,电子工业出版社的编辑董英女士联系了我。那时的感觉,我至今记忆犹新。似乎有什么东西慢慢地从天空飘然落下,而我摊开双手牢牢接住了它。它何以机缘巧合落到我的掌心里,我对此一无所知。英语有一个单词epiphany,翻译过来就是本质的突然显现,直觉地把握真实,这类意思。就是某一天,什么东西突如其来地闪现在眼前,于是万事万物为之面目一变。以此为界,我的职业发展状态陡然变化。在我看来,语言这东西原本是刚强的,拥有久经历史考验的坚韧力量,无论如何都不会损伤自律性。用尽所能,想尽一切办法检验语言的可能性,极力拓展那有效性的范围,是每一位作家被赋予的权利。没有这样的冒险精神,任何新事物都不可能诞生。

关于技术管理岗位

技术管理这个岗位需要的是有大局观的人。在工作中,但凡想要扎根立足、有所建树,就必须要有主人翁意识,不怕吃亏、不怕辛苦、不怕累。顾全大局的人,才有资格统筹大局。

作为一名优秀的、尽职的技术团队管理者,我觉得需要处理好人和事,其实这一点在管理上是相通的,只不过技术团队有其技术背景要求,纯管理不容易驾驭团队,也会让团队的技术演进方向发生较大偏差(除非你有一位技术大拿愿意做你的帮手,并且你愿意洗耳恭听)。

我们先来谈谈对于人的思维。我们必须要守住底线,最基本的是要对下属保持友善的心,不能欺负下属。对于这一条的考量,我们可以看看自己团队内部成员的组成。技术团队内部有一些员工,也许他们不善言辞、不会说好听的话,但是只要你交给的任务,一定尽全力完成,遇到有不懂的地方会主动请示、沟通,个人姿态摆得很低,这样的员工内心非常成熟,知道如何做事,体谅上级、努力工作,而不是把精力放在正经工作以外的地方,这样的员工是团队的中坚力量,是不可或缺的成员。我认为考察你这个领导在处理人上做得如何,看看这类员工占比多少就知道了,缺少这类员工的团队,你的管理一定出现了问题。

再来聊聊对于做事的思维。对于技术团队管理者,确保自己需要多动手、保持学习状态。这其实是两条,先聊多动手。技术毕竟是一个实践型工作,很多经验需要实际操作之后你才会了解、积累,所以我鼓励大家自己动手搭建环境、编写代码,至少你也要看看下属的代码、设计文档,不能每天单纯务虚,时间长了你的技术能力也就没有了。另一条是保持学习状态,巴菲特把自己的成功总结为终身学习态度,我们都还这么年轻,当然每天要抽出时间学习、总结,因为唯有学习,才能让自己不落后。

谈代码规范的重要性

提到代码规范,一般都会直接联想到代码应该如何编写,才更加易读。我们可以翻阅SUN公司(早已被Oracle收购)、谷歌、阿里、百度、腾讯、华为等公司发布的Java代码规范,你会发现它们不仅仅是针对代码编写规范,而是覆盖了编写规范、性能优化、新特性解释等等,覆盖面最广的一家公司的代码规范甚至是由编程规约、异常日志、安全规约、单元测试、MySQL数据库、工程结构等六大部分组成的,为什么Java代码规范需要覆盖这么多内容呢?

我在写自己第一本书《大话Java性能优化》的时候,也有类似的感觉。如果单纯只写Java语言本身的性能优化,那覆盖范围势必很窄,但是如果站在工程的角度来看,那么我们就可以包含很多内容,例如架构设计、算法流程、数据结构等等。

谷歌发布的代码规范中指出,80%的缺失是由20%的代码所引起的。每个人写代码的思维方式、思路、方法不同,技术水平也不同,这时候确实需要有较为正式的编码规范作为约束。此时我想起了很多年前看到过的一段代码,没有换行,一行里面写完,数百字的代码,怪不得诸家大公司要纷纷规定每行代码最多80-120个英文字符。

代码规范本身就不是对与错的选择,而是结合很多人在工作中遇到的问题的分析、总结,通过一定的规则约束避免再次出现类似问题。所以,代码规范的制定是严谨的,不是一个不重要的工作,不是一锤子买卖,也不是光有代码规范就够的。

足够认真地做好每件事

我这里为什么要讲充分认真,而不是仅仅是认真两个字,这是因为我觉得只有充分认真的人才会真正去思考如何把工作做得更好(永远没有最好,只有更好)。我曾经介绍一位小姑娘去杭州日报实习,后来有人告诉我,她在那里很特别,每次出去采访的时候只有她一个人默默在记笔记,其他实习生不是玩手机就是聊天,感觉她特别棒。她现在是一家新媒体的主编,也曾给吴晓波做过个人助理,我所做的只是帮她起航,没有我她一样会是现在的自己。

在一家公司工作时,我带着团队申请软件著作权,这是一个需要评委到公司查看所有资料,并且需要评委对我们做的软件系统全流程查看后打分的申请过程。我和一位员工说应该怎么准备,交代完毕后我就去忙自己的了,其实我是故意考验他。当天晚上下班前,我问他都准备好了吗?“准备好了!”他很有信心地回答我。“奥,笔记本接好了吗?明天要下楼去演示,wifi是否可以连接上,有没有试过?明天楼上的服务器谁负责看管和维护?万一出现异常情况,有没有B方案?”我一连串的问题,我知道他什么都没做,我只是想教会他应该如何尊重自己的工作,如何做得更好。第二天的验收在我的带领下全满完成,评委用了40分钟验收完毕,和我说:“你们是今天唯一一个一次性通过的团队,非常顺利!”。

懂得感恩

1983年杨绛在给《当代》杂志的文章《回忆我的父亲》一文中,代替自己的母亲表达对杨廷栋(翼之)的感谢,杨先生的外孙女龚迪读了文章,回复杂志社:外祖父一生朋友很多,可是现在同杨家来往的,几乎没有什么世交了。难得您至今仍记得这一家,对外祖父曾给予的帮助念念不忘。七十多年了,仍如此表示感谢,我非常感动,也为外祖父深感欣慰。

我们在职场上也需要保留自己的感恩之心,对于帮助过你的领导、同事,都要记在心里,有机会就去表达对他们的感谢。我觉得我职场上的朋友较多可能也和自己的这一理解有关,我一直在各种场合,特别是自己的文章、书籍里表达对于老师们的感谢,我记得几乎所有好朋友们的生日、过往开心的事,到了节日就向他们表达祝福,我也记得买第一套房子时借我钱的同事们,每次聚会都会表示感谢。

就我个人而言,我倾向于启用有感恩之情的下属,并不是需要他们记着我的帮助,而是这些人普遍能够干好工作,因为懂得感恩的人往往责任心也比较强。

职场上的合规性遵从

社交媒体上几次看到这样的邀约:“我们对您的技术背景和行业背景很感兴趣,我们是一家专业的咨询公司,受雇于国内**基金公司,正在针对您所处的行业进行技术、产品和竞争力分析,我们觉得您很适合作为我们的专家进行采访。采访将采用电话访谈方式,耗时40分钟-1小时,我们会给予您1000元人民币的报酬”。相信很多人都收过这样的信息或者电话,大家要搞清楚,这不是技术访谈,它涉嫌商业间谍,如果你真的照做了,你能不能收到钱我不知道,你的职业素养是要被打问号的。你以为钱是这么容易给你的吗?他们要的是你所在公司的产品发展情况、技术使用情况,最终以数据形式卖给一些公司或机构。

不要贪图小利,一个人的职业素养非常的重要,让别人觉得你的职业素养有问题,你的职业生涯也会很危险。我建议你明确回复:“这类事情请走公对公形式,您可以联系我们公司市场部或者战略规划部对接,他们会找到我们对接。如果私人接受采访,我认为这是商业间谍行为,对于您今天的联络,我会向公司报备”。

结尾

职场的发展,可以讲的内容很多,我只能选择一些较为通识的话题。职场一定是艰难的,你总要先扛过沮丧的今天,才有真实可期的明天。我们每个人都是这样成长过来的吧,一边心酸委屈,一边努力前行。我们知道这条路很难,也免不了感到沮丧,却依然还是会努力宽慰自己,然后打起精神迎接下一个明天。

相关文章
|
19天前
|
安全 Java 开发者
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第9天】本文将深入探讨Java并发编程的核心概念,包括线程安全和性能优化。我们将详细解析Java中的同步机制,包括synchronized关键字、Lock接口以及并发集合等,并探讨它们如何影响程序的性能。此外,我们还将讨论Java内存模型,以及它如何影响并发程序的行为。最后,我们将提供一些实用的并发编程技巧和最佳实践,帮助开发者编写出既线程安全又高效的Java程序。
|
1月前
|
人工智能 Java 编译器
Java 19的未来:新特性、性能优化和更多
Java 19的未来:新特性、性能优化和更多
|
1月前
|
安全 Java
深入理解Java并发编程:线程安全与性能优化
【2月更文挑战第22天】在Java并发编程中,线程安全和性能优化是两个重要的主题。本文将深入探讨这两个主题,包括线程安全的基本概念,如何实现线程安全,以及如何在保证线程安全的同时进行性能优化。
15 0
|
18天前
|
算法 Java 开发者
Java中的多线程编程:概念、实现与性能优化
【4月更文挑战第9天】在Java编程中,多线程是一种强大的工具,它允许开发者创建并发执行的程序,提高系统的响应性和吞吐量。本文将深入探讨Java多线程的核心概念,包括线程的生命周期、线程同步机制以及线程池的使用。接着,我们将展示如何通过继承Thread类和实现Runnable接口来创建线程,并讨论各自的优缺点。此外,文章还将介绍高级主题,如死锁的预防、避免和检测,以及如何使用并发集合和原子变量来提高多线程程序的性能和安全性。最后,我们将提供一些实用的性能优化技巧,帮助开发者编写出更高效、更稳定的多线程应用程序。
|
1月前
|
监控 Java 开发者
Java性能优化实践:提升你的应用效率
【2月更文挑战第12天】 在当今快速发展的软件行业中,性能优化是每个Java开发者都必须面对的挑战。本文将深入探讨Java性能优化的关键策略,从代码层面到架构设计,全方位提升应用的运行效率。我们将通过具体案例,展示如何诊断性能瓶颈、优化内存管理、提高并发处理能力,以及采用最新的Java技术栈改善应用性能。加入我们的旅程,一起探索如何让你的Java应用飞速运行。
26 2
|
16天前
|
安全 算法 Java
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第11天】 在Java中,高效的并发编程是提升应用性能和响应能力的关键。本文将探讨Java并发的核心概念,包括线程安全、锁机制、线程池以及并发集合等,同时提供实用的编程技巧和最佳实践,帮助开发者在保证线程安全的前提下,优化程序性能。我们将通过分析常见的并发问题,如竞态条件、死锁,以及如何利用现代Java并发工具来避免这些问题,从而构建更加健壮和高效的多线程应用程序。
|
4天前
|
Java 程序员 数据库连接
Java从入门到精通:3.3.2性能优化与调优——内存管理篇
Java从入门到精通:3.3.2性能优化与调优——内存管理篇
Java从入门到精通:3.3.2性能优化与调优——内存管理篇
|
12天前
|
设计模式 运维 安全
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第15天】在Java开发中,多线程编程是提升应用程序性能和响应能力的关键手段。然而,它伴随着诸多挑战,尤其是在保证线程安全的同时如何避免性能瓶颈。本文将探讨Java并发编程的核心概念,包括同步机制、锁优化、线程池使用以及并发集合等,旨在为开发者提供实用的线程安全策略和性能优化技巧。通过实例分析和最佳实践的分享,我们的目标是帮助读者构建既高效又可靠的多线程应用。
|
18天前
|
监控 安全 Java
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第10天】 在Java开发中,并发编程是提升应用性能和响应能力的关键手段。然而,线程安全问题和性能调优常常成为开发者面临的挑战。本文将通过分析Java并发模型的核心原理,探讨如何平衡线程安全与系统性能。我们将介绍关键的同步机制,包括synchronized关键字、显式锁(Lock)以及并发集合等,并讨论它们在不同场景下的优势与局限。同时,文章将提供实用的代码示例和性能测试方法,帮助开发者在保证线程安全的前提下,实现高效的并发处理。
|
25天前
|
Java 测试技术 开发者
Java中的多线程实现与性能优化
【4月更文挑战第3天】 在现代软件开发中,多线程技术是提高程序执行效率和响应速度的重要手段。Java语言提供了丰富的多线程支持,包括原生的Thread类和Runnable接口,以及java.util.concurrent包中的高级并发工具。然而,不当的多线程使用可能导致程序性能下降、死锁等问题。本文将探讨Java中多线程的具体实现方法,并着重讨论如何通过合理的设计和编码实践来优化多线程应用的性能。我们将分析线程创建与管理的基本概念,深入理解同步机制,并探讨并发集合、线程池等高级特性的使用。文章的目的是为开发者提供一套实用的多线程性能优化策略,帮助他们在面对并发编程挑战时能够编写出更加高效、稳定
15 1