Skip to content
Ider

沉淀我所学习,累积我所见闻,分享我所体验

Primary Navigation Menu
Menu
  • Home
  • About Ider
    • Who Ider?
    • Why Ider?
    • How Ider?
    • Where Ider?
    • What Ider?

Career

2023-04-27
27 April
On April 27, 2023
In Knowledge Base(心得笔库), Programming Life(程序人生)

三年居家工作感受

回看过去的一些记录,2020年3月5日,公司第一次发消息因为疫情建议员工在家工作不要去公司,不久3月16公司再次发消息关闭公司强制全体人员在家办公。随着过去两年疫情渐渐稳定,公司开始慢慢开放让大家回去。算算时间到现在已经有三年的时间了,大家已经习惯了居家办公,所以周围同事去公司上班的还是不多。

疫情让大家的工作生活方式都有了很大的改变, 对我个人而言也有很多体验和成长。

时间线

先来回顾一下基本的时间线:首先是从2022年3月开始一直居家办公,所有交流都是远程视频会议的形式,因此后来见面时都惊讶与脑海中预期的身材不符。

接着2021年8月公司开始邀请员工自愿回公司,10月开始部分食堂提供午餐,我在11月因为孩子转学到公司附近的学校开始每天到公司方便接送孩子,但绝大多数都单独在一个房间里开会。

到了2022年7月我感染了新冠,在家休息了两周之后开始居家办公,另外孩子的在8月转到了离家较近的学校所以一直没有要去公司,一直到9月才重新开始一周去2-3天。10月的时候发现了家附近有直接到办公楼门口的班车,于是又转换了交通工具来更好的利用通勤。

但直到目前4月也基本一半时间居家办公一半时间去公司,只是通勤的交通工具会应天气情况二变化。

改变与发现

这三年的不同工作方式对每个人都有改变,对我来说也是如此,有好的也有不好的就挑几个分别聊聊。

好的地方

咖啡

我一直都很爱喝咖啡,每天1-2杯。在办公室里我会用公司的意式浓缩咖啡机给自己做拿铁,偶尔还能做出拉花。一开始居家办公的几个月我只能用法压壶来泡咖啡喝,后来想着居家是个长期的事情,于是买了Breville的半自动意式浓缩咖啡,生活一下子变得更有精神了。

我开始网上订购当地不同烘培的咖啡豆来尝试不同的口味,也在咖啡拉花得到强化。但有一点最重要的是我发现了自己乳糖不耐受的事实,也解释了为什么我在公司喝完自己做的拿铁就特别爱上厕所。公司里都是全脂纯牛奶,在家里我就买低脂无乳糖的。

对话

我的声音比较低,所以跟人当面说话的时候别人经常听不到我说话的声音。在说英语的时候我又会不自觉的把声音压得更低,当又不太会说的单词时我又会放轻发音试图蒙混过去,这样就更让对方听不清我要表达的意思。

居家工作之后,所有工作上的会议交流都通过Zoom视频电话会议,这样很好的掩盖我的缺点:声音不太低,我就靠话筒近一些或者对方把音量调高一些;单词不确定我就在电脑上快速搜索来确认。

经过这几年在线上的锻炼,见面交流虽然还是有声音过低的问题,但流畅度有了很大的提高。

亲子

在家工作最大好处之一就是减少了上下班的时间,特别是避免了堵车造成的时间浪费。于是我有更多时间跟孩子交互接触,即使有些陪伴的质量并不算高,但体量决定增加了很多。另一方面,太太多承担了全家的早餐和午餐,我也相应的分担了一些照顾孩子工作,比如洗澡、刷牙。这也让我感受了更多他的成长。

坏的地方

健康

居家办公的时候基本上都是坐在电脑前工作,开车出门接送孩子,每天最频繁的走动就是在书房和不到20步远卫生间,最长的距离就是停车场到教室。当时没有用智能手表,但是估算一下可能一天总动走动不到2000步。同时因为疫情,也不能去公共场所进行锻炼,这导致我能明显感受到身体状态的下滑。特别明显的地方就是腰背经常强烈酸痛,甚至不能站立很久。

