我作为程序员辣么穷的黑历史

我在十三、四岁的时候第一次真正进入编程这个领域。从十一岁开始我就一直对计算机非常感兴趣,但在十三岁之前并没有太多地涉足编程。那大约是五年前。

我记得在中学玩过一个游戏:Runescape。很多时候游戏都会崩溃,并且会看到一个奇怪的包含外国文字的文本文件。最后,我有了大约十几个文件,于是决定去调查究竟是怎么回事。在稍微谷歌了一会之后,我阅读链接到关于Java和线程的内容。它让我觉得摸不着头脑,但同时所有这一切又那么令人着迷。一段时间之后,我就将它弃之脑后了,我不知道下一步该怎么做。这样的情况一直持续到上7年级。

在7年级的时候,我们班上的每个人都需要做一个科学展览会的项目。老师带我们进入计算机实验室,并给了我们一个包含项目点子的网站URL。第一个抓住我眼球的项目标题是:“使用JavaScript构建计算器”。阅读了之后,我觉得这个相当酷,并决定进入编程。

几个星期后,我和我的一个朋友谈论起了我的新努力。他的父亲做IT方面的工作,他提到了一个被称为Batch的语言。他告诉我如何用这种语言做一个测验,我发现它很简单,并且乐趣十足。我花了几个月的时间主要用于吃透基本的JavaScript,Batch和VBScript。这很有趣,但我并没有做任何酷的东西。老实说,我真的很想制作游戏,正如许多年轻“程序员”会有的想法。

几个月后,我开始在C++上胡搞一通。我记得介绍Batch给我的那个朋友告诉过我,你不去学校就不能学到C
++。我想证明他错了。好吧,在“coding bootcamps”之前这的确是个问题。我主要从谷歌“C ++教程”或“如何用C +
+(此处插入任务)”学习语言。我很容易地就掌握了基础内容。结构,语法,所有一切都很容易。我用了一段时间去(有点)理解OOP和指针,然后,我开始对一切都感到无聊。我想制作游戏。所有我找到的C ++游戏框架,都需要大量的样板代码并且/或相对比较复杂,既然我真的无法涉足其他任何地方,于是我决定继续前进。

在大概7年级结束和8年级开始的时候,我开始寻寻觅觅新的语言。我看过Python,Ruby,PHP,但都不感兴趣,抓住我眼球的下一个语言是C#。和C

++一样,我学习了基本的语法,但从来没有真正学到任何深入的东西。事实证明,游戏开发不仅仅是编程,所以我又继续往前。现在我想开发桌面软件。没过多久,我渐渐离C#越来越远,在高中的第一年我恍然发现自己使用的是Java。

此时,我学到的Java比任何其他语言都多。回想起来,这可能是我唯一一次可以说我真的了解了一种编程语言的时候。这一年我又碰到了新鲜玩意。到了9年级,我第一次遇到对编程同样感兴趣的其他人。

