⑴ 我是一个码农,求高效学习方法
首先,明确自己的方向,一定要具体。比如当年俞敏洪要做中国背单词的前100名。
其次,设立现实的目标,在一定时间达成什么样的结果。
最后,才是具体的工具和方法。
比如参考类似经历的人的成长路径,明确自己已有的知识基础和所欠缺的部分,通过阅读、培训、实践等方式补足。在这个过程中,更重要的是掌握学习的方法,才能举一反三,可以参考KMC高效学习方法,它是在互联网环境下,对学习的重新思考,尤其对填鸭式教育下成长起来的人,进行反思。
⑵ 程序员该如何规划自己的人生
其实大大小小的文章讨论程序员的人生规划不计其数。本人还是坚持谈谈个人对于程序员日后规划的看法,也是本人做事的一种风格跟对人生的态度吧。希望能给大家有点帮助。首先我们庆幸的是我们是软件行业的一员,我们作为程序员从最基础的“农民工”开始的,从反反复复的代码中成长起来。我们要为我们的职业感到骄傲才对,他赋予了我们善于动脑的习惯,程序员每天要应对的问题多种多样,我们要快速的思考,不知不觉我们锻炼出了思考的习惯。[当思考成为习惯,成功将随之而至]思考是前进的本质,我们在当初能进入程序员行业,就说明我们还是喜欢挑战的。但是话说回来,程序员的最终是需要归宿的,我们不可能一辈子这样处于“基层”。所以我们需要思考,我们以后的归宿在哪里,等过了三十岁,我们的本钱是什么。可能你会说我有的是编程的经验,是项目经验,我框架写的很好。技术就好比水,“可载舟亦可覆舟”。当我们沉浸在技术的水潭里,可能无法自拔。模式、框架等等太多了,我们是学不完的。多年的项目经验固然是我们的核心竞争力,但是这样的竞争力似乎显的有点“沧桑”,已没有当年的激情和霸气。仅靠那些辛辛苦苦的血汗“架构”,已不能满足我们所付出的回报。我们基本上都是来自小城市,到大城市上班工作,我们买不起房子。从二十出头就出来打拼,到了三十岁我想都该回家了;这短短的近十年的时间,对我们程序员来说真的很重要,我们不要企图一步登天,我们需要慢慢的学习。学习做人、学习技术、学习与人交流、学习公司的运行原理、学习盈利模式、学习的东西太多。我们要抓紧这短短的时间好好学习,不仅要学技术,我们还需要学习更多的大智慧、大战略。[没有远虑,必有近忧]所以我们程序员需要做长远打算,在学习技术的过程中,我们更多接触的是公司的业务。业务驱动公司日常运转,我们应该善于总结一个公司是如何运转的,包括管理、资金、营销、广告等等。我们是程序员,我们的资本是什么,相比大家都知道,我们有技术我们有项目经验。不错,我们是有这些,但是我们不能总是停留在代码的层次上,我们需要有产品的理念,代码不值钱,产品值钱。在不断的开发过程中,我们需要将自己提升到一个高度,看产品不是看代码。这样的理念对于日后的创业尤其重要。下面是本人抽象出来的人生规划图(程序员职业病改不了,喜欢分析):1。我大概将程序员的整个发展周期进行了基本四项的抽象。一:自身修养俗话说的好,先学会做人在学会做事。这是我们做人的根本,任何事情均是建立在与人交往上的。如果我们在三十岁之前还没有改变自己身上的缺点,没有让自己进入一个备战状态,还是整天浑浑噩噩,那就真的太迟了。这是纵向分析,所有的东西离不了它,我们日常需要注意了。二:技术的学习这是我们天天都在做的,但是技术这个东西变化太快。所以我们必须抓住核心的东西,以不变应万变。我们是.NET程序员,那么我需要抓住框架本身的原理,C#语言的原理,任何新东西都是建立在这些基础上的。就算哪天学起来也很快。如果有时间的话,可以学习一些底层知识。我们来看对技术的抽象图:2。技术是我们的核心竞争力,我们必须话大功夫去学习。由于以后自主创业的可能性比较大,所以多学点技术不坏。三:荣誉,提高自己的身份其实这种身份不是贬义词,而是我们的知名度,在技术的领域里,我们需要有一帮自己玩的好的朋友。比如一些技术的圈子如:MVP圈子,程序员俱乐部等等;在靠自己去跟人打交道的时候,往往真的很看重个人的荣誉,所以我们可以参加一些国内的或者国际的一些荣誉考试,MVP、Oracle、Java等等;证书在手还是有好处的。3.荣誉可以根据个人喜好自己去争取努力。需要有一定含金量的证书,能证明自身能力的证书才重要。四:三十而立的准备这是至关重要,十年的时间,我们好好总结好好学习对于我们后期的创业也好,干嘛都好,不只是一个简简单单的程序员了。我们有产品的理念,我们有与人交往的技巧等等。4。总结:这样全面的学习,等我们到了三十岁。那就全身是宝,那个时候再做什么决定可能60%意味着成功。
⑶ 如何成为一个牛逼的程序员
兴趣
兴趣是最好的老师
兴趣对于牛逼的程序员来说,是非常重要的;
对于没有兴趣的人,代码的世界往往是非常枯燥无味的,想要成功一名牛逼的程序员,毫无疑问需要投入大量的时间进行理论学习、代码实操;
而如果你可以一直强迫自己做自己毫无兴趣的事,且效率仍然很高,那请忽略这一点,你拥有成为任何一个领域大佬的潜质。
如何保持与维护兴趣?答案就在下文的Peak-End Rule峰终定律中。
峰终定律
峰终定律是指如果在一段体验的高峰和结尾,体验是愉悦的,那么对整个体验的感受就是愉悦的。
我们在学习中总是会遇到很多“难啃的骨头”,
我们又如何能在被这些困难阻拦之后,不磨灭对学习的热情?
拿我自己举例,我总是会在学习遇到难题或者是一天学习生活要结束的时候,到Leetcode上做一题我一眼能知道思路的算法题,这可以让我感觉到一天下来的学习都是快乐的,不至于磨灭对学习的激情。
所以大家可以在学习的过程中,穿插着学习自己最感兴趣的部分;
在学习的最后时刻,千万不要因为学习的困难而草草结束,一定再加一段自己最喜欢的部分。这样我们就可以欺骗到自己大脑🧠了。
拥有计算思维
学会跟计算机一样去思考
什么是计算思维?
其实很多框架,工具,设计的原理,其实其思路不过就是我们身边的一件一件小事的抽象应用。
应该多站在设计者的角度看待一个框架,一个设计,这样你就不仅仅是一个工具的使用者,慢慢地也就拥有了和设计者一样的思维。
将困难的问题简单化,我觉得这是一个牛逼的程序员应该具备且熟练应用的能力。
当你一边看书一边听歌,这就是并行处理。
比如:有一杯橙汁A和一杯苹果汁B,如何把两个杯子里的液体交换一下呢?我们可以用另一个空杯C,将橙汁A倒进空杯C,将苹果汁倒进A,最后将C杯里的橙汁,倒进B杯中。就完成了。这就是题目中的a,b中的数值交换,c=a;a=b;b=c;借助c 完成了两个数据的交换。这是计算思维中的数据交换。
“古典兔子”问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。按此规律,假设没有兔子死亡,第一个月有一对刚出生的小兔子,问第n个月有多少... 这是计算思维中的递归方法。
当你把你明天需要带的东西放进背包;这就是预置和缓存。
当你的东西丢了,你沿走过的路回寻;这就是回溯。
为什么停电时你的电话仍然可用?这是失败的无关性和设计的冗余性。
如何去锻炼?
没有人天生就有编程思路,编程思路是经过一定训练后,养成的。
学会独立思考
这一点是非常重要的,如果当你一遇到问题就寻求他人的帮助,那自己又如何有机会去训练自己的思维呢?
面向搜索引擎编程
这一项貌似与上一项有矛盾,其实不然,待我分析给你听:
我们平时遇到的编程问题95%其实都是别人已经遇到过的问题了,且一般网上已经会有较为详细的解决方案与具体的原因。
而想要通过搜索引擎编程找到答案,则就必须运用到将复杂问题简单化的思维才能较好地描述自己的问题;
在这些回答中,我们又要进行不断筛选,哪些方案是不可行的,而这个过程,我们又必须进一步地对这个问题的模型与其底层原理进行深挖。这就达到了锻炼思维目的。
学会举一反三
将新的问题转化为旧的问题。
使用之前的解决问题的模版解决现有问题;
之前在某公司实习的时候,领导让我设计一个高效且稳定的日志记录。
我就借用了Redis的持久化方式中的aof与rdb思想,
实时地记录每一条日志,保证日志记录的稳定;
再在空闲的时间,汇聚、整合过去的日志信息,以达到高效读取的目的。
付出时间与精力!
没有付出就没有收获。
付出时间与精力
精力就像种子,想要在哪里开花结果,就把他们撒在哪里。
没有真正的“天才少年”
其实每个被称为“天才”、“大佬”的人,背后的付出的精力通常都是常人的几倍。
所以,不要再抱怨为什么自己这么弱了,行动起来,把游戏和抖音卸载了吧。
提高效率的方法
提高效率是非常有必要的,大家都不喜欢做费力不讨好的事,这里推荐几个我试过的且收益不错的用于提高效率的学习方法。
番茄时钟
将时间细粒度化;
强制自己保持一段时间的高度专注,然后再进行适当的休息,会让自己进入更加投入的状态,效率会更加地高效。
这个方法,适合刚进入学习阶段的人使用,在专注力,自律性得到一定的锻炼之后,往往就能形成自己的生物钟,能够很好地控制自己的专注力了。
费曼学习法
这是我用过收益最高的学习法,没有之一!
费曼学习法的核心就是:将复杂的问题简单化。
假设你身边有一个8岁的小孩,你需要将你学的知识教授给他,且词汇量和注意力刚好能够理解基本概念和关系。
这时你就必须将你学的“高大上”的东西,将其类比成我们生活中常见的事物,用通俗易懂的语言让他能够理解。
这同时就在锻炼我们将复杂的问题简单化的能力,我们不得不去重新理清整个知识的脉络体系,从而达到一个查缺补漏的目的。
但是其实并没有人无聊到愿意来听你对这些知识的大白话解释(还不如刷抖音快乐),所以你只能想象你真的在对一个小孩子教授这些知识。
或者用写博客、画脑图的方式,将这些内容记录下来。
想象着有人想要了解这部分知识,而又刚好看到了你的博客或脑图,你该如何详细地讲述给他们听。
建议大家在学习一部分知识之后都能够写篇博客、画幅脑图来理清知识的脉络关系。既可以让自己更好地将知识体系整理吸收,也可以让自己更加直观地感受到自己在这一段时间的学习中的确是有收获的,增加了自己的成就感,达成良性循环♻️。
自我相信
当然这里的自信不是说盲目的自信,而是在拥有一定的基础之后,敢于跳出自己的舒适区。
心理学认为人对于外部世界的认识可以分为三个区域:舒适区(comfort zone) ,学习区(learning zone),和恐慌区(panic zone)。
比如说我们看一本书,如果这本书所说的内容都是我们所熟悉的,完全符合我们已有的世界观和人生观,这本书就在我们的舒适区内。
但如果这本书说的内容与我们原有的世界观和人生观不符,但是我们思考之后仍然能够理解接受,那么这本书就在我们的学习区内。
如果这本书我们根本就理解不了,那么就是在恐慌区。
只有在“学习区”内做事,人才会进步。
绝大多数人工作以后干的事情都是他的舒适区内的某种意义上的重复劳动,这怎么能进步呢?
随着年龄的增长,一个人获得挑战自我的机会会越来越少。
这往往并不是年龄歧视,而更多的是市场合理调配的必然结果。只有那些有特殊机遇的人才能不断尝试新的生活。
所以我们需要怎么做?
办法无非就是尽量呆在自己的“学习区”里,并且随时对“舒适区”保持警觉。
⑷ 怎样做一名高效率程序员
很多人问我,你怎么效率那么高,工作很忙,又要带娃,还写博客,还有时间运动。今天就写写这个话题:程序员如何提高工作效率
保持高工作效率,我觉得主要有一下4个方面,希望能对大家有帮助。
集中目标
工作列表
不论是开发还是设计,还是其他职业,工作列表都很重要,工作目标很明确。工作的时候才能格外专注,才不会走神。
用自己最熟悉的工具(我用Evernote),把待办工作列表(今天要做什么)记录下来,很重要的一点是记录分解后的小目标(分解任务也是一个很重要的能力)。同时也保持工作中产生的新的问题(任务),经常性地调整当前工作任务列表,根据重要性对这些任务进行划分,经常想着那些最重要的问题。
专注目标
专注目标不是那么容易做到的,需要学会分离与当前无关的任务/问题,工作中经常会碰到的问题可以首先寻找简单可用可靠的方案,并将心中的疑虑记录下来,集中成一个列表,工作之外翻翻书,系统思考和学习,而不会因为这个问题而叉开思路对相关的内容研究一番。总之,专注当前的任务,把新问题记录下来,回头再专心攻克。
学会避繁就简,在基本功的增强后,会发现很多问题可以简单阅读或查找文档,或浏览问题相关的库的源码解决;
学会简化问题
无论是在广义的工作方法/工作态度上,还是在针对具体问题上,很重要的一个个人能力就是化繁为简了。化繁为简是所有工作方法/软件设计的核心。将那些可以砍掉的工作砍掉,做到尽可能地简单。
从工作方法和态度上来讲,真正需要去做的工作才值得去做,大力砍掉那些不应该在当前工作中处理的事情。例如不必要的优化,不必要的扩展性,不必要的性能,不必要的功能,可以不要的技术,不必要的流程,不必要的文档,统统砍掉,一切可以没有的全都不能有。
工作中也可能遇到非关键的难题,通常绕过它们,使用更简单的方案就是了。纠缠于这些不重要的难题,最容易浪费时间。
从设计/实现来讲,最好的方案就是最简单直接、一眼就能看懂的方案。而且通常最简单直接的方式,通常性能也最好。
基本功
基本功的内容十分复杂。
第一项基本功是对整个计算机体系的理解,对操作系统/虚拟机/数据库本质的理解,对语言基础类和库的理解,这些是核心基本功。
第二项基本功是学习能力。通过快速阅读核心文档理解核心思想,然后其他的东西总是能从文档中查到就行。细枝末节的东西,即学即用,学过就忘可也。
第三项基本功是文档、代码、资料的搜索和收集,技术问题建议大家用Google搜索,有意识的整理出自己的代码库。
工具
选择工具核心标准,就是简单朴素可信赖,如果一个工具出几次诡异现象,那就干脆丢掉它。
熟悉工具,实际上我们工作中,就是和各种各样工具打交道,各种IDE,编辑器,版本管理工具,命令行终端,TODO工具等等。要想在工作中如行云流水,一定要熟悉工具,包括工具快捷键,命令,原理等等。
写自己工具,很多时候,我们需要重复的做一件事情,当你做第2遍,第3遍的时候,就应该想一想,能不能自动化,很多简单的几句shell就可以搞定,麻烦的一点的,可以先记录下来。比如,我就写了非常多的脚本:一个命令反编译APK并查看源码、提取当前版本号打git tag并提交等等。很多时候几分钟到几十分钟的事情可以压缩到几秒钟完成,也避免了对工作的打断。
⑸ 如何规划自己的程序员人生
每个人的人生中20岁到30岁这段时间,是在痛苦中摸索的时间,而且这段时间还有一个很奇特的现象,就是虽然是痛苦的但是大多数人还是有很多的快乐的事情来冲淡这种痛苦。孔子曾经给人的一生每个阶段一个名称二十弱冠、三十而立、四十不惑、五十知天命、六十花甲、七十古来希。20~30岁就处在弱冠这个时期,这时人最初尝试酸甜苦辣的时期,因为在此之前的我们都好像是生活在伊甸园里。
这个时期我们刚刚成年,很多的思想都非常的不成熟,因此对于自己的了解也就少之又少。尤其是在大学刚刚毕业这个时期,十五六年的教育让我们学到了一堆的理论,可是却没有学会任何一项关于如何适应社会,如何真正的了解自己的技能,所以在网上看到的大多数想寻求帮助的人以这个年龄段的人最多。
我在这个时期也是这样,心比天高,眼比手高,目光短浅,只知道技术,所以工作中得罪了很多的人。在不断的跳槽之后,我发现了一个问题——不管我的技术有多高,我周围的人并不会因为我技术好而对我有任何的好感,反而技术好还有可能得罪到某些人。我的事业也不会真正的因为技术高而得到质的改善。而且我感觉如果一个人的人品以及素质不够好的话,其技术也不会有多好。
到了如今,我已经进入而立之年,回头看看发现了一个很有意思的规律。这个规律可以从我枕边所放的书在这10年中的变化体现出一些事情。从开始身边的书大多是什么什么精通、什么什么快速入门、什么什么宝典之类的厚重的书。然后逐渐变成畅销的经典书籍,然后到了现在我身边的技术书籍已经很少了,取而代之的变成了诸如《程序开发心理学》《人性的弱点》《道德经》之类的了。我到底怎么了?
仔细分析一下,才知道,我已经开始对我的人品&人格有所考虑了。因为我感觉,我的技术已经很难提高的一个主要的原因就是我对于人生&自己了解的太少了。所以导致我在写程序或者做设计的时候不能将技术发挥到更高的水平上。有一句话——“程序人生”,这句话随着我的年龄的增长对其的理解也在不断的改变。现在我感觉写程序就好像是写人生,一个人有什么缺点,他的程序就会有一些相应的与其他程序员不同的缺点,而且不管怎么学习和读书都无法纠正。但是在我真正的从性格上改变了某些不好的东西后,才方发现这些错误以在逐渐的减少。
当我开始真正的理解了编程该如何做的时候,我也开始发现我的知识是多么的贫乏。而且这时的我也不会去再问我的前途该如何规划,某个技术是不是会落后之类的问题了。因为我已经找到了我该找到的东西。
上面的这段话,我想很多初如行的人会不理解。没关系,这些话就算是说给10年前的我听,我也不会理解的,而且还可能会反驳。我只是想说出我浓缩版的思想历程,让看到的年轻人知道,将来你也可能变成这样。
至于上面这个问题的所问的程序员的人生该如何规划,我的想法就是在有能力的情况下多多的深入技术——但不能太杂。在有条件的情况下多多的读一些非技术性的书籍以丰富我们的知识面,净化我们的心灵。只有这样你才能创造出设计精良甚至完美的软件。如果大家有心的话,可以看看那些历史上的设计大师或者是科学家,这些人虽然可能是建筑大师、物理大师、数学大师,可是他们有个共通的地方,那就是他们并不单纯的在某个主要的领域是专家,他们大多数都还是一个哲学家、思想家。这是偶然吗?明显的不是!在积累了这些该有的知识之后,你就会发现不再迷茫,因为你已经了解了自己,知道自己从事什么是适合的了。这样你就会更加专着于你所选择的东西。逐渐的变成了一个专家。等你到了专家的级别我想也不会在为人生的规划有所困扰了。因为每个人都有属于自己的规划,而且每个的规划都是不同的。
20~30岁是痛苦的发现自己的阶段,在这个阶段要充分的了解自己,根据这些了解找到一个适合自己的行业。另外就是要为而立之年准备足够的知识,因为到了30岁以后我们真正的钻研技术的时间就会逐渐变少,取而代之的是与人打交道。而与人打交道的看家法宝就是你的人品 要好。这也就是说为什么要三十而立,立的并不是你的事业,其实是你的德、你的人品。
要做事,先做人!!
(抱歉,我的口气有点说教的味道,真的不好意思!我只是想努力的表达出自己想说的东西。)
⑹ 如何提高码农产量
一转眼务农6年了,呆过大公司也去过小作坊,码农的人生除了抠腚还是抠腚。在所有呆过的公司里,感觉项目没有不延期的,真的是因为自己不努力吗?也没有呀!上班不怎么聊QQ回家也很少看动作片,还搞过几次通宵撸码的。
以前总感觉是项目经理把工时估少了,后来自己也做过项目管理,按照以往的经历估工时,做到最后还是会有些延期,要不就是加班拼命赶。我发现在项目中总是会遇到一些这样那样的问题,比如:客户需求变了,基础数据导入耗时太长,开发人员水平不高,以往的项目没作积累,每次都是从头开发... ...
感觉在开发过程中总是做一些重复的工作,比如权限的控制,其实大部分系统都可以通用;还有数据导入,最开始的时候我真的是傻到一个个模块的去写,复制、粘贴、修改,还经常有字段对错了;还有数据接口,系统做好以后要花好长时间去做数据对接... ...
在此基础上,我感觉到要提高开发效率一套高效的开发框架是极为重要的。加之MVC技术、Jquery技术大行其道我把这些技术也用到了自己的框架中,力求新的框架使今后的开发变得更加高效,达到事功倍的效果。
1、前端实现
以前我用过一段时间的ext感觉这个前端框架比较臃肿,加载速度慢,而且商用是收费的,所以没有考虑,后来考虑过easyui,也需要收费,而且感觉也不是特别灵活,所以后来就直接用Jquery来实现前端,用iframe的方式实现多窗体,自己再把样式调整得好看一些整个下来感觉一点都不比其它前端框架差,而且可以省去版权费用,降低了总体成本,我实现的前端界面效果如下:
2、通用模块
在绝大部分系统中,都会用到权限管理、基础数据\业务数据导入导出、单据编码、邮件发送等功能,所以这一块框架上也是下了功夫,把这些功能做得很灵活,配置一下在任何一个系统都可以使用。
本答案来自于互联网,仅供参考学习作用
如果您对我的回答有不满意的地方,还请您继续追问;
答题不易,互相理解,互相帮助!
⑺ 如何成为一名程序员
成为程序员的具体步骤:
第一步:
掌握一种编程语言。学习任意一种主流的编程语言,例如C++语言。熟练掌握一种语言的语法和基本的编程技巧。
学习时间:
3个月左右
注意事项:
编程语言和编程工具是两回事情,编程语言是指C++、Basic、Object Pascal等。程序设计语言,它们是像汉语、英语一样的抽象的语法规则,编程工具是指Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代码编辑器、程序编译器 在内的集成化、可视化的软件开发工具。C++源程序可以在Visual C++ 6.0里编写,也可以在记事本里编写,而同一个C++源程序可以用Visual C++ 6.0编译、执行,也可以用C++ Builder 5.0
编译、执行,所以: C++ 不等于 Visual C++ 6.0。
第二步:
掌握一种编程工具,学习任意一种主流的编程工具。注意编程工具要和第一阶段学习的编程语言一致,例如你学习的编程语言是C++,那么编程工具要选Visual C++ 6.0或者C++ Builder 5.0。熟练掌握这种编程工具基本用法,例如:菜单、组件、程序跟踪调试、编写Windows程序等。
学习时间:
3个月左右
注意事项:
这个阶段侧重编程工具的使用,同时进一步熟习编程语言,最后达到能熟练编写各种基本的Windows程序。
第三步:
掌握“算法与数据结构”这门课程,推荐许卓群的《数据结构》,熟练掌握各种常用的算法与数据结构。
学习时间:
4个月左右
注意事项:
这是一门不可或缺的软件开发课程,曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》,这说明了数据结构和算法的重要性。它能帮我们建立良好的程序分析与设计能力。
第四步:
实现一个模拟的小型软件项目,掌握软件项目的基本开发过程和方法。
学习时间:
4个月左右
注意事项:
自己完成一个模拟的小型软件项目,强烈推荐做一个MIS(管理信息系统)软件,参考用书推“中小型信息管理系统开发实例系列丛书”,人民邮电出版社,它的例子详实有效, 以它为基础再加以扩展,就可以做出实用的MIS软件来。