很明显的对比就是在我回到公司上班之后,我在办公室有意识的更多站立工作,同时每天中午吃饭要走比较长的距离到食堂,单单这些小的变化就让我再没有感到腰背的不适。

通过这个经历,也让我发现减少身体疼痛不一定是要针对痛的地方。比如腰痛,是因为长期久坐腿和臀的肌肉力量减弱同时增加了腹部重量,进而身体压力都转移到了腰部。所以腰部的按摩并没能缓解我的疼痛,更有效的反而是简单的走路恢复腿部力量和平板撑来增加腹部力量。

交流

上边说居家办公通过视频电话让我的对话变得更有效,但另一方面也让同事间的交流变得没那么频繁。所有的交流都需要非常刻意地创建一个会议,打开视频进行。不像在办公室可以发生在任何随意的场景:办公桌旁,小厨房,食堂等等。特别是午餐时间,其实是大家互相随意交流生活,了解每个人的最好时间。亦或在前往下一个会议室的路上硼矿,随便简单聊几句也能快速交换一些信息或者激发出几个想法。

此外,在某些特别的会议上,比如绩效对话,我个人觉得面对面的交流会更好。我可以更注意对方的表情和身体细节来改变我的对话方式和内容,或者用一些肢体语言来补充口头交流。

空间

居家办公另一个大问题就是家庭空间被挤压,家里需要一个地方甚至一个房间来长期提供办公场所。疫情期间,由于学校关门,很多孩子也要在家上网课就更进一步割裂了家庭空间。我们还比较幸运,孩子的托儿所因为规模比较小在疫情最严重的时候也可以一直运行,我还可能白天把孩子送出去,在家占有一个房间来开会办公。

除了空间尺寸,空间的舒适度也是一个问题。办公室一般都会长期开着中央空调让温度一直保持在一个常态,这样我就能感到身体上的舒适从而更好地工作。但是在家的时候,冬天有时候就冷得无法集中注意力,虽然有中央暖气但是又觉得只有一个人在家没必要开。到了夏天,因为没有空调,有些日子又热得直冒汗。

 

很多时候,习惯了一些行为方式,就成了惯性不太容易改变,但当一些外界因素造成我们不得不去适应新的变化的时候,发现其实有些改变也不见得都很坏。

 

2020-12-15
15 December
On December 15, 2020
In Knowledge Base(心得笔库), Programming Life(程序人生)

面过100场行为面试后

两年前,我在 Facebook 完成了100场面试的里程碑,分享一篇对于面试心得讲了讲面试对我带来的个人能力的提升。今年五月,我差不多在一年半的时间里又完成了100场面试让总数达到了200场。接着到了今年十月份,其中一类面试—行为面试(Behavioral Interivew) 我也完成了100场。感觉是个不错的时机来再来写篇文章分享一下,但这次我没有特别心得体会总结,就聊聊一些随意的想法。

 

美国科技公司对于软件工程师招聘比较常用三种面试形式:写代码(Coding),系统设计(System Design),行为面试(Behavioral)。对于大公司来说,他们常年都会很多招聘指标,也有大量的申请人,所以相对于中小公司,在大公司更容易获得面试方面的培养机会。(Facebook内部对不同类型的面试都有内部代号,但是因为不对新人记忆不友好,慢慢开始弃用了。)

当我作为面试者时,我对它们的难易程度排列为:系统设计>>行为面试>写代码。毕竟代码是可以通过刷题来提高的,行为面试也主要是讲自己的故事,而系统设计的广度和深度的把控就比较不确定了。

而当我变成面试官时,从另一个角度排列顺序就变成了:行为面试>系统设计>写代码。这排位主要根据我写面试反馈结论所花的时间来衡量:一般代码面试的结论我需要5-10分钟完成,系统设计则要15-30分钟,行为面试则尝尝花费我30-60分钟。主要原因是行为面试要做的内容记录就很多,次要原因是英文写作还是我的短板。因此我后来只做行为面试来锻炼我自己的英文写作,同时也让我享受挑战的乐趣。

 

