如何做一个优雅的程序员

作者: 筑梦师Winston | 来源:发表于2018-04-10 10:28 被阅读3975次

    前言

    这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程

    本文阅读建议
    1.一定要辩证的看待本文.
    2.在看完本文后总结适合自己的学习体系以及学习方法.
    3.觉得哪里不妥请在评论留下建议~
    4.觉得还行的话就点个小心心鼓励下我吧~
    

    目录
    1.是否适合做程序员
    2.建立个人目标
    3.学习途径
    4.如何构建适合自己的学习体系
    5.学习环境
    6.学习方法
    7.学习工具
    

    现状

    每次我曾经的同学打电话向我询问程序员这个行业怎么样,我都会很耐心的讲上一个半小时,谈人生谈理想,并判断他是否适合程序员这个行业.

    每次看到群里有人问程序员好不好当啊,觉得有眼缘我就会加上好友,连麦讨论一下.

    我为什么会这么做呢,因为目前市面上所存在的QQ交流群,一大半都是培训机构的人建立的,忽悠你去培训,还有小部分群,只要你进群问,XXX学了好不好找工作啊,全部都是劝退:不好!转行吧!

    这往往就会改变一个人的想法,也就改变了一个人的人生,有技术的没空引导新人,没技术的只会吹水误导新人.

    所以,我将我之前每次都会进行的长篇大论,总结成为本文,供各位想要入行或者转行的大学生或者其他职业的你们借鉴.


    是否适合程序员

    首先,判断自己是否适合程序员这个职业.

    在校大学生&应届毕业生

    1.是否计算机相关专业?
    如果不是计算机相关专业,判断自己是否会适合程序员或者计算机工作的学习.例如:打字速度,不会厌倦电脑,独立钻研的能力.

    2.是否在学习C语言等计算机课程还算得心应手?
    数学和英语能力,以及计算机基础学的是否扎实,都决定了以后你能达到的高度上限,如果你学的并不扎实,不用担心,你只是会比别人慢一点到达同样高度而已,只要努力学习.

    3.是否对着程序员这行或者计算机语言有着浓厚的兴趣?
    我个人看法,学习能力是一方面,在勤能补拙的基础上,往往兴趣却是能支持你在程序员道路上越走越长的核心.

    社会人士&其他职业

    1.是否是发自内心的学习?
    不是单纯的因为程序员行业工资高,而是想来学一门技术的.单纯把程序员当成挣钱的工具,会限制你以后能到达的高度.怎么限制?可能没有兴趣两年以后就转行了这种程度.

    2.是否适合程序员行业?
    挣钱的行业很多,不只程序员,程序员大多996模式,自己是否适应长时间在电脑前工作?

    3.是否有着改变人生的想法?
    往往社会人员进行转行时要比应届毕业生有着更大决心,否则你不会在这条路上走太远,你需要比大学生更有耐心和毅力进行学习.

    程序员需要谦虚、好学、内敛、成熟的人,因为不仅需要不断的学习,还需要人际交流、灵活变通、独立解决问题、主观意识.你才可以达到一般程序猿到达不了的高度.

    高工资是需要不断学习的,而不是空口白话就有的高工资


    建立个人目标

    那么在判断自己适合程序员行业以后,我们就来指定一个目标吧~没有目标的程序员和咸鱼有什么区别?

    我为什么当程序员呢,我想做一个自己的应用,很不巧,我也是一名非科班出身的人,经过自己的努力学习,成为了一名程序员.怎么样的学习呢,跟高考强度一样的历练吧~

    个人目标:

    首先按照三月内、半年内、1年、2年、3年、5年指定人生规划.
    例如:本人在三月内要进行XX语言的学习,半年内读什么书、1年内做到XX级别的开发.
    个人规划一定要切合实际,要需要一定的努力才能实现.

    个人目标可以是车子,房子,票子.一定是要循序渐进达到的目标,规划则是实现目标的过程.

    做不做的到是一回事,敢不敢想又是另一回事.这么说吧,去上海工作的事情,就是我上学想都不敢想的事.现在我随时都可以去上海找工作.


    学习途径

    规划了个人目标以后,我们可以开始程序员的学习了.那么怎么进行学习呢,我是一个小白,我怎么知道该学习什么呢.找个人带带吗?

    自学:

    自学往往需要一个良好的学习环境,以及高效的学习方法,往往需要大量的时间成本,大量时间成本最适合大三大四的学生,在最后的两年进行自学,完全可以达到毕业后寻找工作的程度.

    但是你要做到不被寝室的人干扰哦.
    自学大概需要2年的时间成本,社会人士0基础可能需要更长.请慎重考虑

    找人带:

    相对社会转业人士,往往迫切的需要投入程序员行业开始赚钱.那么怎么办呢.这时候就体现你的人脉了.

    首先寻找自己人脉中的程序员,看看有没有更好的推荐以及实习机会.找到人带,往往是最好的途径,可由于目前互联网经济快速发展,程序员并没有空带实习.大公司都喜欢培养985 211的迎接毕业生.

    最快的方法是快速入门一门语言,然后找一个实习工作,看看人脉当中有没有这个机会.
    如果没有,而且又想转行的,只能考虑下面这个了.

    培训:

    首先说明一下,我并不推荐培训,为什么这么说呢.

    个人看法:很多人都觉培训机构坑,是因为培训机构根本不会看你适不适合程序员这个行业,就会把你拉去学习,有些人对计算机一窍不通,听说高工资,被拉过去以后交了钱也学不会,这就是培训机构被骂的原因.培训机构只想挣钱,并没有在人上面进行把关.

    如果你觉得自己的确适合程序员这个行业,而且还有着刻苦学习,克服困难的毅力,那我只能勉强同意你来培训机构进行学习.

    如果没有,你还是选择别的行业吧,程序员真的不是随便培训一下,你就很厉害了.

    在培训机构,还有一个重点就是,你不能被老师灌输思维,一定一定一定要有自己的理解和体会,不然出来也是废物.

    培训机构的学习氛围还是不错的,大家都是交钱过来学习的,而不会在那里玩游戏.玩游戏注定被淘汰.
    培训机构也有好坏,这里小提几个:黑马,小码哥,老男孩,兄弟连等.其他那几个知名,耳熟能详的不推荐,你懂我意思吧.


    如何构建适合自己的学习体系

    好吧好吧,不管怎么样,你都已经选择程序员这条路了,那么我就告诉你,我是怎么学习的吧.


    学习方向

    首先,程序员这个行业分为很多子行业,每个子行业都是一门程序语言.大致列一下主流语言和行业,大家可以评论补充下:

    前端:HTML5
    后端:Java、PHP
    移动开发: 安卓(Java) iOS(Objective-C)
    游戏开发:Unity3D
    云计算:Spark
    服务器运维&人工智能:Python
    网络安全:C/C++

    语言有很多,这里只列举了我所知道的.
    选择一门自己喜欢的工作语言进行学习,当你学习一门语言,熟悉之后,建议学习第二门语言,成为复合型人才.

    当然,刚开始只是开发工程师,在你技术成熟以后,你可以考虑架构师、技术经理、产品经理进行转型.


    学习环境&设备

    那么确定了学习方向,我们就准备一下学习环境吧.

    首先一定要有一台趁手的电脑,工欲善其事必先利其器.

    如果经济允许的话,个人推荐使用Mac电脑进行开发,但是这样成本可能会有点高哦,所以经济不允许就使用一台高配置的PC笔记本电脑.

    配置只会影响到你的学习速度,以及学习体验,越好的笔记本在你不打游戏的前提下,只会提高你的工作效率以及学习效率.

    系统的话,推荐装一个Linux系统,优雅的开发都是在基于Linux系统下的.别问我为什么,我只挺Shell.

    设备有了,就准备一个适合学习的环境吧,如果你是大学生,那么请你不要受同宿舍打游戏的干扰,适当的远离他们,你的人生就越完整.

    不要等到25岁了和人家20岁程序员交谈时:我20岁的时候还和寝室的人一起打游戏呢.

    如果你在家自学的话,那么你需要提前和家里人说清楚,你需要什么样的环境,多久时间,不然一直被嫌弃,你反而会失去学习的动力,因为你在家里算闲人.

    如果你在培训机构,那么请你勇夺第一,你在培训机构都当不了第一的话,那么你注定会被淘汰.做不做到是一回事,想都不敢想,你就输了.

    QQ群,微信群,少加.或者自己去寻找高质量的交流群,什么叫做高质量?一般的交流群,大致分为三种人:培训机构打广告的,程序员劝退师,招聘外包接项目,吹水装逼的.

    高质量的群就是:严格的群规,小部分时间吹水,大部分交流技术.

    重点:在确定了自己的路线后,不要被他人的风言风语所影响,努力学习,让那些不以为然的吹水货们刮目相看,实力是证明自己的最好方法


    学习方法

    那么,学习环境有了,本文的重点来了,学习方法,是一个很重要的事.

    程序员这个行业,有很多前人巨人铺路,网上有很多的资源,可是大多数人却不以为然,觉得网上没东西,没干货,是因为学习方法不对.
    首先我要把我在网上看到好的方法,分享给大家~在这里要感谢一下Keegan小钢的文章,教会了我如何学习,下列方法结合了本人体会总结.

    学习方法:

    1.学习力
    学习力不同于学习能力,而是将知识资源转换为知识储备的能力,你看了多少书、文章,这是你的知识总量(阅读量),但不是你拥有的.你能够讲出来的知识,就是你所拥有的.

    2.目标学习法
    学习一定要找到难度适中,需要一定时间学习才能理解的知识.而且以后能用的上.
    从遇到的问题出发,从能实践的领域出发去找适合的认知材料。
    不要一上来就阅读数据结构、算法导论这种圣经类的书籍,而是一步一步来.

    3.快速学习法
    当我遇到一个自己不会的知识点时,我会进行百度,进行泛读,充分结合各个大神的文章,进行理解,重点是自己个人的理解.做笔记.辩证的看待每个人的文章,然后提炼到自己的笔记里.
    遇到难点时,我会询问列表里的大神,是否在工作中也是这个做法.得到答案.
    整理以后,可以用自己的话描述出这些知识点.
    在讲的过程中,就会发现自己的话有瑕疵,就会去寻找正确的说法,不断修正自己.

    4.输出倒逼输入
    如何提高巩固自己的实力,也是本人最喜欢的一个学习方法,在整理自己的笔记之后,尝试把自己的笔记转成文章输出出来,放在博客,简书或者CSDN等技术论坛上.
    在输出的同时,在追求完美的同时,就会发现自己的不足,搜罗各种知识点,结合自己的理解.
    最后变成自己的输出文章.这就是输出倒逼输入.完美的文章逼着自己学习更多的知识.

    5.快捷键&笔记
    那么高效的开发,为什么推荐Mac呢,因为快捷键太方便了,我会将常用的终端,文本编辑器设置快捷键,快速调用.
    关于笔记,我本人会开启三个笔记窗口,使用的是Omni outliner.

    1.自学笔记,该笔记针对并记录在书中的问题,以及书中重点.
    2.视频笔记+学习日志,该笔记针对每天的学习中遇到的问题,以及在各个视频当中汲取的知识点的笔记.
    3.输出笔记,例如:全栈工程师开发入门笔记,该笔记按照文章输出规范整理,每一个知识点,都可以成为一篇文章输出,不整理好不写入笔记,这就是我的财富.一定要漂漂亮亮的.

    6.压力学习法
    说一个在高质量群听到的把,我97年在群里算年龄小吧,但是当我得知比我小6个月,已经在16年拿到了16K 15薪的时候,那个压力,虽然我不喜欢攀比,但当你知道,很多人都比你强的时候,你自己就会很冷静,时刻明白自己还要努力很多.就不会把时间放在娱乐上.
    就是压力,让我现在可以把一整天的精力都放在学习上,而不是打游戏,看电影,环境很重要.

    Github & 个人博客
    这个东西一定要有吧,不仅是个人经验的体现,也是一个提高自己的途径.


    搜索引擎用法
    HTML开发 + "空格" + 知识点
    JS开发 + "空格" + 效果实现
    XXXX开发 + "空格" + "你想搜索的"
    重点关注简书、CSDN、github等技术网站的结果


    学习工具

    学习工具呢,因为本人是Mac系统,所以就先在这里说一下概念,以后有好的软件会更新.

    学习工具的概念呢,就是电脑中所有利于提高你开发效率和学习效率的都是学习工具,不利的都可以卸载掉.做一个成熟的程序员~

    学习工具每个人都是不同的,都需要自己去寻找合适自己的,例如学习前端时,大家都推荐sublime text3,但是我自己会去寻找例如Atom、VSCode、PHPStorm的工具,每个都配置一遍,在配置的过程中又会涉及到brew、curl、wget等知识点,根据百度这些关键词,我又会学到不少东西.

    总之就是学习成本、时间成本的相互调配,请选择适合自己的工具和学习方法很重要.

    开始学习

    在这里,并不是抵制玩游戏,我也玩游戏,但是我劝你在有稳定的工作实力之前,卸载掉你电脑上的游戏,手机上的游戏,QQ别上了,微信别上了,没什么用,好好学习,你的人生就更加完整.

    当你学会了学习方法后,你会觉得东西学不完.
    如果你没有东西学不完的想法,说明你还没有找到合适学习方法哦.或者说,你不适合做程序员.

    区块链理解吗,大数据是什么,人工智能怎么做,机器学习呢?不学习会被淘汰哦~

    余生,请君不留余力的学习.

    结束语

    如果您对这篇文章有什么意见或者建议,请评论与我讨论.
    如果您觉得还不错的话~可以点个喜欢鼓励我哦.
    如果您想和我一起学习,请毫不吝啬的私信我吧~
    介个是我的个人博客,欢迎参观哦~

    相关文章

      网友评论

      • 7a99dcf6d5fa:特别感谢你的分享.希望你成就你自己的梦想,我希望我也是,哈哈.
        筑梦师Winston:@努力不让心寒 加油~
      • 正义必胜biu:像你学习,成为谦虚而有实力开发者
        筑梦师Winston:@正义ing 加油~
      • 4b9f3d89586c:天辣这样的人生对我来说还不如死了算了
        膜拜大神
      • Uzik悟心:真年轻呀,老年人有危机感了
      • 作家冷漠:很喜欢it
      • 折腾小王子:如果有机会,希望可以讲讲各种语言之间的关系~~~ 我的专业需要编程,但是只是基础的C,shell和Matlab,好像如果想深入学习的话,与上面说的程序员的行业需求又有一些不同。有时候想学习一下,又觉得好像除了Shell和matlab,又没有太多可以应用的地方。感觉还是挺迷茫的。想听听您作为程序员的看法。
        筑梦师Winston:@折腾小王子 加油~任何语言都需要学以致用~
        折腾小王子:@筑梦师Winston 好详细的解答~~~~我还是专注Shell吧,好好应用这门语言,后面再学习它的原理。这段话很有帮助~~~谢谢:smiley:
        筑梦师Winston:@折腾小王子 您可以看一下我的另一篇文章,叫做全栈开发自学路线,其路线是围绕着前端以及nodejs的开发学习路线.各种语言的关系,大致这么概括吧,有基础类型的C语言,服务器脚本语言PHP,Python,但一些语言又不仅仅局限于自己的工作层面,python还可以用来开发人工智能,或者区块链等.各种语言都可以干各种不同的事,又或者说 Java和Objective-C都是用来做原生App的,但是一般开发者的学习都是使用这两门语言,而大部分都从不深究于其实现原理,也就是常说的深度不够,总结来说,语言分为 基础类 和应用类语言,也就是应用类语言不会那么基础难懂,方便大家使用,例如HTML+CSS+JavaScript这三门语言都是针对于前端网页页面的.每个应用类语言都有自己擅长的工作范围.那么回答您的第二个问题,如何深入学习,当你使用了应用类语言进行一段时间开发以后,你就需要了解其原理,这就是深入学习,但如果你没有做好学习的准备,你永远只能停留在使用语言的层面.
        学习一门语言的深度,不是为了去干什么,而是为了更好地更合理的使用这门语言.
      • 岚亦水:一枚程序员默默走过~
        筑梦师Winston:@岚亦水 抱抱同行
      • 4d341bd19615:有一点不是很认同, 程序员用linux并不是为了优雅什么的,大部分只是为了满足git的要求, 在windows下的tab、换行和linux下的是不一样的。 这些改动git都会检测到。 导致的结果可能就是没有修改的代码都改动了。
        可能你只改了一行代码,在因为系统不一致。你保存代码的那一瞬间系统将整个文件都改了。
        这样提交到git服务器上会乱分支。代码就不好追踪了
      • _闲看花开花落:标题和文章内容不对应吧,你好像不是说程序员如何更优雅,而是再说如何成为一名优秀的程序员。我想优雅和优秀这两个概念还是不同的。
        筑梦师Winston:@_闲看花开花落 对,原标题确实是优秀的程序员,但是我个人并不是一个优秀的程序员,为了避免成为众矢之的,还是选择了比较委婉的优雅一词,而且我觉得一个优雅的程序员必定也会优秀吧~
      • 逍遥的fish:感觉深度学习和算法都好难,项目开发经验不多的程序员路过
        筑梦师Winston:到了该学习的时候,自然就会了
      • 我要种一颗太阳:送你一朵小花花请查收
        我要种一颗太阳:@筑梦师Winston 🙃️🙃️🙃️
        筑梦师Winston:@我要种一颗太阳 谢谢小花花~
      • 我常常问自己我是谁:我想知道你GitHub主页背景的那个动画,还带有鼠标焦点功能是用哪个插件,
        筑梦师Winston:@我常常问自己我是谁 暂时没有哦,还在总结
        我常常问自己我是谁:@筑梦师Winston 恩,还有就是有没有安装或使用的教程,可以推荐给我一些???
        筑梦师Winston:@我常常问自己我是谁 hexo 的皮肤next
      • JianChun1:作者97年??同97阿 还在上大学 大二😂作者也是计算机专业学生吗?
        筑梦师Winston:@leo大魔王i 我上学早,而且大专毕业已工作过哦
      • 笨笨编程:有些高度并不是努力就能达到的。
        _闲看花开花落:@笨笨编程 努力能让你吃饱,天赋能让你吃好:smiley:
        笨笨编程:@筑梦师Winston 你这句并没有毛病。但和我想描述的不是一个意思。
        筑梦师Winston:@笨笨编程 但是不努力,是一定达不到的,做不做到是一回事,想不想做又是一回事
      • 咕咕咕鸟:93年的工程狗路过 去年5月打算转行,断断续续学到今年了 毅力还不够 没搞清自己的目标 导致学习仍没有进展 听了你的话 受益匪浅
        筑梦师Winston:@咕咕咕鸟 那就制定好计划,努力加油吧
      • 4efb738dd998:我每次都是这样想的,就是狠不下心来,自己太堕落,前端小白一枚,正在学习转php开发:sleepy:
        筑梦师Winston:@一jian你就笑_ 那就需要更加努力啊
      • 实在不想取名字:谢谢楼主 指点迷津 ,是该狠下心来好好学习了
      • GCS_DEVELOPER:96年的我,很惭愧~
      • MissSunRise:建议up建一个学习小组,加了很多群,一进去就是iOS凉了,看的头很疼,都退了。但是一个人学习又总是孤独的,没有人不是不能学,但是有人一起更好。
        筑梦师Winston:@把饭吃饱 哈哈,加油~
        MissSunRise:@筑梦师Winston 目前是一个快毕业的大学生,想毕业出去找工作,目前在学习iOS,很菜,时间不够用的感觉,还是想先专心把iOS学好,上面说了的,没有也没关系,感觉up的文笔和逻辑倒是很好。
        筑梦师Winston:@把饭吃饱 噗嗤,学习小组,跟我一起学全栈吗hhhhh,我的群也没人说话的啊
      • wokenshin:感觉你是一个很用心的人哦,加油!共勉!
        筑梦师Winston:@wokenshin 加油!
      • tylerzhang:感谢分享,说的很有道理。:+1: :+1: :+1:
        筑梦师Winston:@tylerzhang 谢谢~
      • 谢谢生活:对于一个非科班出身的培训iOSer,我觉得程序员真心不怎么样,要付出太多,工资也就那个样子。当然我是菜鸟,博主多指点。
        筑梦师Winston:@谢谢生活 是的呢,但是你如果这么想,原本你需要辛辛苦苦在厂子里昏天黑地,现在却可以凭自己本事坐在办公室喝下午茶,当然这是说我自己啦.这样就感觉不一样了,我在改变自己的人生,嘿嘿
      • 肥鱼_bf68:说的很对不错不错
        筑梦师Winston:@肥鱼_bf68 谢谢
      • 81bf3e10a89c:6666 请问文中点名的几个培训机构您是建议去还是不建议去?:smile::smile:
        筑梦师Winston:@Ja3on 木有听说过,应该不是专业的程序员培训机构,这里的专业主要是指师资力量的专业程度。
        81bf3e10a89c:@筑梦师Winston 非常感谢 不知海文教育您可听说过?
        筑梦师Winston:@Ja3on 首先你要判断自己是否有毅力和兴趣进行学习,二是确实是因为现在没有一个能够静下心学习的环境,那你就可以选择培训机构,文中提及的个人感觉还是不错的,但某些广告做的很大以及不知名的地方培训机构不推荐去..有条件就去大城市的学区,没条件就在家自学最好
      • Link913:iOS已经凉了,被小程序和混合开发取代是一种趋势,只有为数不多的大公司,和难以满足需求的再进行原生开发了.另外全栈不一定适合,精通一两门其实就可以了
        筑梦师Winston:@已删号这名字都有人用 请问您在iOS有多高的高度,可以否定一个行业呢?您是否有喵神那样的实力?或者知名度?恕我不能苟同您的想法,谢谢
        Link913:@筑梦师Winston 加油吧,或者你先了解下行情?
        筑梦师Winston:@已删号这名字都有人用 这种说法并不认同,保留个人意见,不予评论。
      • 当优秀成为习惯:两年前如果看到你的文章,也许我就不会进入程序员行业了,学新东西还是很吃力
        筑梦师Winston:@当优秀成为习惯 hhhhh没毛病
      • 来吐槽坝:你好!请问方便装载嘛
        筑梦师Winston:@大红头像 装载是啥....转载吗?
        来吐槽坝:@筑梦师Winston :smirk: 就是装载
      • 勤息嘻嘻嘻:对于很多人都很有帮助的文章,适合有意转行的人看,:+1:
        筑梦师Winston:@树上春春 加精是什么鬼,贴吧吗

      本文标题:如何做一个优雅的程序员

      本文链接:https://www.haomeiwen.com/subject/yreghftx.html