作者中间还谈了少儿编程的话题,与我日常生活离得比较远,快速翻过去了。总的来说,本书有些章节谈的比较详细,观点表达的完整,有些就说的比较简略,值得一看。

豆瓣地址:

https://book.douban.com/subject/27016319/

下面是一些书摘:


谈职业生涯

谈个人能力的提升:

对于公司的价值来自于你的不可替代性,那又该如何有效提升它呢?我的建议是尽可能持续做一件事。这既是指技术上的积累,也是指你能完整或较长时间参与同一个项目或开发一个产品。虽然,有时候你所做的工作并非你个人所能决定,但你仍需要有意识地去主动把握那些能让你持续积累技术或项目经验的机会。

严谨是程序员的基本素养之一,也是声誉的保证

除了那些经常挂在嘴边的诚实守信、踏实肯干等之外,有一点特别重要,那便是严谨。因为它往往是判断一名程序员是否具备优秀潜质的重要因素。严谨的程序员对于分配给自己的任务会认真理解,对于自己的产出会仔细检查,这些都能大大减少工作中的出错概率,给团队或公司中的其他人留下良好的印象。你可能需要很长的时间来建立自己的声誉,而一次因不够严谨所导致的错误,就可能让你彻底失去它。

谈写作和写代码

写作和写代码一样,都要求我们去遵循一定的规则和规律,你需要懂得:语法:我们都知道写代码时,需要遵循所使用的编程语言的语法。如果语法不对,那么代码根本无法成功编译。同样,在写作中,你需要遵循中文语法,包括正确使用断句、标点、段落等,这些都是在写作过程中最基本的要求。逻辑:没有逻辑的代码,会漏洞百出,甚至会造成系统的严重缺陷。同样,文章的前后章节或所写的故事也需要遵循一定的逻辑,没有逻辑的文章会让人觉得不知所云,从而放弃继续阅读。修饰:文章需要通过一些表达方式(议论、抒情、描写等)或修辞手法(排比、比喻、对比、夸张等)来使文章更加生动有趣,没有修饰的文章就像没有界面的软件,让人觉得枯燥、乏味,失去阅读的兴趣。


自我推销是打开职业上升阶梯的钥匙

有些人是由于自己内向的性格才选择当程序员的,但你需要明白,你写的代码可能毫无用处,直到:

  • 人们理解你在做什么。人们对你所做的事情感兴趣。

  • 人们为你所做的感到兴奋和激动。

自我营销往往能够有效地放大你所做的努力,并且在你成功的道路上起到催化剂的作用。尽早地获得成功对于我们这一代程序员来说异常关键,因为这个世界上有许多与你一样努力的人,但有些人在最佳的时间点获得了成功,而另一些人虽然也通过努力达到了相同的能力,但错过了那个正确的时间点,从而走上了一条完全不同的道路。

真正优秀的程序员,对问题有充分的理解

而那些真正优秀的程序员在与用户进行沟通时,总是试图去理解用户所提出需求背后的真正原因,因为他们知道用户往往会按照自己对问题的理解去给出他们认为正确的方案,而很多情况下,他们所给出的并不是正确或是最优的。那些优秀的程序员会站在用户的角度,认清问题,并像专家一样给出他们认为最优的方案。


谈实践与认知

使用 MVP 的方式开发产品,验证产品的可行性

我尽可能省略了一切不必要的网站功能,也没有写任何文档,这使我能够以最快的速度将这个Web应用实现出来。这种方式也是目前增长黑客们所普遍采用的一种做法:快速搭建出一个具备核心功能的应用原型——MVP(MostViableProduct,最小化可行产品),来验证自己的业务模型,然后再根据用户的需求和反馈来不断进行改进。当然,随着项目规模的不断扩大,以及更多团队成员的加入,我们可以回过头来再去补齐那些在前期遗漏的文档。记住,仅当确认文档能够产生价值时,才去编写它们。

谈敏捷开发,每隔几年就会出现新的方法论,不要盲目跟风,要考虑是否真的适合所在的团队

我曾作为甲方参与由一家知名咨询公司所组建的开发团队,团队的任务是开发一套集团内部的电销核心系统。这个开发团队号称采用了Scrum的管理方式和流程。但我很快发现,那些所谓的Scrum方法往往只是停留于表面的形式而已,比如,每日的Standup晨会,团队成员们只是例行公事般报一下流水账,而在开发过程中采用更小的迭代及每日集成等方法,同时,由于团队成员技能的参差不齐,而经常导致项目版本的延误,或者因不必要的等待造成的开发效率低下等问题。与之类似,诸如结对编程等在国外流行起来的开发方式,我也几乎从未在国内开发团队中看到成功的实施案例。

如何写出好的代码

开发模式:规则 + 例外

在项目进入开发阶段前,就将那些开发过程中会遇到的相同类型的问题进行分类,并为它们创建统一的模式(标准的处理方式),比如:

  • 使用什么结构来表示数据本身。
  • 采用哪种机制来进行数据加工。
  • 如何进行统一的错误处理。
  • 会话的管理及使用策略。
  • 哪些地方需要记录日志。
  • 包与方法的命名NameConvention。

在项目的进行中,我们也需要不断地去识别那些带有共性的问题,并为它们建立新的模式,然后再推广到项目中。我发现,比起那些僵硬的规范,程序员们更乐意去理解这些模式,并把它们视作项目中的最佳实践,在开发中加以遵守。