之前的文章我讲了面试在广义层面带来的各种不同的好处,面试了所以不同类型面试后,我想再聊聊各类面试对于作为面试官的软件工程师在公司内的职业发展不同阶段所能带来的特定技能的锻炼和提升。进而让面试者从另一个角度来了解面试的意义和价值。
Read More →

2017-12-14
14 December
On December 14, 2017
In IT Products(数码产品), Programming Life(程序人生), Tangential Speech(漫话杂谈)

协同效应 – 从《炉石传说》的地牢冒险随想到职场工作

上周炉石传说发布了新的扩展包,里面还提供了免费的PvE冒险模式:Dungeon Run。我也趁着假期完成了所有职位的通关,而且差不多一半的职业都是在第一次尝试就过了,只有两个职位尝试了比较长的时间。这过程有一定程度上是凭借这顺气:碰到容易的Boss;拿到超强的Treasures。

而另一个可以致胜的点是我在Twitch经常听炉石主播提到的是:Synergy–协同效应。最近在看的《The 7 Habits of Highly Effective People》一书中的第六条Habit也讲到了是“Synergize”。所以这个观念一时间不停地在冲击着我,也让我去体会到有时候做事情的成效不仅仅靠努力和运气,同时也需要周围的环境和人物一起形成协同效应才能达到最大的成就。

先用炉石的概念来解释Synergy。最简单的就是青玉(Jade Golem)卡,单独每一张都没有什么特别强大的,但是一旦卡组里有越多Jade卡,他们就可以让后边的卡变得越来越强大。卡与卡之间形成的效应所起到的结果远大于单卡价值简单的累加。在Dungeon Run中,还有一些Passive Effect(“被动效果”,或者“光环效果”),比如Battlecry(战吼)触发两次,让Jade Golem增长更加迅速,也让Jade卡变得更加强大。而如果卡组里没有什么卡可以配合这些Passive Effect的话,那选取他们也就变得浪费,这也是Synergy的体现。

工作中,不同职位之间的合作也需要Syngergy。在新公司的第一年,我碰到了一个超强的PM和一个超厉害的Data Scientist,前者负责发现项目,后者在项目发布后分析成果和问题,我与他们合作来完成项目的实现部分,整个环节十分的流畅。工作时候可以专注在自己的长项之上,有问题也能快速找到他们来帮我解决,所以项目做起来总是得心应手。即使同在工程师这职位上,也可以行程好的Synergy,今年下半年我和一个iOS以及一个Backend工程师行程了一个小组专门负责架构,我们各自都只对自己所工作的平台十分了解。但当我们一起合作时,通过不断的交流和询问,每次都能很快地发现问题所在,还能迸发新的灵感,而且我们完全互相信任所以可以全权交由其他人去推进项目的完成。

除了团队成员之间的Synergy,公司的环境也会对个人职业发展有Synergy的作用。极端的例子,如果长期得不到合适的项目来做,那显然无法发挥出自己能力。我自身也有体验,我一直想锻炼我的Leadership,但是在之前的几家公司,我合作的都是比我Senior的工程师,显然很难发挥出我的Leadership,另外我的Manager也没有要求我这方面的能力所以就没有特别地培养我这方面的能力。到了新公司,每年有很多的Intern来锻炼我们Leadership,这就让我在这方面有了很好的提升;同时还会招收大量的New Grad和Return Intern,大量Junior工程师的存在,也能让我能自然而然地承担起Leader的责任去指导帮助他们。这在炉石中的体现就是Distributed Mana Curve,虽然后期的单卡很强,但是没有前期卡帮忙过度的卡组也不会有好的胜率。

 

Synergy是非常有趣的现象,我们往往只关注了个人的强大而忽略的整体的作用,总觉得只要自己足够强大就可以适应各种职场环境,而实际上同事和公司文化对我们的影响也有着不可忽视的作用。

 

