初级程序员应该如何锻炼自己的逻辑思维和思考能力

初级程序员应该如何锻炼自己的逻辑思维和思考能力,第1张

对于初级程序员要想提高这两方面的能力,最好的办法就是解剖麻雀——向前人的经典案例学习。

初级程序员还不需要完成高难度的突破,需要做的是掌握基础知识,了解前人遇到了哪些问题,他们是如何思考和解决的,

多看多思考,经常动手做,就会大幅度提高自己这两方面的能力的。

一、先列三个常见的开发场景:

1、拿到一个模块详细设计文档,大部分程序员的通常做法就是开始搭建界面代码,然后从第一个按钮点击事件或页面Load事件开始写第一行业务代码。写的差不多了,就运行一下,发现哪里不是自己想的那样,就改改,直到改到是自己预想的那样。

2、做完了一个功能模块或几块相关联的功能模块,输入111asd,发现新建正常、保存正常,就提交给测试人员。测试员用测试用数据、测试场景用例来测试,发现有问题,就登记bug。对于严重的影响下一步测试的BUG,测试员就用内部IM通知这个开发人员。对于不影响继续往下测试的BUG,测试员就登记下来,等程序员有空时处理。

3、程序员一般工作不希望大家打扰,所以开发起来就是开发。等手头开发告一段落,就看看BUG库。发现有与自己有关的BUG,就从第一个BUG开始看起。就开始通过IM和测试员掰扯起来(这不是个BUG啊、业务逻辑不是你想的那样啊、我这里不能重现啊、你给的信息描述不清晰啊),于是IM几来几往,甚至跑过去当面交流一番,甚至会拉扯上产品经理一起讨论,更甚者需要项目经理或产品经理发起一个会议来集体讨论一下

这是不是很熟悉呢看这就是大部分程序员开发的三个步骤:写代码、自测、修复BUG。

二、说好的代码设计、代码测试呢看

代码设计看那不是都有开发平台么,已经固化了啊。那不是维护旧功能做完善修改呢么,又不是写新代码,只能在现有代码基础上修改啊,你又不能大幅重构。

代码测试看你丫需求讨论期、产品设计期、设计评审期那么长,都把研发项目时间占光了,就留下2个星期让我们写代码,我们哪里有时间搞那么深的测试。还想让我们搞结对编程看还想让我们搞测试驱动开发看

而且你看测试,什么功能测试、集成测试、性能测试、安全测试、安装部署测试、升级测试、迁移测试、UAT测试,一大堆测试,测试也需要很多时间。

一个项目,需求讨论、产品范围规划与评审、产品设计与设计评审占了一个半月,开发+自测就一个月,测试占了一个半月,这就4个月了啊。

三、为啥程序员写代码总是写写测测看

刚才大家也都看到了,大部分程序员都是从界面代码开始写起,而且写一写,就运行一下看看。为什么会是这种开发方式看

那是因为大部分程序员缺乏在脑子中的整体建模能力。只能做出来一点,真实的感觉一下,然后再往下。

有些是产品经理的上游就有问题,没给出业务流程图(因为产品经理也没做过业务),也没画清楚产品功能 *** 作流程图。

为啥没给出业务流程图看因为产品经理不熟悉业务,另外,产品经理也没有流程建模能力啊。为啥没画清楚产品功能 *** 作流程图啊看因为不会清晰表达流程啊。

很多产品经理、程序员,都缺乏分类、分层、相关、先后能力,更别说总结、洞察能力。

这是基本训练,是一个做事头脑清醒的人必备的技能,这不是一个程序员或产品经理或测试员的特定技能要求。

我经常看书就梳理书的脉络,每看一本就写一篇总结。我过去闲扯淡还梳理过水浒传、红楼梦的人物关系图呢,其实就在事事上训练自己的关联性、层次性、洞察性。

我经常面试一个人时,我会问这样的问题:逗你把我刚才说的话复述一遍,另外你再回答一下我为什么会这样看地,其实,我就在看一个人的细心记忆、完整梳理、重现能力,我也在看一个人的梳理、总结、洞察能力。

