=Start=
缘由:
好文赏鉴
正文:
参考解答:
现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查Google边学习;其二是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作。然而这两种方法都有弊病。第二种方法的问题当然很明显,不仅浪费了时间,偏离了目标,而且学习效率不高。因为没有实际问题驱动的语言学习通常是不牢固不深入的。有的人学着学着成了语言专家,反而忘了自己原本是要解决问题来的。第一种路子也有问题,在对于这种语言的脾气秉性还没有了解的情况下大刀阔斧地拼凑代码,写出来的东西肯定不入流。说穿新鞋走老路,新瓶装旧酒,那都是小问题,真正严重的是这样的程序员可以在短时间内堆积大量充满缺陷的垃圾代码。由于通常开发阶段的测试完备程度有限,这些垃圾代码往往能通过这个阶段,从而潜伏下来,在后期成为整个项目的毒瘤,反反复复让后来的维护者陷入西西弗斯困境。
实际上语言学习有一定规律可循,对于已经掌握一门语言的开发者来说,对于一般的语言,完全可以以最快的速度,在几天至一周之内掌握其最常用的50%,而且保证路子基本正宗,没有出偏的弊病。其实真正写程序不怕完全不会,最怕一知半解的去攒解决方案。因为你完全不会,就自然会去认真查书学习,如果学习能力好的话,写出来的代码质量不会差。而一知半解,自己动手土法炼钢,那搞出来的基本上都是废铜烂铁。比如错误处理和序列化,很多人不去了解“正路子”,而是凭借自己的一知半解去攒野路子,这是最危险的。因此,即使时间再紧张,这些内容也是必须首先完整了解一遍的。掌握这些内容之后进入实际开发,即使有问题,也基本不会伤及项目大体。而开发者本人则可以安步当车,慢慢在实践中提高自己。
以下列出一个学习提纲,主要针对的是有经验的人,初学者不合适。这个提纲只能用于一般的庸俗编程语言学习,目前在流行编程语言排行榜上排前20的基本上都是庸俗语言。如果你要学的是LISP之类非庸俗语言,或是某个软件中的二次开发语言,这里的建议未必合适。还是那句话,仅供参考。
1. 首先了解该语言的基本数据类型,基本语法和主要语言构造,主要数学运算符和print函数的使用,达到能够写谭浩强程序设计书课后数学习题的程度;
2. 其次掌握数组和其他集合类的使用,有基础的话可以理解一下泛型,如果理解不了也问题不大,后面可以补;
3. 简单字符串处理。所谓简单,就是Regex和Parser以下的内容,什么查找替换,截断去字串之类的。不过这个阶段有一个难点,就是字符编码问题。如果理解不了,可以先跳过,否则的话最好在这时候把这个问题搞定,免留后患;
4. 基本面向对象或者函数式编程的特征,无非是什么继承、多态、Lambda函数之类的,如果有经验的话很快就明白了;
5. 异常、错误处理、断言、日志和调试支持,对单元测试的支持。你不一定要用TDD,但是在这个时候应该掌握在这个语言里做TDD的基本技能;
6. 程序代码和可执行代码的组织机制,运行时模块加载、符号查找机制,这是初学时的一个难点,因为大部分书都不太注意介绍这个极为重要的内容;
7. 基本输入输出和文件处理,输入输出流类的组织,这通常是比较繁琐的一部分,可以提纲挈领学一下,搞清楚概念,用到的时候查就是了。到这个阶段可以写大部分控制台应用了;
8. 该语言如何进行callback方法调用,如何支持事件驱动编程模型。在现代编程环境下,这个问题是涉及开发思想的一个核心问题,几乎每种语言在这里都会用足功夫,.NET的delegate,Java的anonymous inner class,Java 7的closure,C++OX的 tr1::function/bind,五花八门。如果能彻底理解这个问题,不但程序就不至于写得太走样,而且对该语言的设计思路也能有比较好的认识;
9. 如果有必要,可在这时研究regex和XML处理问题,如无必要可跳过;
10. 序列化和反序列化,掌握一下缺省的机制就可以了;
11. 如果必要,可了解一下线程、并发和异步调用机制,主要是为了读懂别人的代码,如果自己要写这类代码,必须专门花时间严肃认真系统地学习,严禁半桶水上阵;
12. 动态编程,反射和元数据编程,数据和程序之间的相互转化机制,运行时编译和执行的机制,有抱负的开发者在这块可以多下些功夫,能够使你对语言的认识高出一个层面;
13. 如果有必要,可研究一下该语言对于泛型的支持,不必花太多时间,只要能使用现成的泛型集合和泛型函数就可以了,可在以后闲暇时抽时间系统学习。需要注意的是,泛型技术跟多线程技术一样,用不好就成为万恶之源,必须系统学习,谨慎使用,否则不如不学不用;
14. 如果还有时间,最好咨询一下有经验的人,看看这个语言较常用的特色features是什么,如果之前没学过,应当补一下。比如Ruby的block interator, Java的dynamic proxy,C# 3的LINQ和extension method。没时间的话,我认为也可以边做边学,没有大问题。
15. 有必要的话,在工作的闲暇时间,可以着重考察两个问题,第一,这个语言有哪些惯用法和模式,第二,这个语言的编译/解释执行机制。
至此语言的基本部分就可以说掌握了,之后是做数据库、网络还是做图形,可以根据具体需求去搞,找相应的成熟框架或库,边做边学,加深理解。对于一个庸俗语言,我自己把上面的内容走一遍大概要花2-3周时间,不能算很快,但也耽误不了太多事情,毕竟不是每个月都学新语言。掌握了以上的内容,就给练武术打好了基本功,虽然不见得有多优秀,但是肯定是根正苗红,将来不必绕大弯子。就算是临时使用的语言,把上面这个提纲精简一下,只看蓝色重体字的部分,大致能在几天到一周内搞定,不算是太耗时,而且写出来的代码不会太不靠谱。
以上提纲未设及内存模型。对于C/C++,这个问题很重要,要放在显著位置来考虑,但对于其他语言,这个问题被透明化了,除非你要做hardcore项目,否则不必太关注。
参考链接:
=END=
《 “[collect]快速掌握一个语言最常用的50%” 》 有 13 条评论
18条程序设计最佳实践
http://www.code123.cc/2212.html
http://www.artima.com/weblogs/viewpost.jsp?thread=331531
什么样的代码才是好代码
http://www.techug.com/post/what-code-is-good-code.html
http://engineering.intenthq.com/2015/03/what-is-good-code-a-scientific-definition/
http://hongbing.github.io/posts/blog/15/06/17/what-is-good-code.html
`
好代码的Top5特征
Readable(可读性)
Tested/Testable(可测试性)
Simple(简单)
Works(功能良好)
Maintainable(可维护性)
代码是可工作的
代码是可读性高的
代码是简单的
代码是高内聚的
代码是低耦合的
`
编程指南
https://github.com/thoughtbot/guides
https://thoughtbot.com/playbook
`
最佳实践
代码审查
如何 沟通/使用Git/使用开源/…
代码安全
代码风格
`
在线编程挑战网站列表
http://cenalulu.github.io/python/online-programming-test/
谷歌大牛的 C 语言编程建议和技巧
http://blog.jobbole.com/110929/
http://www.lysator.liu.se/c/pikestyle.html
如何高效地学习编程语言
http://lambeta.com/2017/04/18/Techniques-for-Efficiently-Learning-Programming-Languages/
http://www.flyingmachinestudios.com/programming/learn-programming-languages-efficiently/
如何掌握所有的程序语言
http://www.yinwang.org/blog-cn/2017/07/06/master-pl
`
重视语言特性,而不是语言
掌握关键语言特性,忽略次要特性
`
颠覆传统的13条高效学习技巧
https://mp.weixin.qq.com/s?__biz=MjM5NjA3OTM0MA==&mid=2655711284&idx=1&sn=0e890f1cc72c8dc2225052920f3e327a
`
1、备考复习时,不要直接照着笔记复习。可以笔记放到一边,重新整理学习材料,自己想出一套全新的重点概述来,这样做,会强迫你把学习材料全部以一种不同的思路去过一遍。
2、在学习过程中可以多换几个不同的学习场所和环境。换一个完全不同的环境/换一个完全不同的时间段,针对惯常行为的每一个改变都帮忙你把要学的/要练的东西记得更牢固、更清楚一点,帮忙你把记忆保留得更长久。
3、拉开时间间隔:化整为零才能记得更得持久。
每个大学生都尝试在考试前一周疯狂复习,但等到下学期开学之后,就会发现所有的知识都忘了的差不多了。在学习的时候使用间隔记忆,每隔一段时间学习并复习效果会更好。
研究发现,第二次复习与第一次学习之间的最佳间隔,与距离考虑的时间间隔按比例递减。也就是说,距离考试还有一星期,那么最佳复习时间为第一次学习之后的一、两天之内。距离考虑还有6个月,最佳复习时间为第一次学习之后的3-5星期。
4、先考试再学习:利用无知的潜在价值
我们的记忆有一个奇怪的特点,即主动的回想比被动的重复效果要更好。
学到差不多的时候最好先放一放,然后尽量用心去回想刚才的内容。这样的学习效果比直接看书要更好。
5、学习与背诵的最佳时间配比
先花40%时间来阅读和学习。然后凭记忆尽量背诵的效果最好。先花1/3的时间去学去记,剩下的时间用来靠记忆背诵,记忆效果最好
6、学过之后以考试的形式立刻复习,是帮助学生加深记忆的一种很有效的方法。应该多多增加考试频率。
有些类似的考试,尤其是单项选择题的考试,在答错之后很快就能得到正确答案,错误的选择反倒能促使我们学到更多的知识。
7、先猜测后学习使你的大脑能以更高的要求去动作。从而使知识更深刻地印在脑中。预考更容易把知识印在大脑中。
使用这条技能的办法就在,在你开始学习一门新的课程之后,去考试,虽然你会答得很差,但会影响你这门课程的学习效果。或者在每堂课堂开始先考试,然后在课程上讲解预考的所涉及的内容
8、在遇到难题的时候,可以先把难题放到一边,从而给潜意识一个自己去琢磨的机会。我自己经常会在跑步之后,想出几个要写的话题,然后去跑步,等跑完步之后,晚上再开始写的时候,大脑中就会跳出很多想法和素材。
9、休息会为三类:1、放松,比如躺在沙发上听音乐。2、轻度用脑,比如上网 3、高度用脑,比如写短文或想一个另一个课程的作业。 对于数字或空间类的问题,三种休息方法都不错。对于语言类的难题,轻度用脑效果最好。
10、创造性的飞跃,通常出现于创作者沉浸在某个故事或主题一段时间之后 ,暂时放到之时,而且常常以零碎的形式出来,没有一定的先后顺序和大小规则,也不讲究重要程度。
创造性的飞跃有可能是一套宏大、结构严谨的想法,也有可能是一步小小的改进或点子。
11、人一旦被某件事吸引,便会自然产生一种动力想要一口气做完那件事。而这种动力会随着事情临近尾声而变得强度。
当你全神贯注在工作或学习中,他人对你的打扰不但会延长这些工作在你记忆中驻留的时间,而且还会让你在心理上把这项工作提高到“需要优先完成”的位置上。
12、常规的刻意练习是针对某个具体目标,反复重复,但科学家发现运用穿插交替,训练效果会更好。学习也是一样,把新的科目跟学过的、练过,但已经有一段时间没复习的内容混合到一起,学习效果会更好。
13、睡眠起到巩固记忆的效果,千万熬夜复习。研究者认为快速眼动睡眠有助于平复情绪、巩固模式识别和归纳演绎的能力,二阶段睡眠有助于运动机能的学习,三四阶段的深睡眠有助于记忆。每个人的睡眠模式都很类似,其中睡眠后期是二阶段和快速眼动睡眠交替出现,因此识别能力和运动能力的巩固尤其会受睡眠不足的影响。
学习一上午之后,可以在中午或下午睡一小时,所起的作用跟晚上睡8小时是一样的。
`
“面向对象”和”面向过程”到底有什么区别?通俗易懂举例说明
https://www.zhihu.com/question/27468564
`
当软件发展起来后,我们的软件变得越来越大,代码量越来越多,复杂度远超Hello World的时候,我们(面向过程编程)的编写就有麻烦了:函数和数据会定义得非常多,面临两个问题。
首先是命名冲突,英文单词也就那么几个,可能写着写着取名时就没合适的短词用了,为了避免冲突,只能把函数名取得越来越长。
然后是代码重复,比如你做一个计算器程序,你的函数就要确保处理的是合理的数据,这样最起码加减乘除四个函数里,你就都要写对参数进行检测的代码,写四遍或者复制粘贴四遍不会很烦,但多了你就痛苦了,而且因为这些检测代码是跟你的加减乘除函数的本意是无关的,却一定要写在那里,使代码变得不好阅读,意图模糊。
函数式编程 -> 类(减少命名冲突) -> 继承(减少代码重复) -> 抽象、实例化(在保持代码简单的同时也可以很方便对代码行为进行微调)
`
四维阅读法 – 我的高效学习“秘技”
https://mp.weixin.qq.com/s/9O5wP2MY4eJH1mDbRxGDtg
`
四维阅读法包含四个维度,分别是:
· 广度 Breadth,使用思维导图工具输出成果,如 MindeNode。
· 深度 Depth,使用文档工具输出成果,如 Markdown。
· 形象 Imagine,使用图表工具输出成果,如 UML。
· 实践 Practice,使用项目和代码来输出成果、并分享自己学到的知识。
四个维度的方法和使用务必坚持分治思想和职责单一的原则,每个维度只做自己领域内擅长的事情,最终组织成系统的知识结构体系。
`
简述如何写出靠谱稳定的代码
http://www.itechdog.com/blog/create-excellent-development-team
`
* 首先遵循Dry原则,意思就是don’t repeat yourself,不要自己做重复的事情。
* 意识形态要正确:那就是软件是由开发者控制的。开发者需要控制软件,而不是反过来,让管理者、产生负责人控制软件。 唯一能控制软件的人就是编写它们的人。
* 对软件所做的任何变更都应该是简洁快速的,并且是将系统从一个稳定点移动到另一个稳定点。宁可少完成一些内容,但要保证完成的部分质量优秀。一旦部署的内容中有错误,就会影响到生产数据,修复起来代价极高。最糟的情况下,甚至必需重置多年来的数据,这样十分浪费时间。
* 项目中每引入一个不确定因素都是赌博。选择新编程语言是赌博,使用新框架是赌博,采用新的应用部署方式是赌博,了解哪些作法是在冒险,哪些是软件的稳定因素,这是我们控制风险时需要知道的。我们不排斥尝试新事物,但我们一定要控制好风险的范围。
* 每个项目都会有“在这个项目中我们不会解决的问题”列表,列表中的很多东西似乎很有诱惑力,但限定范围会帮助我们明确需求重点,使项目稳定可控。定义好哪些是当下要解决的,哪些是未来需要解决的,并将这些内容放在以后的项目列表中。
* 任何建立在已有系统顶层的项目都需要过渡方案。我们如何逐渐从现有的点过渡到新的系统?大规模部署往往伴随有很多风险,在稳定的环境中,不要冒这种风险。了解数据源是怎样更新的,如何从一个数据源过渡到另一个。开发者必须总能掌控这些问题。
* 系统是为了生产力而构建,也就是说,系统并不是玩具,不能只完成自己那一份,就丢到生产环境不用再操心了。需要考虑如何在生产中配置系统,需要考虑内部依赖,并进行限制,还需要让系统易用、易维护。
* 生产环境与开发环境分离,不得在生产环境进行调试工作。
* 程序的运行是CPU指令的依序运行,程序经过编译成机器码后执行顺序就已经确定,单线程的执行中没有随机性,因此程序运行中的任何现象理论上都是可由计算机专业知识来解释。
* 12-factor理论。
* 系统建立在12-factor理论之上,模块之间要松散耦合,每个模块都有一个功能,并为了让系统的其他部分正常工作,而对这个功能进行管理。模块之间通过协议进行松散的通讯,也就是说在通讯中,各方都可以变更,只要仍旧通过不变的方式进行通讯。在设计协议时要考虑到未来的扩展问题,每个模块在设计时都要考虑依赖,各模块都可以随时替换掉,将其放在另一个系统中需要是仍然可用的。
* 要避免会滋生紧密耦合的深层依赖架构,在模块太过巨大时需要将其作拆分处理,但也要避免一大堆太过细小的模块,要保持复用功能的能力,从而减少依赖,依赖越少,程序越易于维护。
* 中间件只需传递数据,避免中间件对数据进行解析和诠释。
* 系统设计偏好以幂等性实现数据传递的方法,当从已知的稳定状态过渡到下一步状态,如果成功的话,会对一致性进行验证,然后保持在这种状态中,如果失败的话,就会进行重试,再来一次。这点对于分布式系统的尽力交付机制来说特别重要,因为在所有消息中拥有唯一ID,意味着超时状态下可以执行重试,并确保如果在接收系统中拥有执行日志的话,消息就不会被接收系统重复运行。
* 遵循UNIX原则:每个工具只做好一件事情,避免在一个工具中增加更多功能,而是另起一个工具。
* 代码正确比开发速度更重要,代码优雅比开发速度更重要,代码质量比开发速度更重要,其实速度真的不太重要。
* 在执行算法和数据结构优化前要进行测量,确保优化是否起到了想要的作用。构建的系统应当能够在运行时收集自身状态指标,以便优化时作为参考。
* 大多时候对代码格式的讨论是没有意义的,因为标准在制定时也是随意的,之后大家都来效仿。
* Python不太适合大规模并发,因为Python默认解释器CPython实现时引入了GIL(Global Interpreter Lock)。需要明确的一点是GIL并不是Python的特性,像其中的另外一款解释器Jython就没有GIL。由于用了Java实现解释器,也就失去了利用社区众多C语言模块有用特性的机会。
`
灵魂 36 问,让你快速熟悉一个系统
https://mp.weixin.qq.com/s/g7wvEIBa0mK3XbJZ_4ZvRA
`
导读:面对一个完全陌生的系统,如何快速的熟悉并上手?本文将从三个方面进行总结,提供一个系统的方法,同时也可以用来 review 已有的系统,查漏补缺。
开发人员经常会面临下面一些场景:
* 新人入职,需要学习已有系统,作为 landing 的一部分,如何学习?
* 被拉过去参与一个陌生系统的迭代开发或者系统维护(bugfix),如何快速上手?
* 同事离职或转岗,需要把系统交接给你,怎么去接?内心 os:这是一口锅吗?
这样的场景多了,就需要去梳理常见问题以及应对方法,方便后续遇到类似场景可以快速应对。本文总结熟悉系统主要分三部分:业务学习、技术学习、实战。每部分会梳理一些在学习过程中需要解答的问题,这些问题随着经验的积累需要逐步补充完善。
`
一年赚 240 万,他是全世界最成功的独立开发者
https://mp.weixin.qq.com/s/PSwC9ad3I73Fj59LpCW6YQ
`
今天给你介绍一位独立开发者:Pieter Levels,他应该是独立开发者这个圈子里的顶流了。Pieter Levels 在 Twitter 上比较出名,有将近 50 万的关注,在简介中,他直接写着自己几款独立开发产品的收入情况。
我简单算了下,他现在每月的收入已经达到 19 万美元,这些爆款产品包括远程工作网站 Remote、数字游民宜居地网站 Nomad List、AI 摄影师 Photo AI 和 AI 室内设计 Interior AI。
Pieter Levels 是一位自学成才的开发者和创业者,他一个人完成产品的设计、开发和运营。因为工作比较自由,所以他这些年也过着数字游民的生活,曾在 40 多个国家和 150 多个城市生活过。让人羡慕。
昨天早上到公司,我惊喜的发现美国知名的播客主理人 Lex Fridman 发布了一期和 Pieter Levels 对话的视频,时长 3 小时 40 分。下午,我花了 4 个多小时,细嚼慢咽地看完了这期内容。今天写个总结和感触,希望对你有所启发。
1、想做独立开发者,怎么发现产品点子?日常生活中,你可以琢磨哪些事情让自己烦恼,哪些产品构建得不好。之前你可能走马观花地没想过这些问题,但如果你想做独立开发,想构建自己的产品,那就要处处观察和留心。你要去琢磨哪些问题可以通过构建一个产品来解决,然后把想法列出来,并筛选哪一个是靠谱的。
2、独立开发适合那些自我驱动力很强的人。他们不需要别人推动,他们自己会主动去做。即使遇到问题,他们也能够自学,并解决问题,而不是卡在那里等靠要。那些总是靠别人推动的人,那还是去公司工作比较好。
3、开发产品的过程中,要让自己专注于问题本身,听从自己的直觉判断。记得,别不停地问问问,你只有在遇到具体问题时才咨询别人,并且你咨询他们不是为了把问题推给他们,而是为了从他们的角度获得智慧。即使他们的观点最终是你不同意的,你也会从中获得智慧。
4、当开始构建产品时,很多工程师会习惯性地考虑技术问题,纠结不重要的小问题。他们总是控制不住地想使用更新、更好的技术。但其实,技术栈并不是最重要的。重要的是,要确认自己想做的产品人们愿意为之付费。Pieter Levels 的技术栈是 HTML、jQuery、PHP 和 SQLite,够老够弱吧。
5、独立开发者很少能够拿到融资,他必须得一个人搞定所有的事情。这就反过来要求开发必须速战速决,Pieter Levels 常用的策略是以两周时间为单位,快速验证某个需求是否有人买单。有则继续,没有则放弃。总之,验证的速度要快,也要舍得放弃。
6、说到做独立开发,其实很多人的主要卡点还是行动。大家问来问去,左思谋,右犹豫,但却未曾走出重要的一步。这和小马过河的道理一样,自己适不适合,以及有没有机会,下去试试才能知道。并且机会很多时候也是迭代出来的,不会一蹴而就。行动永远是最重要的。
7、Pieter Levels 说,比如他想做一个播客,他不会问 Lex 如何成为成功的播客主持人这种问题。他会直接开始做,找对标,复制他的方法。先模仿,然后逐步加入自己的特色。这就是创造过程,在前人的基础上进行创造。
8、具体构建产品时,要注意分清楚哪些是主要因素,哪些是次要因素。以做播客为例,很多人花钱购买昂贵的录音设备,调整录音环境,他们在这上面花了很多心思。但其实,播客最重要的是内容,特别是在早期 MVP 阶段,应该把注意力集中在最重要的事情上。
9、千万不要有完美主义倾向。完美主义倾向很可能会在无意中给自己制造很多困难,比如你觉得做播客就得买一个很好的设备,也就是说你得先投入一笔钱进去。但这没必要,声音只要清晰就可以了,有的人还可以用 iPhone 拍出来电影呢,他也没用专业的摄像机。快速开始,快速行动,逐步完美。
10、独立开发者最好的做法是一开始就收费。向用户展示产品,并在着陆页上说明你在做什么。如果用户想使用它,就得付钱。作为独立开发者,你没有融资,你没办法像很多初创公司那样先为用户提供免费服务,然后再在某个时机进行付费转化。你没有那么多时间和精力,并且直接收费,这也能验证产品是否命中刚需。
11、Pieter Levels 做过最出名的产品当数 Photo AI,一款利用 AI 技术来生成人像照片的产品。这款产品一个月就能帮 Pieter Levels 挣到 6.7 万美元。Stable Diffusion 刚发布时,他就开始玩,当然,他的玩不是走马观花地玩,而是边玩边思考利用这项新技术可以做点什么。
12、当时,Pieter Levels 感觉 Stable Diffusion 不适合生成人物照片,但在建筑图片生成方面却很惊艳。于是,他迅速先做了一个产品 thishousedoesnotexist.org,点一下,就能生成一个房子。用户可以对房子进行投票,系统来统计哪个房子最受欢迎。不过,这产品没生命力,用户留存不好。
13、在这个失败产品的基础上,Pieter Levels 进一步迭代,把产品方向调整为室内设计:Interior AI,用户上传一张自己房间的照片,AI 来进行设计。Interior AI 推出后获得了成功,到现在两年过去了,每个月都能有 4 万美元的收入。
14、为了优化 Interior AI 室内设计的生成效果,Pieter Levels 开始学习微调。在这个过程中,Stable Diffusion 也在发展,他发现 AI 已经可以基于自己的照片生成不同风格不同场景的人物照片,于是,他受此启发,开始构建 Photo AI。我查了下,那时 ChatGPT 还没发布。
15、Pieter Levels 并不是什么技术大牛,现在构建产品,他用到的技术还是 jQuery 和 PHP,他不会刻意追求新技术,他讲究简单和实用主义。但注意,他不是故步自封,不爱学习,你看 Stable Diffusion 在那么早的时候他就已经尝试了。他学习新技术的目的一定是为了构建产品。
16、至于学习,Pieter Levels 认为行动永远是最好的方法。比如想构建一个网站,那就问 ChatGPT,怎么制作网站,然后一步步的,遇到问题解决问题,在解决问题的过程中去学习,而不是先买两本书,或者三门课,看完之后才动手干。边干边学,边学边干。
17、Pieter Levels 曾经做过七十多个项目,但最后只有四个赚钱。这么算,成功率也就 5%。5%,这个很低的数据也告诉想创业、做副业的人,别幻想一举成名天下知,做好十年寒窗无人问的心理准备。
18、很多人的发展路径是自己赚钱后,就会招聘更多人来一起做事情,比如做市场,或者社区运营。Pieter Levels 的策略是永不招人,这会倒逼他不断自动化手头的工作。他创造了非常多的产品,每款产品做完之后,都可以在不需要人的情况下运转、赚钱。
19、对于压力,Pieter Levels 的看法是,大多时候,压力来自于控制欲。你需要放手,让它自由发展,因为你无法控制任何事情啊。如果你内心拧巴的时候,试着觉察下,自己是不是想控制什么很难控制之事。别有控制的执念。
20、很多人都会幻想自由职业之后的散漫生活,睡到自然醒,再也没有工作压力,没有领导的 KPI,想去哪里去哪里。但 Pieter Levels 认为,限制才会让人快乐。他一直处在创造新产品的状态中,他认为创造性表达是一项有意义的工作,每天都有挑战,每天都试图解决一些问题,这非常有趣。
`