2016-01-24
24 January
On January 24, 2016
In Programming Life(程序人生)

言传而身教,求知并实践

在我第一份实习工作里,我跟着老板学习并进入了软件开发行业;从我第一份全职工作那,我看到了工程师的不同职业路。在现在的公司里,我也获得了很多身边同事们的指导和帮助,看到了更多在行业和领域中的佼佼者。学习他们写的代码,观察他们设计的架构,与他们交流,甚至只是看着他们工作,都让我发现新的领域,加深流程理解,提速知识学习。他们让我了解到了工程师在不同阶段所作出的贡献大不相同。更可贵的是他们总是愿意抽出他们宝贵的时间给我指导,帮助我变成像他们那样杰出的工程师。

现在的公司员工数比以往的公司要多几十几百倍,所以很难像以前那样找到几个经典人物来表述,也因为公司庞大所以有着更明确的职称(Title),所以此篇文章里我将对“位”分别描述,回顾并感谢每位同事带给我的提携和指导。

(文章比较长,主要讲述在我身边工作的Senior Engineer,Manager和Staff Engineer让我感受到的执行力(Execution)、领导力(Leadership)、主动性(Initiative)这些能力特性,也让朝着他们的方向不断的去学习获取这些能力。)

  • Senior Engineer – Execution
  • Engineer Manager – Leadership
  • Staff Engineer – Initiative
  • Title ≠ Ability – Study

Read More →

2016-01-20
20 January
On January 20, 2016
In Article Collection(聚宝收藏), IT Products(数码产品)

一些实用的在线课程的网站

现在的学习已经不仅仅局限于课堂之上,也不光来自于工作之中,借着在线教育网站(Massive open online course, MOOC)的崛起,越来越多的人通过在线学习了补充自身的知识,提高各个方面的能力。之前分享过《一些视频教程网站推荐》,这里再分享一些非常有用的提供在线课程的网站,可以在上下班路上或者平时休息时播放观看。

Udacity

Udacity

Udacity主要是编程开发技术类的在线课程,而且这些课程的由诸如Google、Facebook这些大公司提供,所以质量也很高。这些视频大部分需要付费才能观看,但也有很多免费又值得学习的内容。我个人在上边获得了很多关于Android开发方面的能力提升。

对于付费用户,网站还会在完成某些课程内容后提供“Nanodegree”的荣誉来证明对某项知识已被掌握。

Udemy

Udemy

Udemy上的视频教程包罗万象,对于不满足于一个领域的知识的人,可以在上边了解其他领域的基础知识,比如房产投资,股票交易。

同样的,网站的大部分课程的需要付费,而且价格还不低,但是一些免费课程也非常的受欢迎。另外很多课程每节视频的长度都较短,所以很容易快速完成一节课程的学习。
Read More →

2015-12-28
28 December
On December 28, 2015
In Algorithm Analysis(算法分析), Knowledge Base(心得笔库), Programming Life(程序人生)

聊聊刷题

在之前的《谈谈面试》中我讲述了我在面试上的经历和看法,而对于软件行业的面试很多都要求被面试者解决一些编程上的问题。这类面试有很多名字:算法题(Algorithm Question)、编程题(Programming Problem)、考代码(Coding Interview)等等,但基本形式都是:给出一道问题的描述和目的,要求写出程序能够接受相应的参数然后完成目标需求最终得到结果。

大部分常见的这类面试问题都被大家总结在了网上,可以直接搜索找到,或者在一些论坛的特定板块(比如未名空间的待字闺中,一亩三分地的面经)里见到讨论,甚至形成了在线测试网站(比如LeetCode、LintCode)直接验证程序的正确性。

由于面试题目的公开性,造就了软件行业特殊的面试准备过程:刷题。很多朋友也会问我:“出去面试还刷题吗?”准确地讲,我刷过算法题目,也经常后悔没有早在还在学校里时就开始刷题,那样就能更早地进入心仪的公司。但现在出去面试前基本都还是忙着正常的工作,不会专门去练习题目。

