全文共4039字,预计学习时长11分钟

图源:unsplash

你觉得编程是一份有压力的工作吗?很多人不这么认为,在一些人眼里,程序员只需要坐在电脑前打字,与医药、银行或会计行业相比,编程既不面临生死攸关的难题,也无需承担重大责任。

但事实证明编码焦虑是真实存在的。我发现许多学生在工作一个多小时后便无法集中注意力,在技术行业找工作的压力让他们筋疲力竭。或许真的有些天赋异禀的人把敲代码当成打游戏,但这种看法其实更多来自不明就里的外行人。你真的有必要学习一些技巧,在必要的时候对抗编码焦虑。

为何编程学习者压力山大?

首先,我们需要深入了解一下造成技术学习者压力的主要原因。我将造成程序员们焦虑的原因概括为三点:

·        骗子综合征。程序员的平均年薪相当高(据Payscale调查,平均年薪为8.6万美元),很多开发人员认为他们的能力与薪资不匹配。团队工作同样让人倍感压力,你总会接触到更聪明、更精通技术的同事,他们有远见,注重细节。上述种种让软件开发人员妄自菲薄,担心会被人认为是冒牌货,倍感压力。

·        并非“真实的程序员”。如果你对技术的兴趣由来已久,那么对“真实的程序员”原型一定不陌生。你经常可以在Facebook群组、Reddit或Stack Overflow上看到这些程序员讲述自己有多勤勉工作,几乎不在意周末或业余时间。

图源:unsplash

外界普遍认为程序员就像工作机器,以至于初学编程者开始怀疑自己:“我无法连续编码8小时,或许软件开发这一职业并不适合我?”斯坦福的一项研究显示,过度工作只会适得其反,每周工作40小时的员工,其工作效率是每周工作60小时的员工的三倍。

·        入行太晚。尽管在我看来只要渴望学习,渴求汲取新技术,编程就无年龄限制,但我的一些学生并不这么认为。任何人在听到14岁天才AI工程师的故事都会感到威胁且受到打击。30岁左右的编程学习者在感受到年轻编程天才的威胁后就开始低估自己的能力,不敢要求更高的薪水。

如果你也在和这些问题做斗争,不要让自己陷入这些情绪里,你得积极主动地面对编码焦虑,提高学习效率。

轻松学习编程的4个技巧

如何让学习编码变得妙趣横生,让人不断学习?如何让自己不因同龄人的成功与失败而心生嫉妒,因此泄气?以下是我的一些经验见解。

1.选择一门主要编程语言

是精通一门编程语言更好,还是成为众多中级程序员中的一员更好,这是软件开发中常见的争论。我个人不介意使用多种语言,但我认为每个程序员都应熟练掌握一种技术。

想想我们说的语言,掌握两三种甚至五种语言的都大有人在。但是,大部分人只精通一种(最多两种)语言,即你思考所用的语言,同朋友聊天所用的语言。在这一点上,编程和语言是相似的,你可以学习多种语言,但得确保自己作为程序员只用一种语言“思考”。

作为一名编程学生,起步阶段应该学习哪种语言呢?从学习资源的数量、就业市场和技术的通用性考虑,我建议编程学员从Java入手。

·        Java工作机会遥遥领先。根据全球最大的招聘网站Indeed,Java、Python和 Javascript是首选的编程语言,有着大量职位空缺。

·        Java教学资源丰富。初学者常常会因为找不到可信任的学习资源而手足无措,为了确保自己学习的编程语言达到最高行业标准,看看顶尖的大学和学习实践是很有帮助的。

如果你想用学术材料学习,那么学习Java是一个明智的选择,因为许多国家排名前10的计算机科学专业都选择Java作为入门课程的语言(Python数量较少,有13个可用程序)。

·        Java开发者薪酬不菲。确保与你所学的编程语言相关的工作报酬丰厚至关重要,薪酬与压力直接挂钩。Java是计算机科学研究中收入最高的领域之一,根据PayScale调查显示,Java开发人员的平均年薪为74000美元。

2.规划自身教育

刚开始学编程的程序员,往往不在其基本概念上下足功夫,就开始学习编程语言。他们太过依赖在网上查找的所有学习内容,这样会直接一塌糊涂。大多数初学者过早开始接触高级概念,很快就因语言太过复杂和自身缺乏进步而受挫。

如果你想在最短时间内成为一名成功的程序员,规划好学习曲线至关重要。那么怎样创建你能真正坚持的高效课程?

图源:unsplash

首先按照复杂度递增的顺序,写下你想学的语言的概念。Java列表如下:

·        基本Java语法

·        主要面向对象概念

·        集合类以及数据结构

·        数据库

·        并发性和多线程

·        JVM与记忆管理

·        Java生态水平

将这些概念分解为更小的模块,把它作为每日学习的主题。以Java为例,下面是Java语法概念的分解情况:

·        变量

·        数据类型

·        If-else计算符

·        循环

·        连续语句和中断语句

由于这篇文章不专讲Java,在这里我就不列出完整课程,网上有许多学习路线图可供自行查看。

