前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每一个程序员都是自学成才

每一个程序员都是自学成才

作者头像
竹清
发布2018-08-31 10:34:45
3450
发布2018-08-31 10:34:45
举报
文章被收录于专栏:竹清助手

为什么CS学位并非是成为开发人员的唯一路径,因为每个开发人员在工作于他们的项目时学到了很多很多。

除了CS学位,还有很多成为程序员的方法。如果你正行进在一条非常规的道路上,那么你可能会想知道你该追上那些有学位的人。你该怎么和那些在课堂上花了很多时间学习计算机和编程的人竞争?

从我的经验来看,竞争的要点不在于学位:关键在于你会如何利用你所掌握的技能。条条大路通罗马。事实上,从学校里是学不到如何做一个web开发人员或Android开发人员的。

每个使用计算机技术的程序员大多靠自学成才,在工作中和自己的空闲时间提高技能。我在完成我的电气工程学位的同时,去上了很多与计算机相关的课程,但其中很少是专门讲web开发的。也许你会上过一两堂课,或选修这类科目,但当你使用的时候,这方面的知识很有可能已经过时了。

好吧,如果学位不能教你如web编程或移动开发这些有用的东西,那么学位还有什么用?学位的作用是让你对编程和计算机相关的知识有一个全面的了解。有助于你了解更多相关的学科,例如数学、数据库、算法、网络、编程模式和语言。

你不需要成为任何这些学科的专家:但你需要知道它们的存在,并完善这些技能,并且在现实世界中使用这些技能以便于让这些技能能够对我们真正有用。另一方面,所有这些技能就是一个有用的工具箱,当你启动项目并需要解决新问题的时候,便是你的好帮手。你可以使用你已经学到的知识作为出发点去挖掘更深层次的东西,并根据需要提升自己。

如果你不曾在学校里学到这一点,那么你还可以从其他途径获取,例如在线课程或书籍。和那些从学校获得的知识没什么不同:虽然说在学校里学习更容易集中注意力,进度更快,但你自学也完全可以。

当你开始使用这些技能来完成实际项目时,这些技能才会渐渐变成你的东西,否则就只是纸上谈兵而已。根据兴趣、工作或专门的计划,特定地去学习某些领域,然后一步步前进。作为团队的一员,每个人都有必要构建不同的技巧和知识体系。如果每个人的技能集完全一样,那这个团队该是多么枯燥和低效啊!

而且你在学校中学的东西是不完整的。你需要工作于一些小型的项目,以掌握具体的概念,但在现实生活中,在你运行了你的第一个版本之后,你就会不由自主地继续前进。你会继续学习如何维护,如何修复bug,如何部署以及如何在众多规则的框框架架中完成团队工作。你会在你工作的每一个项目和你修复的每一个bug中不断学到新的技能。

我们最重要的是学习如何学习,这样才能在需要时迅速掌握相关学科和一门新的技术。如果你能一直保持学习的态势,那将更方便你学习新的东西,并且建立一个学习的好习惯,永远是亡羊补牢,犹未晚矣。

[原文]

There are many ways to become a programmer beside getting a computer science degree. If you’re on that less conventional path, you may be wondering what you should do to catch up to people who do have a degree. How can you compete with someone who spent many years in a classwork learning about computers and programming?

In my experience, there is no such competition: what matters is what you can do with the skills you have. There are various paths to becoming a developer. In fact, nobody learns how to be a web developer or an Android developer from school, except maybe at bootcamps.

Everybody working with those technologies is largely self-taught and improve on the job and during their free time. I took many classes related to computers during my electric engineering degree, but few of them featured web development specifically. Maybe you’ll get a class or two or an elective on these subjects, but this knowledge will most likely be outdated by the time you use it.

Well, if a degree does not teach you a specific niche like web programming or mobile development, what does it teach you? The role of a degree is to make you a generalist with a broad array of programming and computer-related knowledge. You’ll learn more about subjects such as maths, databases, algorithms, networking, programming patterns and languages.

You won’t be an expert in any of those subjects: you’ll know that they exist, but you will need to perfect these skills and use them in the real world for them to be really useful. On the other hand, all those skills are a useful toolbox you can dig in when you start a project and need to solve new problems. You can use what you learned as a starting point to go deeper and improve your knowledge as needed.

If you didn’t learn this at school, nobody is stopping you from acquiring this knowledge in other ways, such as online classes or books. There is nothing different about the knowledge you get at school: the focus on learning makes it easier to progress at school , but you can learn by yourself.

Those skills will really stick when you start using them to complete real projects. You’ll start specializing a few areas based on your interests, your job or a deliberate plan and grow from there. You’ll be part of a team where everybody has a different mix of skill and knowledge to build on. It would be boring and ineffective if everybody had exactly the same background!

What you learn in school is incomplete anyway. You’ll work on tiny projects to master specific concepts, but in real life you don’t stop after you shipped the first version. You’ll learn how to handle maintenance, bug fixes, deployment and how to work with a team across many disciplines. You will keep learning new skills for every project you start working on and every bug you fix.

What’s important is learning how to learn so you can always catch up on a subject or a new technology as needed. It’s easier if you keep learning a bit all the time and build a habit to learn, but it’s never too late.

Published at DZone with permission of Cindy Potvin , DZone MVB .

Opinions expressed by DZone contributors are their own.

[link:https://dzone.com/articles/every-programmer-is-self-taught-cindy-potvin]

果拾网

中国最大的IT技能学习平台

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 竹清助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档