ARTS 打卡第三十一周(2024.4.1~2024.4.7)

101 阅读6分钟

1. Algorithm 每周一道算法题

本周算法题为随机链表的复制

本题比较有趣的点是以前我是用 map+数组 来解决的,但是最近重做时发现仅 map 即可,用 map 保存新老链表节点对应关系即可实现题目的复制要求

2. Review 阅读一篇英文文章

本周在 reddit 上看到一篇文章# Is Java really that bad??(Java 真的那么烂吗?),感觉比较有趣,下面摘选两位网友的回答:

【v0gue_】:

Java is boring, verbose, boilerplate-y, and "monotone-y". This means a few things:

  1. A lot of developers are going to hate it
  2. Enterprise is going to love it
  3. It's great for learning programming
  4. It's great for many devs of many backgrounds and skill levels to contribute to and maintain.
  5. Because of 2 and 4, getting half-decent at Java means perma-job security anywhere, anytime

FWIW, I wrote java professionally for 5 years. I don't really miss it, but I'm very, VERY grateful about how well being a professional Java developer has set me up from a career perspective. I'm also grateful knowing and understanding Java when it comes to using languages like Clojure, which I like to do on my non-professional development.

Java是乏味的、冗长的、充满样板代码的,而且"单调的"。这意味着几件事情:

  1. 很多开发者会讨厌它
  2. 企业会喜欢它
  3. 它非常适合学习编程
  4. 许多背景和技能水平的开发者都可以为其做出贡献并进行维护,这点非常棒。
  5. 由于第2点和第4点,掌握Java到一定程度意味着永久的职业安全,无论何时何地。

顺便提一下,我写了5年的Java。我并不是特别想念它,但我非常、非常感激作为一名专业Java开发者,从职业角度给了我很好的启蒙。当我在非专业开发时,了解和掌握Java也使我感激不尽,比如在使用像Clojure这样的语言时。

【superluminary】:

Java is not bad, but it is fussy, verbose, highly structured, and it has certain ways of doing things baked into the language itself.

It’s really great if you have a distributed team of mixed ability developers because it’s quite difficult to make a big mess. When you write Java code there’s a wealth of best practices to draw on.

Contrast with JavaScript which has very few rules and essentially lets you code how you like. It’s very easy to make a big mess in JavaScript if you don’t know what you’re doing. The upside is that you have dozens of different paradigms available to you, and we’re inventing new ones all the time.

The language you pick will depend on what you want to build and what type of person you are. When I write C I feel like a god. When I write JavaScript I feel like a pirate. When I write Java I feel like a skilled stonemason building a cathedral.

Java并不差,但它很挑剔、冗长、高度结构化,并且语言本身内置了一定的做事方式。

如果你有一个能力不同的分布式团队,那Java就非常棒,因为很难搞砸。当你编写Java代码时,有丰富的最佳实践可供借鉴。

与JavaScript形成鲜明对比,JavaScript几乎没有规则,基本上让你按自己喜欢的方式编码。如果你不知道自己在做什么,很容易在JavaScript中搞砸。好处是你有数十种不同的编程范式可供选择,而且我们一直在创造新的范式。

选择的语言将取决于你想要构建的东西以及你是什么样的人。当我写C时,我感觉自己像是一个上帝。当我写JavaScript时,我感觉自己像是一个海盗。当我写Java时,我感觉自己像是一个技艺娴熟的石匠在建造大教堂。

3. Techniques/Tips 分享一个小技巧

平时工作中积极主动接领导的话,不要感觉这样是拍马屁什么的,这是为了你后续工作打好基础,主动帮领导解决问题,让领导了解你,并且从而形成正向反馈,形成正循环,这样比你埋头苦干要好很多,能让你少走很多弯路,更快的在职场中站稳脚跟、快速晋级

4. Share 分享一个观点

最近在对自己职业生涯进行复盘,发现自己性格问题导致无法获得好绩效,具体表现在不会主动承担责任,你分配给我的工作,我帮你做好,甚至是一些调研性的无人做过的事我也能竭尽全力做好,不延期不出问题,我一直认为这种做法已经够了,最好分内之事,但是最近一次绩效交流却让我懵了。

在新公司做的事很多,也没出太大问题,但是最终绩效却不好,本来还挺生气的,但是回家自己复盘后,发现如果我是老板,我很大可能也会把低绩效给自己,原因有几点:

  1. 不主动,工作仅作自己分内之事,领导很多时候抛出来的问题不会主动去接,一个是怕麻烦,因为自己的事很多,除了工作还有学习和生活,并且内心深处也会担心事情做不好,搞砸了,所以基本不会主动去为领导解决问题
  2. 不合群,平时工作中交流没问题,但是由于住的很近,每顿都回家吃,基本没跟同事一起吃过饭什么的,而且领导喜欢的德州也不会,有些同事跟领导玩的很好,经常晚上打牌什么的,这关系比我不知道好哪儿去了
  3. 不分享,平时积累的经验很少在组内进行分享,除了合作过的同事,其他同事基本不太了解技术水平到底如何

经过分析后发现自己问题还蛮大的,如果我是领导,在领导眼中的我可能就是一个小透明,基本没太大印象,不帮我解决问题,吃饭打牌见不到人,技术也不清楚具体有多好,只知道没出过岔子,我要给低绩效不给我给谁?

所以还是需要改变的,工作不能按照自己的想法来,很多人包括以前的我都很讨厌一个词:向上管理,其实工作中还真就需要学会向上管理,要学会跟领导处好关系,同时帮助领导解决问题,这样领导才会信任你,才会将重要的需求交给你来做,然后你才能得到好的结果,这很正常,人性如此,换作是谁我想都会找自己更熟悉的人来做事。

我这算是走了几年的弯路了,希望各位看官中刚接触工作,或者对于工作该如何进行感到迷茫的人,能有点帮助、启发。