Posts in category “Essays”

What is good code? and what attributes do you think an ideal software developer demonstrates?

I was asked those questions recently and the following is my answer:

What is good code?

Good code has at least the following characteristics:

  • Good code has good readability, so it is easy to understand.

    • Good code is well organized, a clear and reasonable directory structure with meaningful filename is the basic element of good code.
    • Every class, method, variable has a deliberate and meaningful name. You can know the purpose of an identifier through the name at first glance.
    • Methods should be short, every method should only do one thing.
    • Good code does not use magic numbers and hard coded strings.
  • Good code has automated tests, so it is easy to maintain or change.

  • Good code has a good architecture, so its components can easily be replaced by another.

  • Good code has explicit dependencies.

  • Good code has good performance.

    • It does not do database queries or other time-consuming jobs in a loop.
  • It should use a queue for certain situations

  • It should use a full-text search engine instead of the 'LIKE' query on the database.

  • If part of the code is really complex, a carefully written comment would be helpful. By the way, do not forget to update the comment when you change the code later.

  • Good code is highly cohesive and low coupling. Components should be well defined, that is, they are self-contained with one and only one purpose. Each component should know as little as possible about another component.

  • Good code is modular. The Business logic (the controller) should be separated from the data storage layer (the model), while the view layer should be separated from the controller layer.

What attributes do you think an ideal software developer demonstrates?

  • They should always have enthusiasm for programming, which means that they programming not only at work.
  • They should know Linux or macOS well. I mean they should know the command line well.
  • They care about the user experience.
  • They are responsible and willing to do their best to meet the deadline.
  • They are knowledgeable, I mean they know not only programming, they have wide knowledge in various fields.
  • They love sharing and teaching, or mentoring. I mean they are kind to newbies.

What do you believe is the difference in behaviours and skills between a Senior Software Engineer and an Intermediate Software Engineer?

  • A senior engineer not only knows how to code or how to implement a feature but also knows how to code in a better way. They not only implement a feature, they help refine the feature. I mean they do extra work to make the feature better.
  • Senior engineers know how to plan, separate big tasks into smaller ones, and can recognize which task has the higher priority.
  • Senior engineers not only program, they help other engineers grow up. They do mentoring, tutoring, or teaching in a team.
  • Senior engineers are people beyond the bounds of skillset. They could be a potential leader, or just a leader without a title.

书摘 《半生为人》

豆瓣链接

14年底读了这本书,这是当时的书摘。

2014-12-20 18:12:12 这一切都始于那个周日的午后,始于偶然回首的一瞬间他那冷峻而若有所思的样子对一个女孩儿的触动。

2014-12-20 18:13:34 赶二十里路用饭盒带粥,这样的事恐怕只有他才做得出来。 注: 此言差矣。沉浸在爱情中的小年轻,什么都做得出来。

2014-12-20 18:15:37 他们有时候海阔天空,国事家事天下事无所不谈;有时候话又很少,可贵在于“一切尽在不言中”的默契。

2014-12-20 18:45:57 现在我们上哪里去寻找当年的圆明园、丁家滩、十渡,又怎样才能促成当年那种背着瓶啤酒,带着干面包,在野外玩儿童年时的游戏的郊游呢?

2014-12-20 18:48:15 上午参加一个朋友的婚礼,我为他高兴,可是晚上回到家里又得知另外一个朋友被判处死刑,我的心情是可想而知的。然而,又能怎样,这就是生活。

…more

我的微博自选集 (2013)

13年5月的时候,我整理了那年3月和4月的微博。我记得为了整理微博还专门写过一个网页工具。也许有一天能把它捞出来做成一个通用的工具。

3月


相册就是相册,照片就应该是绝对的主体。

更新Blog的Blogger越来越少, 说明什么问题?

来Lava超群,创建你的独立微博站点。 Lava超群个人站,超群站,都要支持RSS全文输出。 甚至我们可以在每篇文章的末尾提供付费支持链接呀!(申请微收款功能)

