5年产品经理的独白:为什么学习编程让我更加尊重程序员?

在做了五年的产品经理之后,我想学习如何自己构建新产品,以原型化一些想法。作为一名产品经理,我对线框图和一些设计相当得心应手,但我从来不需要自己去构建它。然而,在过去的一年里,我的几个计算机背景的同行提到,知道如何编程真的很有帮助,尤其是作为一个产品经理。我拿了一本Javascript的书(出于好奇),开始自学如何编程,目标是学习全栈开发。

5年产品经理的独白:为什么学习编程让我更加尊重程序员?

我练习了很多codewars挑战赛,然后报名参加了HackReactor(一个训练营),每周花80个小时学习全栈开发。这是一个疯狂的旅程,花了六个月的时间。以下是我在这一路上学到的东西:

1、程序员应该得到很大的赞扬

我一直很尊重软件工程师,但6个月的编程学习让我更加尊重他们。产品没有“小打小闹”,要创造出优秀的产品,需要付出很多努力。另外,要想做出规模化的产品,也需要付出很多努力。我参与的一个项目是为Twitter克隆构建一个微服务,同时要处理超过1000万个数据点(Twitter面对的数据量的一小部分)。即使在如此规模的情况下,优化读取速度、写入速度以及理解系统设计和架构都是很困难的,而且花费的时间比我预期的要长得多。

任何教你“如何在4周内构建twitter”的人都是把复杂的问题过于简单化了。你可能可以做原型,但我们每天使用和喜爱的产品都很复杂。

2、每个人都可以从学习如何讲技术中受益

不要仅仅把编程看作一种技能,而是当作一种语言。无论你的专业是什么,如果你从事技术工作,能够从技术角度说话是很重要的。

像深刻理解什么是服务器,前端与后端如何交互,什么是API,以及我们日常工作的内容是什么构件组成的可以让你更好地理解构建软件所需要的东西。即使你最终没有全职编程,但讲技术的能力真的很有好处,因为我们周围的一切都在变得越来越技术化。

3、不要在尝试一种语言后就放弃学习编程

几年前,我也曾涉足过编程,但一直认为它不适合我。我曾做过《Learn Python the Hard way》,但并不喜欢,所以我没有进一步追求编程的欲望(虽然这本书真的很好,我推荐给大家)。我在高中的时候也上过C语言的课,作为我的第一门语言,感觉并不直观。但是当我开始学习JavaScript的时候,我很惊讶,从一开始就爱上了它。整体的美感和在控制台上尝试东西并看到结果的能力让我奇怪的上瘾。

4、学会编程可以增加学习其他技术技能的亲和力

技术变化太快,大多数新的进步在几年后就会变得无关紧要。这意味着我们总是要随着新技术的发展而快速适应。学会了如何编程,让我能够轻松地接受新的技术事物。在开始这段旅程之前,我总是在某种程度上对它有些畏惧。现在,我的畏惧感已经消失了,取而代之的是一种好奇心,当我想学习新技术的时候,我就会去学习。

5、调试和逻辑一样重要

在过去的几个月里,最令人惊奇的成果之一就是观察到了我解决问题能力的进步。当事情没有按照预期运作时,我已经学会了系统地解决这个问题。在我的案例中,编程的逻辑非常自然,但不自然的是调试。当某件事情没有按照我的逻辑运行时,坐在那里了解原因对我来说并不容易。起初,我有快速放弃的倾向,请同行快速看看或者直接责怪编程环境。随着时间的推移,我学会了冷静地独立解决问题,这和逻辑一样重要(如果不是更重要的话)。理解为什么一个输出和你预期的不同,解构问题,诊断问题的能力是编程的关键。学会了这一点,我就成为了一个更好的问题解决者。

6、学习编程没有一个“正确”的方法

网上有一大堆免费的资料,但没有一个网站能教你如何做好编程。例如,如果你在Freecodecamp上没有得到一个概念,你可以在Codeschool, Treehouse, Udemy, Udacity, Frontendmasters或者Youtube上查找 – 这个列表是无穷无尽的,而且还在不断增加。这也是为什么很难建立一个纯内容公司来教授技能的原因。对一个人来说是好的解释,对其他人来说未必是最好的解释。另外,免费内容的数量也是惊人的。

学习是个人的事,所以找到你喜欢的东西,以及哪些资源对你最有效很重要。

没有一个正确的网站订阅 – 尽量多地尝试,大多数都有30天的免费试用期。我报了一个训练营,因为我觉得我会从中受益 – 但同样不是每个人都需要。我还体会到的一点是,学习编程是一个非线性的过程。

它不像你只遵循一个网站的课程 – 你需要不断地从不同的地方强化概念。

从来没有比现在更好的机会来自己学习东西,因为材料是如此容易获得。

7、和其它事情一样,要想做好编程,没有捷径可走

在编程6个月后,我仍然是个初学者。即使你连续编程30天,也不可能在短短一个月内成为高手。这个时间可能只是让你粗略地了解一下。在过去的几个月里,我意识到我不知道的东西比我开始时想象的要多很多。学习代码本身并不难,但很多人往往会把成为一个真正优秀的程序员所需要的东西过于简单化,其实这需要很多工作。

现在创建一个“应用程序”比以往任何时候都要容易,但做好真正理解概念的工作,投资于数据结构和算法,才会让编程变得更好。几年前,我曾按照一个程序在30天内建立了一个rails应用,但什么也没学到 – 它其实只是告诉你什么代码放在哪里。不要走这条路。

8、学会代码并不意味着你必须成为一个程序员

我觉得我不会只做一个软件工程师。我有其它喜欢的优势并想尝试。我还是喜欢做产品经理;我还是喜欢公司运营;我喜欢和设计师一起工作,和用户交流;现在我也喜欢编程。无论我接下来选择做什么,学习编程都是一种财富。

9、学习基础知识的资源很丰富,但提高的资源很少

基础编程的资源有一大堆,但能让你更上一层楼的资源却很少。

在我写代码的时候,我就有这样的疑问,别人都用了那么多for循环吗?我写的代码好吗?我怎样才能改进?Google的人会如何处理这个问题?如何设计系统架构?如何更好地进行系统设计?

去新兵营的好处之一是能够向经历同样旅程的同行学习并与他们建立联系。我的假设是,提高的最好方法是通过向公司内部的同事学习。在公司之外,很难有足够明确的资源来了解这些。

我发现的问题不是如何开始学习代码,而是了解自己所处的位置以及如何变得更好。

我个人认为,积极寻求比你优秀的人的反馈是非常有帮助的。还有一个很有用的小技巧就是阅读开源项目的代码,以获得良好的实践,并尝试着为其做出贡献。另外像Thinkster这样的资源也是很好的,可以帮助你渡过初级阶段。

10、社区有帮助,但它不能是唯一的资源

找到一个社区,哪怕只有一个人,对你的编程工作也是非常有帮助的。HackReactor最好的内容之一就是社区。学会了如何通过结对编程向其他人表达思想和技术理念,这很了不起。看到别人如何解决问题会让你成为更好的程序员。它可以小到看到一些非常有用的键盘快捷键,大到学习人们如何以不同的方式处理同样的事情。我找不到一个在线社区可以复制同样的体验。同时,你不能只通过结对编程学习。成为社区的一员可以增加你的个人经验和工作。

原文链接:

https://medium.com/hackernoon/learning-to-code-in-6-months-a-product-managers-journey-b5d09b856f72

业界动态

To B 产品基于场景进行的设计

2021-1-4 12:11:09

业界动态

通关魔幻2020,打工人开局2021

2021-1-4 13:44:44

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索