他和几年前的我一样,打算进军游戏开发。在他试图学习C
++的时候,我正沉浸在Java中。然后一年后,他进入了Web前端开发。我们之前都写过一些HTML /
CSS代码,但我们都从来没有真正做出过成果。我们终于有机会一起工作了,因为我们决定做一个网站去参加其中一个班级的决赛。当时,他高三,而我高二。因为我仍然想使用Java,于是决定我来为我们的网站做后端。在接下来的几个星期时间里,我们设计出了一个可怕又丢脸的玩意。好吧,为了证明我的言符其实,让你见证它的糟糕程度,下面摘录一些我写的JSP:


  1. <% 
  2. try { 
  3. File userFile = new File(request.getParameter(“usr”) + “.csv”); 
  4. FileInputStream fstream = new FileInputStream(userFile); 
  5. DataInputStream reader = new DataInputStream(fstream); 
  6.  
  7. String login = reader.readUTF(); 
  8.  
  9. StringTokenizer splitter = new StringTokenizer(login, “,”); 
  10. String user = splitter.nextToken(); 
  11. String pass = splitter.nextToken(); 
  12.  
  13. if(request.getParameter(“passwd”).equals(pass)) { 
  14. out.println(“Authorization Success”); 
  15. UserSession current = new UserSession(user); 
  16. session.setAttribute(“User”, user); 
  17. } else { 
  18. out.println(“Bad Password”); 
  19.  
  20. reader.close(); 
  21.  
  22. } catch(FileNotFoundException fnf) { 
  23. out.println(“Bad Username and/or Password”); 
  24. %> 

是啊,我太懒了,居然没有设置数据库,所以我将用户存储在个人CSV文件中。

虽然代码是如此黑暗,但从中我们学到了很多有趣的东西,并且第二年(我高三的时候),在我们学校的帮助下,我们开始做自由web开发。小小的我们从没有经历任何真正的成功,我不喜欢做静态网站或Wordpress管理(而这正是我们大多数SMB客户所想要的)。我依然是搞后端。我们还找了一些知道HTML、CSS和JS的新手来帮助我们,附带一句,管理团队蛮有趣的。但是,问题是,我总是似乎做了所有的工作。

我终于还是抛弃了Java,因为我无法决定是学习Spring还是Play Framework,我陷入了Node.js和fullstack
JavaScript的诱惑。我现在最大的遗憾是决定成为一个Javascript开发人员。虽然,我从来没有真正地制作过任何酷的web
app,但我在一些客户端网站上涉足了很多Express和jQuery方面的东西。

然后我到了高中四年级(美国中学为四年制)。与我一起搞自由职业的朋友已经毕业了,去了大学,而其他团队成员总是一副忙忙碌碌的样子。我需要团队中的人能够真正实际上做事情来帮助我(在一些客户端工作上我已经落后了)。幸运的是,我发现了一个三年级的正在学习Node的PHP开发人员。他很棒,帮助我让一些客户端工作回到了轨道。在一起完成了一些成功的工作后,我们决定离开web开发一段时间,去试着做一个移动app以参加一个竞赛。因为他有一个mac,而我没有,于是我说服他学习Swift,而我试着在Android上重新温习Java。最后,在决定使用我们两个都不熟悉的技术维护两个代码库之后,他决定将app切换到Ionic应用。

让我印象深刻的是,有几天时间我完全无法提供力量(这是另一个故事了),当我回来的时候,他已经为我们的app完成了一个可工作的MVP。我们两个都没有任何Angular经验,所以代码可能几乎和我从前的那个JSP一样糟糕,但app看起来很漂亮(有部分要感谢我们的“设计师”,我的另一个了不起的朋友)。

无论如何,之后我毕业了,那么这篇文章究竟说明了什么呢。

为什么我是一个坏程序员

我从来没有真正学到任何东西。我犯了不断从这个技术和语言跳到那个技术和语言的愚蠢错误。因此,虽然我了解许多语言和框架的基础,但在没有更深入的研究之前,我并不能真正应用它们到任何地方。

我从来没有学习算法,并且没有上大学的意愿。上过大学的你,或许会说所有那些东西都不是很重要,但在现实中真的并非如此。当我开发一个产品的时候,我可能不需要任何知识。但等等,面试该怎么办呢。在大多数情况下,你需要通过面试来获得作为开发人员的工作,而从我打听到的来看,面试通常包括要求你解决一个传统的“算法问题”。

我记得我以前阅读过有人在面试中被问及如何反转链表的问题。坦率地说,如果我在面试中被问到的话,我的回答会是:


  1. java.util.Collection.reverse(someLinkedList); 

有一个API方法我可以用来做到这一点。如果这不是一个可以接受的答案,那么我唯一的选择是与面试官争辩。我不确定在没有准备的时候我能否做到这一点,但如果碰到被提问的情况,我会查阅文档和/或谷歌来搞清楚。

不管怎样,我不觉得学习算法或上大学会更好。

我从来没有应用过我拥有的知识。人们说最好的学习方法是付诸于实践。我的问题是我不知道该做什么。我不喜欢克隆流行的app,因为它们不切实际。我喜欢采纳其他人的点子,为他们来构建那些在某段时间内我没有机会去做的东西。我的Github充满了许许多多废弃的项目。

为SMB做网站。这是我唯一的经验,其他没什么可展示的。我们开发的大多数网站由于某种原因不再活跃。事实证明,大多数SMB不需要网站,因为网站相对于Facebook页面+谷歌业务(点击这里查看更多信息)可为他们提供的很少。

JavaScript。我讨厌这门语言及其社区。原因有很多,甚至可以写成一篇新的文章。然而,不幸的是,它最终迎来了它的辉煌,如果你开发一个Web应用程序而没有使用像React这样的支持框架(即如果我使用像ASP.Net
MVC +
Razor这样的东西来编写应用程序的话),那么你就会被一个军队的“卫道士”钉死在十字架上:不断地告诉你你是如何的愚蠢居然不臣服于救世主React。

结论d

我最近才注意到我是真的很穷。 毕业后,我不曾工作于任何东西,因此我的技能已经退化甚至更糟。我最后一次工作于这个领域已经大约是在7个月以前的事情了。我知道我应该回到这个领域,虽然我不知道我想做什么。 我想也许应该是:

Android(Java,Kotlin,等)

或者

C#和ASP.Net(Core很酷,但MVC更实用)

不管是什么,这一次我已经打定了主意。学习语言以及相关的框架,不再跳来跳去。 我决心这次一定要实际擅长于某件事情。

也许有人在读这篇文章的时候发现可以从我的错误中学习。好的,希望如此。如果这篇文章你觉得我写得有点乱,那么我向各位致歉,因为这是我在Medium上发布的第一篇文章。最后,与君共勉。

作者:小峰

来源:51CTO

时间: 2024-08-03 06:45:58

我作为程序员辣么穷的黑历史的相关文章

程序员很穷

文/池建强 程序员很穷,他们要么是显得很穷,要么是真的很穷. 前几天一位做市场的同事跑过来问,池老师,我有一位朋友,快 30 了,想转行写程序,您觉得有戏吗?我看了看满目疮痍的他说,如果是你就没戏. 30 多岁转行做程序员当然可行,毕竟历史上存在一些大器晚成的案例,这些经过渲染和修饰的案例给在时间长河中苦苦挣扎的人们带来些许希望的火光,但那毕竟是火 光,一阵风来过,也许就灭了.如果你真的热爱技术和编程,渴望通过自己的代码实现别人的想法,或自己的想法,为世界带来更美好的产品,那么任何时候学习编 程

帅的程序员选择专业,丑的程序员泛泛涉猎

程序员分为两种:帅的和丑的--帅的程序员技术精深,可堪重任,是某个领域的专家:丑的程序员泛泛涉猎,一知半解,啥都会一点却都是半瓶水.当然首先要声明,我是属于那种很丑的程序员,不过我还年轻,通过不懈的努力,有朝一日一定会成为一名很帅的程序员! 特别声明:虽然绝大多数程序员长得都很帅,但是长得帅并不代表就是"帅的程序员". 一·丑的程序员 列夫托尔斯泰曾经说过:"帅的程序员都是相似的,丑的程序员各有各的丑法." 1.不爱学习的程序员不帅. 2.爱学习但不勤奋刻苦的程序员

有了自己多年开发的企业管理通用平台功能很强大.一个穷程序员怎么才能推广,大家说说看?

问题描述 平台是绝大部分的代码自己完成,是多层架构的.具备FORM和WEB两种模式.可以适应绝大部分的企业业务生产流程. 解决方案 解决方案二:穷程序员是什么概念呢?自己有产品的只有两种方式:一个是自己卖:一个是找代理卖.目的只有一个,把产品卖出去.自己要是能销售的话,可以考虑自己跑客户推产品.没有资金且没有销售能力的话,可以考虑拉赞助,或者找合作伙伴!解决方案三:你一个穷程序员不依托公司怎么开发出来的?如果是在公司完成的,那你对其没有知识产权.解决方案四:我想说,不是任何人都可以开发crm软件

干掉勒索病毒的22岁程序员自曝黑历史:中学是电脑白痴

5月12日,名为WannaCry的勒索病毒在全球发起了第一波攻势,正当人们担心如何有效防范的时候,来势汹汹的病毒突然失掉了锐气,竟然转向蛰伏状态. 而这一离奇现象背后则是22岁工程师Marcus Hutchins的功劳. 据报道,Marcus Hutchins率先在勒索病毒的样本中找到了"紧急制动开关"的后门,通过注册后门所需要Ping的域名而成功控制了病毒的蔓延趋势.Marcus Hutchins也因此一也成为互联网英雄. 不过,最近Marcus Hutchins在接受英国<每

程序员最新笑话集锦

1.十行代码九个警告八个错误竟然敢说七日精通六天学会五湖四海也不见如此三心二意之项目经理简直一等下流. 2.一想到万一努力Coding.熬夜Debuging,出人头地了就会有人检查我的学位论文,我就翻身又睡了. 3.有时代码写的闷了,会临时去WC,随便赶上哪个蹲坑就上哪个蹲坑,独自蹲着,不发一语,然后再回座位,当没事发生过,突然觉得这TM才叫IT民工 ! 4.[路人甲问]:如果失去杨元庆,雅虎将会怎样?[我答]:难道他,姓杨,名致远,字元庆?[路人乙答]:雅虎将不再是我们熟悉的那个谷歌了. 5.

广东程序员在加利福尼亚(转)

  作者介绍:Ryan Chen (英文名).目前在美国圣地亚哥城工作,就职于全球著名 IT 公司.Ryan Chen 在美国工作生活多年,本文是他对在美国当程序员的一些观察和感受.他的微博是 @奋斗中的胖胖.你还可以通过邮箱 ryan.chen623@yahoo.com 和他进行交流. 站长让我介绍一下在美国当程序员的工作和生活,因为国内很多同行都好奇,国外的月亮到底圆不圆.自从毕业工作后,我就很少码文字了.前段时间忙里偷闲的功夫断断续续看了一部高智商犯罪小说,叫作<谋杀官员>,对作者的想象

为什么程序员总被认为是屌丝群体?

本文纯属闲时娱乐,请勿当真,请勿较真. 1. 程序员都很穷吗? 其实,以我的经验来看,相同学历的毕业生的工资里面,程序员的工资绝对前三.但是可惜的是,程序员的主要发展地集中在京沪杭和广州一带,这一带本来就是有钱人的集中地,而且高房价高消费,让程序员那不算低的工资显得微不足道,只能望楼兴叹. 举个例子,比如你在北京开10w的车,那绝对是底层人民啊.你要是在一个二线城市开10w的车,那已经可以说混的不错了.如果是在小县城开10w的车,那你就算是有钱人啊. 解决方案:一线城市打拼,二线城市发展.当然,

动态网页PHP程序员的优化调试技术和技巧

本文介绍调试PHP应用程序的各种方法,包括在Apache and PHP中打开错误报告,以及通过在一个简单的PHP脚本中放置策略性的print语句,找到更困难的bug的源头.还会介绍用于Eclipse的PHPEclipse插件,这是一个灵活的开发环境,具有实时语法解析能力,还会介绍PHPEclipse的DBG调试器扩展. 简介 有许多 PHP 调试技术可以在编码的时候节约大量时间.一个有效却很基本的调试技术就是打开错误报告.另一个略微高级一点的技术包括使用 print 语句,通过显示在屏幕上实际

JAVA程序员必读:基础篇(8)

程序|程序员 JAVA程序员必读:基础篇时间:2001/09/13 13:31 作者:ZSC 太平洋网络学院 2.6什么是接口 接口是一个收集方法和常数表单的契约.当类执行一个接口,它就许诺声明在那个接口中执行所有的方法. 接口是一个设备或者一个系统,它是用于交互的无关的实体.根据这个定义,远程控制是一个在你和电视的接口:而英语是两个人之间的接口:强制在军事中的行为协议是不同等价人之间的接口.在JAVA语言中,接口是一个设备,它是用来与其它对象交互的设备.一个接口可能对一个协议是类似的.实际上,