成长的捷径

希望可以帮助到需要的人。

成长的捷径

● 入职伊始谦逊的态度是好的,但不要把“我是新人”作为心理安全线

● 写一篇技术博客大概需要两周左右,但可能是最快的成长方式

● 一定要读两本书:金字塔原理、高效能人士的七个习惯(这本书名字像成功学,实际讲的是如何塑造性格)

● 多问是什么、为什么,追本溯源把问题解决掉,试图绕过的问题永远会在下个路口等着你

● 不要沉迷于忙碌带来的虚假安全感中,目标的确定和追逐才是最真实的安全

● 不用过于计较一时的得失,在公平的环境中,吃亏是福不是鸡汤

● 思维和技能不要受限于前端、后端、测试等角色,把自己定位成业务域问题的终结者

● 好奇和热爱是成长最大的捷径,长期主义者会认同自己的工作价值,甚至要高于组织当下给的认同(KPI)

功夫在日常

● 每行代码要代表自己当下的最高水平,你觉得无所谓的小细节,有可能就是在晋升场上杀死你的暗箭

● 双周报不是工作日志流水账,不要被时间推着走,最起码要知道下次双周报里会有什么(小目标驱动)

● 觉得日常都是琐碎工作、不技术、给师兄打杂等,可以尝试对手头事情做一下分类,想象成每个分类都是个小格子,这些格子连起来的终点就是自己的目标,这样每天不再是机械的做需求,而是有规划的填格子、为目标努力,甚至会给自己加需求,因为自己看清楚了要去哪里

● 日常的言行举止是能力的显微镜,大部分人可能意识不到,自己的强大和虚弱是那么的明显,不要无谓的试图掩盖,更不存在蒙混过关

最后一条大概意思就是有时候我们会在意自己在聚光灯下(述职、晋升、周报、汇报等)的表现,以为大家会根据这个评价自己。实际上日常是怎么完成业务需求、帮助身边同学、创造价值的,才是大家评价自己的依据,而且每个人是什么样的特质,合作过三次的伙伴就可以精准评价,在聚光灯下的表演只能骗自己

学会被管理

上级、主管是泛指,开发对口的 PD 主管等也在范围内

● 不要传播负面情绪,不要总是抱怨

● 对上级不卑不亢更容易获得尊重,但不要当众反驳对方观点,分歧私下沟通

● 好好做向上管理,尤其是对齐预期,沟通绩效出现 Surprise 双方其实都有责任,但倒霉的是自己

● 尽量站在主管角度想问题

○ 这样能理解很多过去感觉匪夷所思的决策

○ 不要在意谁执行、功劳是谁的等,为团队分忧赢得主管信任的重要性远远高于这些

○ 不要把这个原则理解为唯上,这种最让人不齿

思维转换

● 定义问题是个高阶能力,尽早形成 发现问题->定义问题->解决问题->消灭问题 的思维闭环(by @玉伯)

● 定事情价值导向,做事情结果导向,讲事情问题导向(by 马俊峰)

● 讲不清楚,大概率不是因为自己是实干型,而是没想清楚,在晋升场更加明显

● 当一个人擅长解决某一场景的问题的时候,时间越久也许越离不开这个场景(被人贴上一个标签很难,撕掉一个标签更难)

要栓住情绪

● 学会控制情绪,没人会认真听一个愤怒的人在说什么

● 再委屈、再愤怒也要保持理智,不要让自己成为需要被哄着的那种人

● 足够自信的人才会坦率的承认自己的问题,很多时候我们被激怒了,只是因为对方指出了自己藏在深处的自卑

● 伤害我们最深的既不是别人的所作所为,也不是自己犯的错误,而是我们对错误的回应

Chez Scheme Debug

下面是我之前翻译的Chez Scheme 的Debug文档


第三章 调试

Chez Scheme 有几个用于调试的功能。除了对经过完全类型检查过的运行中的代码提供错误信息之外,Chez Scheme 也支持对过程调用进行跟踪,中断任意计算,重定义异常和中断处理器,检查任意对象,包括异常的continuation 和中断。

SchemeChez Scheme 的新手程序员,甚至是有经验的 Scheme 程序员都可以参考“How to Debug Chez Scheme Programs” 这个教程。在 http://www.cs.indiana.edu/chezscheme/debug/ 可以找到 HTML 和 PDF 版本的教程。(译者注:此链接在翻译时无法打开 2019/2/1)

3.1 跟踪

跟踪是调试 Scheme 程序最有用的手段之一。 Chez Scheme 可以跟踪任何内建和用户定义的过程。跟踪库会将每一个调用过程的参数和返回值打印出来,通过紧凑的缩进机制来显示嵌套调用的深度。打印非尾递归调用的时候会增加缩进而尾递归调用不会,可以以此区分是尾递归调用还是非尾递归调用。对于嵌套大于等于 10 的调用,会在缩进处有一个括号,其中包括一个数字用于说明嵌套的深度。

这一节会涵盖跟踪过程和控制跟踪输出的机制。

  • 语法: (trace-lambda name formals body1 body2 …)
  • 返回: 一个被跟踪的过程
  • 所属库: (chezscheme)

一个 trace-lambda 表达式等价于一个 lambda 表达式加上一样的语法形式以及程序体,除了无论何时该过程被调用的时候都会向跟踪端口输出跟踪信息。这里使用 name 来命名该过程。跟踪信息会显示过程的参数以及过程的返回值,嵌套的调用会以缩进显示。

