CodingTour
ARTS #205 | 县升市

老家变化很大,从县升到市,街道、基建、路面,还有人,似乎都变得和以前不一样了。

Algorithm

本周选择的算法题是:Split a String in Balanced Strings

use std::collections::HashMap;

impl Solution {
    pub fn balanced_string_split(s: String) -> i32 {
        let mut count_table: HashMap<char, i32> = HashMap::new();
        count_table.insert('L', 0);
        count_table.insert('R', 0);

        let mut substr_counter = 0;

        for c in s.chars() {
            count_table.insert(c, count_table[&c] + 1);
            if count_table[&'L'] == count_table[&'R'] {
                substr_counter += 1;
            }
        }

        substr_counter
    }
}

Review

The End of Front-End Development

作者认为开发者不必担心被 AI 取代,举了几个例子,比如:

  • GPT-4 演示的 demo 虽然可将手稿转化为 Web 页面,但它产出的 HTML 代码已然和当今前端开发者写的代码完全不同
  • 一个完整的工程包含成百上千个文件,也不仅是代码文件,资源之类的文件也有很多,无论是管理还是 debug,复杂性极高
  • 每一个 codebase 都是独一无二的

不过作者挺不厚道,前面刚说前端同学不要焦虑,后面又说如果有取代,那也是发生在后端同学身上。。。

  • 在过去的 10 多年里,很多复杂性已经从服务器转移到客户端
  • 公司通常希望他们的产品是定制的、独特的,是根据他们的品牌精心制作的。 相比之下,后端是不可见的(意思就是可以随便搞?)

我觉得不对,或许是作者自身的技术栈受限,没有意识其中的复杂性。忽略这些观点,其他部分还是有共识的:

  • AI 是增强人,而非取代人
  • 要利用 LLMs 帮助自己学习

AI 的能力往后将进一步放大,那会不会有潜在的开发者担心这一点而无缘无故地放弃了动力呢?希望不会吧。

Tip

Rye,Flask 框架作者做的新玩具,一站式管理 Python 依赖的包管理工具。

Share

关于技术领导力

何为技术领导力?技术领导力重要吗?为什么需要?

个人和公司在本质上一样,都需要保持长期竞争力,对个人来说,技术领导力是:

  • 尊重技术,追求核心基础技术
  • 追逐自动化的高效率的工具和技术,同时避免无效率的组织架构和管理
  • 解放生产力,追逐人效的提高
  • 开发抽象和高质量的可以重用的技术组件
  • 坚持高于社会主流的技术标准和要求

对技术领导力的体现为:

  • 能够发现问题
  • 能够提供解决问题的思路和方案,并能比较这些方案的优缺点
  • 能够做出正确的技术决定
  • 能够用更优雅,更简单,更容易的方式来解决问题
  • 能够提高代码或软件的扩展性、重用性和可维护性
  • 能够用正确的方式管理团队
  • 创新能力

如何才能拥有技术领导力?大致分为这几方面:

  • 吃透基础技术,基础技术是各种上层技术的基石
    • 学习底层语言,越接近底层,越有助于更好的理解和思考
    • 学习编程范式,有助于培养抽象思维,提高编程、程序运行效率
    • 关注算法和数据结构,算法是编程中最重要的东西
    • 了解计算机系统原理,推荐书籍《深入理解计算机系统》
    • 了解操作系统原理和基础,推荐书籍《UNIX 系统环境编程》、《UNIX 网络编程》和《Windows 核心编程》,了解物理世界的“物理定律”
    • 学好网络基础,推荐书籍《TCP/IP详解》
    • 学好数据库原理,了解数据库访问性能调优的要点
    • 学习基础技术架构
  • 提高学习能力
    • 好的基础才能提高学习能力
    • 信息源要好
    • 与高手交流
    • 举一反三的思考,如对比不同语言之间的线程模型等
    • 克服困难的决心
    • 开放的心态,了解方案之间的利弊与优缺点
  • 坚持做正确的事
    • 提高效率的事
    • 自动化的事
    • 掌握前沿技术的事
    • 知识密集型的事
    • 技术驱动的事
  • 严格要求自己
    • 要有敏锐的技术嗅觉
    • 强调实践,学以致用
    • Lead by Example,不断实践,保持对技术细节的敏感度

总结为:

  • 扎实的基础技术
  • 非同一般的学习能力
  • 坚持做正确的事
  • 不断提高对自己的要求标准