我个人写代码就喜欢先理解业务流,然后理解数据表关系,然后理解产品功能 *** 作流,大致对功能为何这样设计、功能这样 *** 作会取什么表、插入或更新哪些表,哪些表的状态字段是关键。

然后我写代码的时候,就根据我所理解的业务流、功能 *** 作流、数据输入输出流,定义函数,定义函数的输入与输出。

然后,我会给函数的输入值,赋上一些固定值,跑下来看看能否跑通这几个关联函数,看看还需要怎样的新增函数,或者看看函数的输入输出参数是否满足跑通。

剩下的事,就是我填肉写详细逻辑代码了。

当然,大部分人没我这样的逻辑建模能力。怎么阅读理解也想象不出来,也没法定义函数。毕竟有逻辑建模能力的程序员都很少,100个人里有10个,已经是求爷爷告奶奶好幸运了。

那怎么办呢看

我建议是分离分工配合,这就是现实中没办法的办法。让有逻辑建模能力的人来设计函数框架、来设计工具来设计代码模板,然后让没有逻辑建模能力的人来填肉写详细逻辑代码。

我们可以先从最紧要的模块开始这么做。不紧要的模块,还让它放任自流,让熟练手程序员继续涂抹。

我曾经还让有头脑的程序员做榜样,给大家分享他是怎么规划函数的,怎么做维护性代码的代码结构改善的。但是发现效果并不佳,其他人并没有因此能做代码设计。可能逻辑建模能力是个人的基本素质,是从小到大训练成型的,不是你一个大学已经几年的人能够短时间内可以训练的。

所以啊,还是让能走的人先走,让从最紧要的模块开始这么做。

不必担心这样做后,因为过去一件事被分工(一个做代码框架一个填肉)成两个人做了会降低工作效率。我们很多的工作效率低就是因为半瓶子醋搞出来的,来回反复修改。

真是应了刘德华在**里说的那句话:说你又不听,听又听不懂,听懂了又不做,做又做不好,做不好还不服气。

四、为什么大部分程序员不做代码测试或白盒测试或单元测试呢看

还是因为没有代码设计。因为没有函数啊。所以,一个按钮功能有多复杂,代码就有多长。我见过2000行的函数,我也见过1000多行的存储过程和视图SQL。怎么做白盒测试啊,这些代码都粘在一起呢,要测,就得从头到尾都得测。

所以啊,先学会设计函数,先写好函数,这就求爷爷告奶奶了。很多开发了5年的熟练手程序员,可能都未必会写函数。

函数的输入输出值就很有讲究。很多人都写死了,随着版本迭代,发现过去定义的函数参数不够用了,于是就新增了一个参数。然后,相关性异常就爆发了,其他关联的地方忘改了,到底哪些有关联,怎么查啊,本系统没有,没准其他系统就调用你了,你根本不知道哪个神经人曾经COPY过你的代码修吧修吧就改成了他的功能呢,而且里面的很多代码他看不懂也不敢删,只要他实现的功能正常了他也不管了。于是,你改了你这个函数,他的系统就莫名出错了。

所以,我一般会定义几个对象来做参数。另外,我也很注重函数的日志、函数的异常保护、异常抛出、异常返回。另外,我也很注重参数输入值的合法性校验。

所以啊,应该开发Leader们先制定函数编写规范最佳实践,输入输出参数怎么定义比较好,函数的返回值如何定义比较好,函数的日志记录应该怎么写比较好,函数的异常保护、异常抛出、异常返回如何写比较好。先教会一般程序员,先从会写函数开始啊。

当然,你光有一份规范,程序员们还是不理解、不实际应用啊。所以,还得Leader们做好典型的代码模板,里面是符合函数规范的代码框架,只有这样,一般程序员们才会照猫画虎适应了函数设计的编程习惯。

所以啊,我专门重新定义了leader的明确职责,其中第一个重要职责就是:负责工具/框架/模板/规范的制定,并且负责推广且普及应用落地。