为每个模块设立清晰的截止日期,这样便能对完成部分课程所需时间有切实的了解。切忌低估——编程语言概念比你想象的更为复杂。最好设置上限,不要进行一连数小时的压力练习。

3.收集正确资源

对于程序开发学生来说,必须应用在现实中学习所获得的知识是一个主要的崩溃原因。Freecodecamp论坛使用者完美总结出这一焦虑:“每次编程的时候,我就担心有一天我会被其他专业程序员面试。”

图源:unsplash

如果你也害怕自己不具有在工作面试中脱颖而出的特质,那么罪魁祸首可能是你学习的资源。虽然书籍和视频课程对于学习语言本质很重要,但实践同样甚至更重要。在与初级Java开发人员交谈时,我通常建议使用以下资源堆栈:

书籍和教程占总资源的20%,主要用于参考。

据统计,大多数程序员不看书。我能理解原因,大部分书都很无聊且过时,书中所言在脑海中停留不了太久。然而,如果我在项目中遇到困难,我很想知道在找到问题的解决方案时可以参考哪些书籍、文档资源和教程。

在我看来,你不需要一本书接一本书地读,但是读几本书会给你一个坚实的语言理论框架。以下是我最喜欢的Java书籍和参考资料:

书:

·        Head First Java——适合初学者,快速了解如何使用语言和语言的基本结构。

·        Effective Java——为想要充分利用语言工具集的经验丰富的程序员而编写。

·        Java Puzzlers ­­——关于Java的短板和挑战的真实指南。

教程:

·        Java Code Geeks——一个结构良好、与Java相关的文章列表,在开发新项目时可以作为参考,十分方便。

·        Java Oracle Tutorials—— 是大多数程序员的参考资源。

·        Programming Creek ­­——一个直观且容易上手的Java教程数据库,绝对值得收藏进最爱名单。

在线课程(深层次了解语言、组合理论和实践)占总资源的30%。

与书籍不同,视频更具实践性且引人入胜。讲师通常以案例研究为特色,分享现实世界的语言应用。此外,还有一些学习平台还可以实现学生与讲师互动,支持学生提问。

虽然在线视频课程给不了足够练习空间,但它们绝对是为你在书中读到的概念建立上下文的坚实方法。以下是我最爱的Java课程:

·        Coursera的Object-oriented programming in Java

·        Pluralsight的JavaFundamentals

·        Udemy的Java ProgrammingFor Complete Beginners

基于实践的平台——占总资源的50%。

编码讲的是熟能生巧,这就是解决现实生活中的问题同从书本和在线课程中学习语法一样重要的原因。我强烈建议你适当花点时间,研究练习赛和平台,这些练习赛和平台可以帮助你更好地掌握你所选择的编程语言。下面是我最爱的Java平台:

·        Codegym——一个强大的实践平台,助你成为熟练的Java程序员。有超过1200个练习任务结合简短的讲座,帮助你重温每个问题背后的理论。Codegym涵盖了语言的所有方面,有Java核心、集合、多线程、服务和JSP,甚至数据库处理和SQL。

·        HackerRank ——一个容易使用,结构合理的平台,内有Java练习题。这一平台可通过完成小挑战来和别人进行battle,不同复杂级别的任务既能帮助初学者学习,也可以提升高级开发人员水平。

·        Codewars是一个社区驱动的Java实践资源,开发人员在这里为彼此创建挑战和实践任务。除了Java,该平台还支持JS、C、C++和其他语言。

4.加入社区

尽管学习编码困难且孤独,你的家人很有可能不会理解你的艰辛。但你可以不是一个人,你可以向同事或同仁寻求帮助。就个人而言,我喜欢Reddit、Freedcodecamp和Stack Overflow,下面是可供参考的编程社区列表:

Reddit:

·        r/codetogether

·        r/ComputerScience

·        r/dailyprogrammer

·        r/compsci

·        r/java

·        r/learnpython

·        r/machinelearning

其他平台:

·        Freecodecamp forum

·        StackOverflow

·        GitHub

·        PHP Programming Forum

·        JavaScript Forums

·        Gamedev.net

如果你是编程专业的学生且正在对抗编码焦虑,请记住,你并不孤单。为自己制定明确的目标和计划,以平静的心态对待每一天的学习,找到朋友相互支撑,你会度过这段艰难时期。

推荐阅读专题

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:樊悦、刘悦

相关链接:

https://levelup.gitconnected.com/keep-calm-and-start-coding-how-to-fight-coding-anxiety-dee06efd8b9c

如转载,请后台留言,遵守转载规范

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