理解所使用的框架

在大多数情况下,构建应用框架的目的并不是为了给开发者提供一个比Spring更强大的框架,恰恰相反,它们在大多数时候,是为了限制框架的使用,而使整个系统变得更加标准且易于维护。你需要理解这一点,并在开发时尽可能使用应用框架所提供的标准方法。如果框架无法满足你的某些需求,那么可以尝试与架构师沟通,是否需要对应用框架进行扩展,或找出合理的解决方案。

不要使用过多的技巧

当我们的技术水平有所提升后,会不自觉地想着去使用一些不太常见的技巧。使用这些代码往往能够以非常Cool的方式快速解决问题,但如果这样的代码过多,也会让系统变得难以理解。

谈自学设计

作者归纳了十项设计技能:

我将所需要掌握的基本设计技能归纳为以下10点:

  • 色彩:需要理解色彩的基本原理及配色方法。色彩很难把控,因为它很容易被过度使用。如果你还是一个初学者,那么应尽可能地使用柔和的色彩,仅在需要强调的地方使用更醒目的色彩。
  • 字体与排版:文字往往占据整个设计内容80%以上的区域,所以理解如何使用正确的字体和排版方式非常重要。请将内容的清晰易读作为你定义字体和做排版的首要目标。
  • 动效:动效能够显著增强一个应用的用户体验。它们能使你的应用更有生气和迷人,前提是你所设计的动效快速、流畅,并且是符合用户预期的。
  • 图标:优秀的图标往往与我们每天见到的事物紧密关联,比如,相机、垃圾桶、云等,能让人一眼就识别出它所代表的功能。因此,应使用那些具有良好辨识度的图标,避免让用户产生混淆。
  • 声效:声效在设计中用得很少,但恰如其分的声效能够提升用户体验。用户不用看到你的应用,仅听到一个熟悉的声音便能识别出你的产品来。
  • 获得设计灵感:设计灵感不是与生俱来的,你需要不断地寻找它。有很多获得设计灵感的方法,下文中我将分享我的一些经验。
  • 设计原则:流行转瞬即逝,但设计中最本质的东西却能永恒。设计大师们很早就认识到了这些,并将它们提炼为设计原则。你要做的是理解这些设计原则,并将它们运用到你的设计之中。
  • 用户体验设计:你需要了解你的用户,这样才能设计出符合用户需求的产品。学习设计心理学,将有利于你设计出更人性化的产品。
  • 基于不同平台的设计:在不同平台设计产品存在很大的差异,你需要了解产品所在的平台(如iOS、Android),并遵循它们各自的设计规范。
  • 设计工具:设计工具有很多,对于UI设计,我建议使用Sketch3,因为它是专为UI设计而生的,能给你带来更高的设计效率。

不好的设计

不好的设计来自所谓经验和不用心虽然有些系统一眼就能看出是经过设计的,但为什么用户还是会感觉系统不那么好用呢?其实,大部分设计师们只是在凭借经验去应付一个又一个布置给他们的设计任务,而没有真正用心地去思考设计。大多数企业级产品的开发团队只会配置极少量的设计师,而他们每天都需要完成一堆设计任务,为了按时交付,他们不得不选择那些不易犯错的设计,而不会进一步思考这样的设计是否最适合?很多开发团队仍然将设计师视为一个辅助角色,这必然导致系统设计水准的低下。因为,好的设计是需要充足时间反复试验,排除那些不好的设计后才能得到的。只有鼓励设计师们打破那些构建在原有认识和经验上的东西,才能得到真正优秀的设计。而作为团队的负责人,我们也应该给予设计师们更多的时间和主导权去进行创造。因此,我建议团队中设计师与开发人员的比例应得到相应的提高,达到1∶8甚至是1∶6,只有这样,我们才能真正从设计中获益。

一个个冷冰冰的系统看看我们每天都在使用的那些企业内部系统,你是不是也觉得它们只是一个个毫无生趣、冷冰冰的工具呢?或许由于大部分系统都是这样,所以你也已经习以为常,甚至觉得企业级产品就应该是这样的。但最近几年,随着云计算的普及,以及更多优秀Saas平台的出现,这种情况正在发生改变。比如,我所在公司使用的Salesforce、Concur这样的系统都经过了重新设计,它们变得更加易用,也更人性化了,虽然它们仍被用来满足特定的工作需求,但这些系统已经从单纯的工具,变成了工作中的好助手、好伙伴。这些优秀的系统正从单一的信息化(数字化)向智能化、情感化转变。今天,当我们也要去创造一个全新的系统时,也不应停留在原有的产品设计思维中,你的系统除了应提供那些业务功能之外,更应为你的用户提供舒适、愉悦的使用体验。

谈设计不能脱开用户的情景

设计师们常常会把设计原则、用户体验,情感设计等设计流行语挂在嘴边,并时不时地强调设计的功能性。这些设计思想和理念本来都是正确的,但问题是这些都是站在设计师的角度去提出的。而在我看来,那些被证明优秀的设计其实并不深奥,它们总是以最佳的方式将用户置回他们真实的工作或生活情境中。



blog comments powered by Disqus

Published

2019-08-16

Categories


Tags