烦恼的时候,要忏,不要怨。

…more

我的微博自选集 (2012)

2012年,我基本就只在Lava微博发贴了,那时Lava微博已经能够自动将微博同步发表到饭否、新浪微博还有腾讯微博等7,8个平台。到13年年中的时候,Lava微博开始转型今天的校内外。一直到2018年我离开公司,我不间断的在这个平台写东西。出发点只是为自己,当然倘若同时能帮助到其他人,不亦美哉!

2012年整理好的就这些。没有9月和10月,也没有12月。也许只是懒,当时没有整理。

1月


【告诫各位女生】 男生就像大食堂里的菜,虽然难吃……但是……但是…………去得晚了居然没了! 发表于:2012-01-01 00:11:19

快速学习是一个伪命题。只有一小时一小时的学进去,持续不断的投入,方能达成目标。好的方法能适当加速这个过程,不过别忘记,找方法也需要时间。多读书,多了解,能节省一些试错的时间,如果你选书得当,读得够快,并且能充分吸收的话,算是同样并不轻松的捷径。 发表于:2012-01-01 13:45:39

开放的社会让人们可以集合记忆,自由交换记忆,进而比对记忆﹑发掘其中的错误。//一个自由开放的微博系统,即是这样一个社会。 发表于:2012-01-01 15:23:31

在一个“大者恒大”的世界里,找到自己的风格,坚持自己的风格是“弱者”的生存之道。#故事照亮未来# 发表于:2012-01-01 15:30:44

#故事照亮未来# 高科技产业上的决战点,不见得一定是谁网罗了最多最优秀的研究﹑营销人才。许多公司的崛起,靠的是明白单纯的风格﹑个性,企业环绕着一种风格,建构其管理锁链﹑孕育其组织节奏,这种公司显然比较容易找到市场上的利基,集中焦点把事情做好,也相对能禁得起景气的波动变化。 发表于:2012-01-01 15:39:11

一个人使用鼠标的方式可以反映出他的思维速度。脑筋转动越快的人,越倾向于使用键盘而不是鼠标。那些思维活跃,前途无量的家伙基本上都是手不离键盘。 发表于:2012-01-02 19:46:48

…more

我的微博自选集 (2011)

2011年那一年,我正带领一个小团队在点击科技开发 Lava微博。那也是我玩微博很疯狂的一年。那一年结束的时候,我有了一个想法,要把一年零散写下的微博里,把值得留存的部分集中起来,发表到当时支持长微博的 Lava微博。这个保存工作至少花了我数个小时,但它是值得的。看,这里保存着十年前的我。

2011年3月


"明哲保身", "事不关己,高高挂起", "各人自扫门前雪,谁管他人瓦上霜" 这些思想害了中国5000年, 到今天仍然有很大的市场. 请大家记住, 只求自保, 一定保不住自己. 普及公民教育, 唤醒公民意识, 刻不容缓. 3月1日13:23 来自新浪微博

据说: 很多人梦想和目标不能实现的原因有两个:晚上下不了网, 早晨起不了床。 3月2日13:59 来自新浪微博

葛剑雄教授:知识分子多少有点知识,这是他们的幸运,也是他们的不幸。有了知识,就想有运用的机会,就不会满足于有饭吃,有衣穿,有妻子儿女,这就是所谓实现自身价值。在皇权垄断一切的社会里,要实现自身价值,舍做官就别无他途。可是做了官就只能服从法律和上司,就绝对避不开现实政治。疾恶如仇会有党人那样的下场,洁身自好或许能做到,却因此而一事无成,同流合污又有违初衷,而不齿于士林,急流勇退倒也干脆,但原来的理想也随之成为泡影。 3月4日19:42 来自S60客户端

顾准语录:要像小孩捡石子一样为自己收集知识财富。一个人在任何时候都要为自己寻找一个目标,即使明知道这个目标是自欺欺人的,也要向着这个目标奋斗,否则你的生活就没有中心。 3月5日11:02 来自S60客户端

…more