不会吧不会吧?真的有人认为程序员很轻松么!如何对抗编码焦虑?相关推荐

  1. 有人说程序员是一个很高大上又高不可攀的职业,你认同吗?

    从事软件开发多年,如果不出什么意外还会继续玩下去,程序员说白了就是一个混口饭吃的职业,说的高大上一点就是一种兴趣爱好,每天不敲几行代码心里总会感觉欠缺点什么东西,开发软件写代码就是一种职业谈不上什么高 ...

  2. ChatGpt真的会取代程序员吗,有点过分担心了

    在过去几年中,人工智能技术的发展进步非常迅速,许多新型 AI 技术已经得到了越来越广泛的应用.其中,最引人注目的莫过于人工智能领域的语言模型. 作为目前世界上最先进的语言模型之一,GPT-3(Gene ...

  3. 30岁的问题,为什么有人说程序员只能干到30岁。

    总是有人在说程序员是青春饭,到30岁就干不动了,要转行,要事业了等等之类,来吓唬后生小辈,让我们对职业人生困惑,害怕. 说这些话的人很不负责任. 现在30岁以上在敲代码的,还要出来找工作的,都是些什么 ...

  4. 低代码平台真的能拯救程序员的996吗?

    最近不少程序员朋友跟小编说,公司天天加班,996的工作让他们连女朋友都找不到. 小编特地调查了国内外一些低代码平台和相关技术,找到了几个还不错的平台,可以帮助程序员结束996的生活,给大家分析一下: ...

  5. 如何看待有人说程序员岗位的前景一片灰暗

    首先,认为程序员前景灰暗难免有些过于悲观了,从当前大的技术发展趋势和产业发展趋势来看,未来随着互联网逐渐从消费端向产业端覆盖,程序员的人才需求量会进一步攀升,而且程序员岗位的岗位附加值也有进一步提升的 ...

  6. ChatGPT真的会取代程序员吗?

    程序员这两年被碰的瓷儿可不少啊,这架势不像是AI抢了程序员的饭碗,倒像是程序员抢了AI的饭碗一样...... 前两年低代码出来了,你们说程序员要被取代了,惹得大神们一顿输出: 去年元宇宙出来了,你们又 ...

  7. 聊一聊近段时间大火的ChatGPT,它真的能代替程序员导致失业潮来袭吗?

    OpenAI又火了!近期许多人的朋友圈里都混进了一个让人既爱又怕的狠角色,以至于StackOverflow不得不急忙下架. 近日,OpenAI发布了聊天AI ChatGPT,短短几天,其用户量直冲百万 ...

  8. 某程序员统计同事工作时间上厕所次数!有人一天去两次,有人一天去十次!楼主:懒人屎尿多!网友:最闲的是你!...

    请点击上面 一键关注! 先给大家提个醒,这是一篇有味道的推送. 一个程序员工位离厕所比较近,他竟然做了这么一个统计--研究同事工作时间去厕所的次数.不仅统计人数多,统计数据精确,还给做了张表格,真把这 ...

  9. 真的要做一辈子的程序员吗?来自10年程序员的心声

    经常听一些同学说:不知道下一份工作该去哪类公司做些什么,我的职场人际一团糟老板不重视我,我现在成长的非常慢所以又想跳槽了,我看不到公司的发展前景好迷茫,其实这一切的困惑都来源于没有做好职业规划或者你根 ...

最新文章

  1. 时间序列的建模新思路:清华、李飞飞团队等提出强记忆力E3D-LSTM网络
  2. token要加编码decode吗_NLP中各种各样的编码器
  3. oracle 迁移用户信息,Oracle备份一个用户并迁移
  4. JVM学习笔记之-运行时数据区概述及线程概述,程序计数器(PC寄存器),虚拟机栈(栈,局部变量表,操作数栈,动态连接,方法调用,方法返回地址等),本地方法接口,本地方法栈
  5. 单点登录Redis存储Session及Cookie场景介绍
  6. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药
  7. XM7 FOR ANDROID,视频剪辑制作app-视频剪辑制作xm8.0安卓版-蜻蜓手游网
  8. 携程试点每周两天居家办公反响热烈,76%的员工主动报名
  9. html5晶格化,前端开发——滚滚屏(没纵向滚动条)
  10. 微信自定义菜单扩容?
  11. UNIX 高级环境编程 第10章 信号
  12. 零基础搭建微信小程序商城系统
  13. python合并相同内容单元格_快速合并单元格相同项的内容
  14. 在Linux下使用“360随身WiFi 2” ubuntu14.04 64位系统适用
  15. mysql的基础查阅
  16. 支付宝h5网页的支付
  17. ins的更新带来的一系列问题
  18. Android Telephony框架结构简析
  19. 各品牌手机音视频格式支持一览表收藏
  20. BUUCTF Web [GXYCTF2019]Ping Ping Ping [极客大挑战 2019]LoveSQL [极客大挑战 2019]Knife [极客大挑战 2019]Http

热门文章

  1. 深度学习关于激活函数和损失函数的调研
  2. GCOV的使用-测试代码覆盖率
  3. c# exe发布后运行获取管理员权限
  4. 【异常记录】Could not initialize class org.springframework.beans.factory.BeanCreationException
  5. 牛散村:Java字节码编程javassist的详细介绍
  6. 同一局域网内的数据库的连接
  7. matlab function_Matlab绘制地图
  8. 数模设计和GND的分割设计
  9. stm32f411re-OLED屏幕
  10. deepin(深度linux)dde-dock系统监控小插件(网速CPU内存)