你不明确定义Leader的这个重要职责,你不对这个职责做明确的KPI考核,谁尿你啊。你以为好的工具/框架/模板/规范是靠人们的热情、自发产生的么看我们还没有那么自觉高尚啊。

五、为什么大部分程序员不写注释啊看

我经常说一句话,千万别多写注释。为啥看

因为我们经常遇到的问题不是没有注释,而是更糟的是,注释和事实代码逻辑是不相符的。这就出现常见问题了:残存下来的设计文档是一个逻辑、注释是一个逻辑说明、真实代码逻辑又是一个,钟表多了,你也不知道正确时间了。

所以啊,产品文档、注释、真实代码,三者总是很难一致同步。我为了几百人研发团队能做到这个同步花了大量心血和办法,但我最终也没解决了这个问题,还把Leader们、总监们、我都搞的精疲力尽。

索性回归到一切一切的本源,代码,就是程序员的唯一产出,是最有效的产出。那么,让代码写的不用注释也能看懂,咱得奔着这个目的走啊。

为啥看不懂,不就是意大利面条式代码么,又长又互相交杂。

OK,我就规定了,每个函数不能超过50行。用这一个简单规定和静态代码检查插件,来逼迫大家尝试着写函数。有的函数属于流程函数,是串起其他函数的,有的函数就是详细实现函数,实现一个且唯一一个明确作用的。

有了流程函数和功能函数,而且每个函数不超过50行,这就比过去容易看懂了。

六、为什么大部分程序员不抽象公共函数啊看

我经常说一句话:千万别抽象公共函数啊。为啥看

因为大部分程序员缺乏抽象洞察能力。特别是有些积极热情有余、爱学习爱看书、半瓶子醋晃悠的二杆子,看了几本UML、重构、设计模式、整洁代码之道,就跃跃欲试了,还真敢给你抽象公共函数了。

一开始,他觉得80%相似,20%不相似,于是在公共函数里面简单写几个ifelse做个区隔就可以。没想到,越随着版本迭代,这些功能渐渐越变越不一样了,但是这个代码已经几经人手了,而且这是一个公共函数,谁也不知道牵扯多少,所以谁也不敢大改,发现问题了就加一个ifelse判断。

没想到啊没想到,这个本来当初公共的函数,现在变成了系统最大的毒瘤,最复杂的地方,谁也不敢动,除非实在万不得已,手起刀落。

所以,我平时告诫程序员,纯技术的、纯通用的,你们可以尝试搞搞抽象公共函数,对于业务的,你们还是简单粗暴的根据Leader们做的代码模板代码框架,乖乖的复制、修改、填肉吧。

你们啊,先从做模板做代码片段开始吧,咱们放到咱们内部代码片段开源库里,看谁的代码片段被别人复制的多,说明你的代码抽象设计能力越好了。那时候,我就大胆放心让你撒丫子跑了。在没有学会跑之前,给老子乖乖的复制、修改、填肉吧。

首先,你能想到平时找项目来进行练手,说明你是一个在技术上面是一个非常上进的同学。 想要找到项目进行练手,第一个想到的地方应该是 Github。Github 上拥有全球最多的开源项目,你可以从其中找到自己感兴趣的开源项目,然后参与到开源项目的开发中去。 能够参与开源社区,这也是很多互联网公司非常看重的一点。

其次现在也有很多举办计算机类比赛的平台,比如阿里云的天池大数据、Kaggle、Datacasle等。 你如果有时间,可以参与上面举办的比赛,进行项目练手。

想要在 Github 上面找到自己想要参与的开源软件,首先你要确定好自己对什么技术方向感兴趣。 比如对于我来说,我对实时计算非常感兴趣,所以我找了很多开源的实时计算引擎,最后选择了 Flink 开源项目,现在也在努力的参与到 Flink 的开发中去。想要使用开源项目来进行练手,你一定要确定好自己的技术方向,找到感兴趣的开源项目,接着就是尝试参与到其中。