刷题的目是理解算法和数据结构

好比读书的时候每次老师教授了新的知识后都会布置习题,完成那些作业可能会让我们在考试中碰到原题而拿到高分,但正真的作用是帮助我们理解和消化所学的知识。从简单的理解:“程序=算法+数据结构”,要写好程序就必须去熟悉算法和数据结构,刷题就应该是完成这样的作用。如果题目做不出来,就说明连最基本写程序的能力都没有,自然很难得到公司的青睐。

我常常幻想如果我高考没有失常,能进入更好的学校学习计算机知识,甚至参加ACM小组,得到老师在算法上更好的点拨指导,也因为要参加计算机竞赛,我也会练习更多的题目,现在就不需要刷题了。但现实是在我就读的大学里,算法只是一门选修课,我也没有参加过任何计算机竞赛。但联想高中数学竞赛的培训过程,老师肯定会分类进行知识传授和练习。所以刷题也一样要分类进行强化训练。

LeetCode虽然是最火的题库,但是在我刷题的时候它只是简单的罗列一百多道题目(可参看我的不完全题解列表),所以当时我更倾向去做UVa上的题目。那上边有上千道题目,肯定是不可能做完的,但是有比较好的分类专区,可以专门的加强某一特定算法和数据结构的基础知识。

一开始我连最简单的二分查找(Binary Search)算法都写不好,但是在反复练习之后,我也能总结出二分法的实现,并汇总一些变形题目到博客里。刚毕业那会找工作,好多次面试都挂在了二叉树(Binary Tree)上,后来做遍各类遍历算法,总结了不同的实现方式,就不再担心关于树的操作。动态规划(Dynamic Programming)在我看来是面试时会碰到最难的问题,后来我发现这类问题的关键在于找到类似于数学中的“递归公式”,这样就可以找到递归的实现,之后利用空间来存放中间值来减少时间复杂度。
Read More →

2015-12-11
11 December
On December 11, 2015
In IT Products(数码产品), Programming Life(程序人生)

我不是传说-关于《炉石传说》游历

2014年一月,《炉石传说(Hearthstone)》进入beta测试。我向来对暴雪的游戏非常喜欢,时而不时的会拿出《暗黑3》和《魔兽争霸3》来玩。不过我并没用玩过《魔兽世界》,主要是当年沉迷《传奇》这款网游造成的阴影面积过大,所以我对需要充点卡的游戏,我都是拒绝的。但是出于对《游戏王》的喜爱,而且自己当时所处的游戏公司里又有很多人在玩,我也毅然加入了《炉石传说》之中。
Read More →

2015-11-23
23 November
On November 23, 2015
In Knowledge Base(心得笔库), Programming Life(程序人生)

谈谈面试

一般人投入面试都是在需要换新的工作的时候才去,但我即使有着一份稳定的工作也会常常跑去面试一些感觉不错的公司。当你没有工作的时候,比如刚刚从学校里出来寻求一份生存的根本,和处在所谓的骑驴找马的状态去面试的心情是不太一样的。而即使找到了一匹好马,偶然出去面试一些公司也是非常有意义的。