下面被跟踪的过程 half 返回整型参数除以 2 的商。

(define half
  (trace-lambda half (x)
                (cond
                 [(zero? x) 0]
                 [(odd? x) (half (- x 1))]
                 [(even? x) (+ (half (- x 1)) 1)])))

对于 (half 5) 这个返回值是 2 的调用跟踪如下

Golang Trace

Go语言的trace包是一个用于追踪程序运行时信息的工具,它可以帮助开发者理解程序的运行时行为,诊断性能问题。trace包主要是通过分析程序生成的追踪文件来工作的。

runtime/trace 包含了一个强大的工具,用于理解和排查 Go 程序。它的功能允许我们生成一个时间段内每个 goroutine 的执行轨迹。通过使用 go tool trace 命令(或者优秀的开源工具 gotraceui),我们可以可视化并探索这些轨迹数据。

trace的魔力在于它能轻易揭示程序中那些以其他方式难以发现的事情。例如,一个并发瓶颈,许多 goroutine 在同一个 channel 上阻塞可能在 CPU 分析中很难看出,因为没有执行样本。但在执行trace中,执行链路的缺失将以惊人的清晰度显示出来,被阻塞的 goroutine 的堆栈追踪将迅速指向问题所在。

https://go.dev/blog/execution-traces-2024/gotooltrace.png

Go 开发者甚至可以使用任务、区域和日志来为他们的程序添加插桩,这样他们就能将自己的高层次关注点与底层执行细节相关联。

问题

不幸的是,执行trace中的丰富信息往往难以触及。历史上,与trace相关的四个大问题经常成为障碍:

  1. trace的开销很大。
  2. trace的扩展性不好,可能变得过于庞大而难以分析。
  3. 往往不清楚何时开始trace记录以捕获特定的错误行为。
  4. 鉴于缺乏用于解析和解释执行trace的公开包,只有最具冒险精神的 gophers 能够以编程方式分析trace。

如果你在过去几年中使用过trace,你可能因为这些问题中的一个或多个而感到沮丧。但在过去的两个 Go 版本中,Golang团队在这四个领域都取得了重大进展。

降低trace成本

在 Go 1.21 之前,许多应用程序的 trace 运行时开销大约在 10–20% CPU 之间,这限制了 trace 的使用场景,不能像 CPU profiling 那样持续使用。事实证明,trace 的大部分成本都归结于 traceback。由运行时产生的许多事件都附带了堆栈追踪,这对于实际识别 goroutine 在执行关键时刻的行为是无价的。

感谢 Felix Geisendörfer 和 Nick Ripley 在优化 traceback 效率方面的工作,执行 trace 的运行时 CPU 开销已经大幅度降低,对于许多应用程序而言,现在只有 1–2%。

摘自《传习录》

“立志用功,如种树然。方其根芽,犹未有干,及其有干,尚未有枝,枝而后叶,叶而后花、实。初种根时,只管栽培灌溉,勿作枝想,勿作叶想,勿作花想,勿作实想。悬想何益?但不忘栽培之功,怕没有枝叶花实?”

机器学习中令人激动的趋势

从 jeff dean的演讲中记录的.

https://www.youtube.com/watch?v=oSCRZkSQ1CE


一些观察

  • 机器学习让计算机不断打破我们对于计算机能做什么的期待
  • 不断变大的计算、数据、模型规模带来了更好的结果
  • 我们需要硬件执行的计算类型快速地改变了

计算机能做什么

  • 图像分类
  • 语音识别
  • 翻译
  • 图像识别和描述

反过来也行

  • 从描述生成图像
  • 语音合成

ImageNet 的图像分类准确度从2011年的50.9% 到2021年的90.88% 语音识别的错误率从13.25%下降到2.5%

趋势

大算力可以极大地改进模型,深度学习改变了我们设计计算机的方式: 针对机器学习优化的硬件越来越高效。

机器学习计算特征

  • 不需要非常高的精度 –降低精度可以提高运算速度,但是不怎么影响效果
  • 特异化的操作—主要是矩阵计算

语言模型的15年历史

2007年, 大规模的N-gram模型,用在翻译算法中。

2013年,词向量技术

2014年,Sequence to Sequence 翻译

2015年, 多回合的神经对话模型

2017年, Attention Is All You Need ,是对15年的工作的并行化优化迭代

2020年,Meena Transformer 架构的对话模型

2022 年,chatGPT

2023 年,Bard Gemini 多态模型

大模型的训练

  • 基础架构 映射物理计算设备 资源的热加载和移除 数据自动路由 高度可扩展性
  • 大规模训练 最小化失败的可能性 最快的恢复时间
  • 训练数据 高质量的数据对于模型训练非常重要

怎么更好地问模型问题

让模型一步一步展示思考过程很有用,思维链模式

模型评估

评估模型的优势和弱势

学术考试和评估

社区门槛的设想

社区的发展和运营经常会面临的问题是: 随着社区发展,社区的质量越来越差,导致高质量的用户渐渐流失。

为了建设一个小而美,持久的社区,需要为加入社区的用户设置一个门槛:

  • 可以是付费加入。
  • 可以是通过域名验证加入,类似Google console 会交验用户的域名所有权一样。

付费加入可以为社区提供基础的运营经费。

域名验证可以提高用户的准入门槛,可以为高质量用户自身的网站引流。

社区可以获得用户高质量的博文,解决流量从哪里来的w