确定好自己感兴趣的开源项目后,第一步就是去订阅官方社区的邮件组,在社区的邮件组里面,你可以看到很多同学对于开源项目的问题以及解答,你未来有任何问题时,也可以在开源项目邮件组中进行提问。 其次,你可以去开源项目的官方网站,将里面的官方文档阅读和理解一遍,这对于你未来 API 的使用和概念的理解,会有很大的帮助。

最后,你可以去开源项目的 JIRA(问题主页),查看自己能解决哪些 JIRA,随着你解决的问题越来越多,我相信你的能力也会提升的越来越快。

其他方面,你也可以去阿里云的天池大数据等平台上面查找自己想要参与的比赛,上面的比赛主要以算法类比赛为主,但也有性能优化相关,编程类的比赛项目。 我以前在上面参加过阿里中间件的比赛,但是还是和同学一起来进行参加,一路跟着做下来,自己的能力也提升了很多,而且在校招的时候,面试官也问了很多这方面的问题。如果你能够跟着比赛做下来,我相信你肯定能够得到一定的收获。

我会持续大数据、数据库方面的内容,如果你有任何问题,也欢迎关注私信我,我会认真解答每一个问题。期待您的关注

刚入门可以在GitHub或者各个技术网站找一些基础的DEMO,不需要很复杂,有几个知识点就可以了,熟练了在学其他知识点。最后再找一些完整的DEMO练,理解各个知识点之间的联系,熟练掌握常用的设计模式。

初级程序员可以拿公司的项目练手,从头到尾熟悉代码,然后跟着版本更新,巩固掌握的技能,有新技术点多在网上查查资料,多理解,活学活用。

高级程序员可以对现有项目进行重构,搭建框架,深入底层原理。

大神程序员一般都很神秘,是我膜拜的对象[呲牙]

给你推荐一些比较实用的小项目吧,另外千锋也有很多实战项目视频教学。

文本 *** 作

网络

线程处理

Web应用

文件

数据库

图像和多媒体

游戏

不用刻意找项目练手,可以从兴趣入手自己做一个项目,然后再不断的用新技术重构这个项目 。

从兴趣入手

为什么说要从兴趣入手呢?因为这个是一个需要长期进行下去的项目,如果不是自己感兴趣的东西,很难有动力坚持下去。

有哪些方向可以参考呢?比如你喜欢动漫,那么可以做一个动漫素材收集的网站;你喜欢足球,那么可以做一个 历史 数据统计的网站,其实只要是你感兴趣的都可以动手去做。

用新技术重构

一个项目做成以后并不是一层不变的,因为技术永远在更迭。当我们学习了一个新技术时,那么我们就可以用新技术把这个项目重构,顺便练练手。

比如说原来项目里有一个用Java写的用来抓取数据的爬虫,现在你正好在学习Python语言,那么你就可以尝试用Python语言将这个爬虫重构。

总结

我一直认为一个好的程序员必定具备良好的产品思维,可以根据自身的兴趣点做一个项目并长期维护下去,并不断的用新技术重构这个项目,在练手的同时还能兼顾兴趣,可谓一举两得。

想通过项目练手,这说明你有上进心,非常值得鼓励。互联网上有不少资源,这些项目是比较成功的实践案例,还有相应的教程或者丰富的文档,便于使用者理解,这类项目非常适合程序员练手实践。这些宝藏级的资源在哪里最多呢,毫无疑问,在GitHub上最多。

有同学会问,GitHub上面这么多项目,我应该如何找到合适自己的呢?

从自己的兴趣出发

每个人喜欢做的项目都不一样。有的人喜欢爬虫,有的喜欢自己做些小 游戏 。从自己的兴趣出发入手,这样有利于保持学习的动力和热情,肯花时间学习,自然进步就快。

从容易的项目入手

一开始不要选择太难的项目,要从简单容易的项目入手,再慢慢过渡到难得项目。就像打 游戏 一样,先杀小怪积累经验,最后再跟boss单挑。顺序不要搞反了。