首先不要浪费了每年免费的面试机会。很多公司对于没有成功的面试者都会关一年的“小黑屋”,这个意思是在这段期间内再申请公司内的职位将不被理会。很多人都想去大公司,但是又怕会面不上,所以我经常听到说“我先拿小公司练练手,再多刷刷题再去面大公司”。这没什么错,但是又怎么能保证练完手刷了题就能面上了。所以我个人更倾向当机立断地将简历投向这些心中的“梦想公司”(对于写简历和投简历又是另一门学问,可自行网上搜索)。如果有幸拿到了那些公司的面试,反而会更有压力,让自己变得更加积极地去准备面试。而且一般大公司的面试流程都很可以拖成几个月相信足够去针对性地了解这家公司常见的题目和面试形式。即使说因为种种原因没有成功,这样的一次亲身经历也有利于提高下次的表现。所以我总是会这样看待一家公司的面试“今年又有免费面试的机会了不能浪费了,今年不行明年还能再来”,而不是“面试的机会很宝贵不能浪费了,等准备好了再去”。另外,这些大公司对你的简历是真的会留底的,recruiter在找人的时候有可能真的会再翻出简历然后打电话给你。我现在就职的Twitter就是这样,最早联系上的时候一轮电面就再没有消息(残忍的默拒),半年后接到电话说Mobile组有空职,我当然兴致勃勃地又去面了然后加入了Android组。其他几家大公司,我也有类似的经历,先后失败了2、3次,现在都得到了到这些公司任职机会。
Read More →

2014-06-24
24 June
On June 24, 2014
In Front Interface(界面构想), IT Products(数码产品), Mobile Development(移动开发)

Amazon的Fire Phone之于Android开发者

在上周Amazon也耐不住加入了手机竞争行列之中,发布了自己的Fire Phone,于是Android家族又多了一位变种成员,Android系统的碎片化程度也进一步加剧。因为工作的关系,我有幸在上个月就得到了一部工程机为其做提前开发,不过因为政策原因所以到现在才能来谈谈对这部新手机的看法。

对于Fire Phone的功能以及外观,官方网站和各家技术网站都有了详尽的介绍和报道,再者因为我拿到的是工程机,无法体现到完备的功能展现,因此本篇文章谈的主要是Fire Phone对于开发者而言所要面对的问题和状况。
Read More →

2014-02-28
28 February
On February 28, 2014
In Programming Life(程序人生)

他们的现在,可能是我的将来

四年前,我还是个刚刚参加实习没毕业的学生,跟着老板学到了好多东西。而现在我离开校园工作了差不多快两年。在工作中,除了不断自我学习,网上搜索答案,很多时候也得到前辈同事的指点和帮助。当他们开始写代码的时候,我可能还在上初中,他们的经验和经历可能各不相同,而我要走的路也不会跟他们完全一样。但是身在同一个行业里的同一种职业上,他们走过的路也多少让我了解,在哪条路我能奔跑起来,在哪条路上我会陷入泥潭。
Read More →

Posts pagination

1 2 Next
Facebook
Twitter
LinkedIn
RSS
ZhiHu

Recent Posts

  • 三年居家工作感受
  • Pixel Watch智能手表和Pixel 5, 6 Pro 及 7 Pro手机
  • 我拥有过的无线耳机
  • 毕业工作一个月,我差点被开除
  • 我拥有过的移动硬盘
  • ProtoBuf 2.0 method count optimization for android development
  • 面过100场行为面试后

Categories

  • Algorithm Analysis(算法分析)
  • Article Collection(聚宝收藏)
  • Data Structures(数据结构)
  • Design Patterns(设计模式)
  • English Posts(英文写作)
  • Front Interface(界面构想)
  • IT Products(数码产品)
  • Knowledge Base(心得笔库)
  • Language Tips(语言初试)
  • Mathematical Theory(数学理论)
  • Mobile Development(移动开发)
  • Programming Life(程序人生)
  • Reading Notes(阅而后知)
  • Software Engineering(软件工程)
  • Special Tricks(奇技妙招)
  • Tangential Speech(漫话杂谈)

Tags

Aero Android API Bash Binary Search Bitwise Operation Book C/C++ Career Chrome Conference CSS Debug Device DOM Extension Framework Game Gradle Hearthstone HTML Initialization Intellij Interview iOS Java JavaScript jQuery Keyword Language Issues Mac Microsoft Mobile Modifier Objective-C PHP Principle Reference Regular Expression Static String Tools Tutorial UI XML

Blogroll

  • Ahmed's Blog
  • Gert Lombard's Blog
  • Gordon Luk
  • Jack & Allison
  • 开发部落

Archives

Designed using Chromatic. Powered by WordPress.