想要找项目练熟的话,肯定是找已经有人做出来的,有源程序的,如果你在项目中遇到问题不懂又没有人指导那这时候源程序就是你最好的指导老师,找项目最好是找自己喜欢的,这样你做起来就不会觉得累,即使做一天都不会感觉到累,特别是每一次中的小小的成功可以让自己更兴奋和开心。我以前就是这样过来的。

任何项目都没有实际项目练手快,各种进度,各种bug,各种要求,想想就头痛,刚解决了一个进度,下一个又来了,下一个写完了上一个又出bug了,没玩没了,这是练手最快学习最快,网上找的项目只能全是熟悉,要解决问题却比不上实际项目来的快

程序员的世界虽然是很精彩的,但是写代码本身是很枯燥的。

跟工作不一样,练手的项目一般不会给你任何回报,除了能够提高你的水平之外不能带给你其他东西。为了防止我们因枯燥的代码过程放弃练手,要尽可能地去找热门的东西,能够与人交流才能使这个练手的过程丰富起来,来自同行或者爱好者的交流反馈能使我们在枯燥的代码过程中更有目标,更能坚持下去。一个人枯燥的垒代码学到的东西比与同行在论坛上或者开源项目上的交流中要少得多。

所以说找项目练手最好是找自己感兴趣的,并且最好是有很多用户或者同行交流的,这样才能学的更多并且不容易放弃。

可以去bilibili上找找相关的项目练习,主要还是得跟着视频老师讲解多加练习才好,熟能生巧嘛。推荐你可以看看尚硅谷bilibili上的视频,更新及时内容也是贴合企业开发的需求呢。

「我的做法是,自己创造项目,然后哪里做不出来就去问,去搜。

童年接触过很多fc 游戏 ,我就把他们重新做一遍。

- - - - - - - - - - - - - - -

1、掌握基础

在任何一个行业,如果你要成为大牛,首先就要对所学的知识进行融会贯通。对于编程也不例外,掌握核心的计算机科学以及最基本原理,或者某个编程语言的知识点,所有其余的高级的东西不过是这些东西的延伸,而这些将帮助你采用最好的方法设计和实施出最完美的方案。

2、公平竞争

尝试其他技术、框架、方法和观点。你的选择未必可行,别人的选择可能也有亮点所在,因而,要以开放的心态,来检验其他人的选择,有利于去掉你的偏见。

3、吸收他人经验

就像上面所说的,不要仅仅因为别人恰巧使用 Net、Java 或 PHP就去攻击他们。只要他们的编程还有点价值,对你来说都是大有裨益的。我们说,程序员编程需要经验,很多经验可以通过自己的实践来积累,但很多经验知识需要从他人那里学来。

作为一个IT行业的软件程序员,每天保持着编程的激情和兴趣,纵然是加班加点,这些也阻止不了程序员醉心于编程工作

程序员如何有充沛的精力。我认为这需要,你有充足的睡眠,科学的。调理方式。最好是健健身。早晨起来跑跑步。这样可以保证你一天精神充足。适当的时候放空自我。有时间去游游泳,养一些宠物。这些都可以调节自己的身体状态。来改变精神状态,保证你的经历永远充沛。

我是一个有将近十年工作经验的程序员,以过来的人讲奉劝各位程序员们一定要注意身体的保养。刚工作的时候自己干活特别拼命,每天都会加班到十一二点,后来养成了晚上写代码白天睡觉的坏习惯。慢慢的身体变得越来越差,脖子、肩膀和腰经常酸痛,记忆力变得下降,感觉整个人特别虚弱。后来我注意到了问题的严重性,开始做适当地改变。

1,养成规律的作息习惯

很多程序员都是过着黑白颠倒的生活,码代码的时候需要一个安静的环境,晚上的效率相对会高一些。其实这种方式并不对,长时间的熬夜还得对着电脑对身体的伤害非常大。

我现在的作息就非常规律,晚上十点前睡觉早睡六点起床,这样坚持下来身体恢复的很好。白天码代码的效率一样很高,而且在公司的时候自己的工作老板还能看到。不像以前白天老是趴着睡觉,睡不好不说,公司的人还会觉得你在偷懒。

2,加强身体锻炼

其实我私下可用的时间并不多,有时候晚上回到家还得看孩子,但是我可以抓住任何一个小的时间段做运动。在看孩子的时候,我会抱着闺女做上下蹲,会让她坐在我背上做俯卧撑。早上六点起床后我会出去跑一圈,然后顺道把早点买回来,围着小区跑两圈也就十五分钟,这样的运动量足够了。

锻炼身体有时候不需要专门花多少时间去做,抽出点时间就能够,只要简直下来身体素质肯定会提高。身体素质提高了身体就变得健康了,这样就不容易生病。

程序员都是吃的青春饭,但是也要注意自己身体健康,千万不要过分透支身体,要不然到老了各种疾病就会纷至沓来。

程序员的生活通常是忙碌、快节奏的。给人的印象是程序员通常比较安静,时常思考问题或在键盘上奋力敲代码。当然,这只是程序员在工作状态下给同事留下的刻板印象。其实程序员的业余生活也可以是丰富多彩的,但和小清新、文艺范儿不同,程序员的业余生活通常也有着职业的烙印。程序员通常都有哪些业余爱好?下面就举几个简单的例子吧。

一、技术宅。因为职业的需要,程序员或是程序媛通常都是爱学习的孩纸。笔者有不少朋友就是正在从程序开发往大数据方向转型,所以,需要学的内容自然会很多。所以在周末休息,不少同行也喜欢宅在家,看看技术博客或视频,给自己充充电;或者自己动手写写程序。不少程序员都是Linux发烧友,打开他们的系统看看吧,各种炫技,当然,这样折腾也是从事这一行业的一种乐趣。俗话说三句话不离老本行,看书也是一样。大部分人家里都有一落厚厚的技术书籍,虽然很多内容并没有仔细研究过,有木有!尚学堂陈老师总结:程序员的业余生活快乐而充实。

二、网络猎奇。上网是程序员不可或缺的东西,周末在家可以不翻看技术文档,但不可以不看网络上的一些新鲜IT圈内的资讯,即便是英文的也不能错过。因为网络上可以发现很多新奇的东西,很多时候能够给自己的工作带来灵感。程序员通常喜欢较为前沿的东西,这些内容很多也最先在网络上出现。遇到不懂的或感兴趣的问题,从网上搜索是获得答案最便捷的渠道。

三、翻看手机。如今,平板和手机是人们不可或缺的生活用品,对于程序员也不例外。其实程序员更多的关注手机的性能和性价比,在使用上,程序员往往会由开发者变为测试员。因为手机的系统、APP也都是同行们开发出来的,对于程序员而言,玩手机也成了向同行学习的机会,当然,如果程序员作为用户若感到体验不佳,难免会在论坛里吐槽。和大多数人不同,程序员通常不太喜欢用聊天工具漫无目的地聊天或者进行各种追剧,但手游确实一种不错的消遣方式。

四、运动健身。90后程序员小哥哥通常是比较重视自己身材的。工作日下班有条件的都会去健身房锻炼,遇到周末公休,健身当然是必不可少的一项内容。其实笔者认为健身是不错的爱好,可以促使有氧运动,缓解大脑疲劳,同时鉴于平时在工作的时候久坐,健身可以预防颈腰椎病的发生,还可以增强免疫力。

程序员通常都有哪些业余爱好?以上只是举一些简单的例子,其实除此之外,享受美食、和朋友聚会、户外旅行等都可以作为爱好来发展。毕竟,平时工作忙、圈子小,有这些爱好,可以开拓自己的视野,对职业的发展也是有益处的。

以上就是关于初级程序员应该如何锻炼自己的逻辑思维和思考能力全部的内容,包括:初级程序员应该如何锻炼自己的逻辑思维和思考能力、一名小白程序猿怎么快速提升编程能力、程序员是如何找项目练手的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10117098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存