程序员是怎样解决问题的

程序员是怎样解决问题的,第1张

程序员的五部曲:

第一、理解问题

解决问题的首要前提是客观准确地理解问题,这样我们才能抓住问题的本质,对症下药。

客观

为什么强调客观呢?在生活中,这样的情境很常见。

我们可以很客观地去评价他人,甚至是给他人给出合理的意见,但是同样的一件事情,放到我们自己身上,我们可能就会觉得束手无策。

通常情况下,我们对于自己的评价是带走自我保护心理的。

自己遇到问题,我们会下意识地弱化问题,或者情绪化地来理解问题,造成问题的失真。

魔镜的故事就是一个最典型的例子。

准确

当我们对自身的问题评价做不到客观的时候,我们往往也不会准确理解问题。

还有,准确的定义是找到问题的关键所在。这个怎么做呢?

我们仿照时间管理的方式。

首先对自己所要解决问题的过程做一个较为详细的记录。

坚持记录几天之后,我们需要将所有的记录结果进行汇总,分析,找出漏洞最大的地方。

那么这个洞也就是所谓的关键,我们也就可以找到解决问题的突破口。

举个例子,笔者前段时间开始用手机软件记录自己的时间花销,记录几天之后,就会发现,自己时间浪费最为严重的是娱乐。

知道了时间浪费的黑洞,那么接下来就该思考时间黑洞产生的原因了。

时间浪费的主要原因是两个

第一,目标流失

当我在网上查资料,或者用手机写作的时候,总会进入其他的浏览页面,等到自己发觉的时候,时间已经过去大半。

这个我称之为目标流失。也就是我们在网页浏览的时候已经忘记了自己最初的目的,比如说你本来想找一本书籍的txt版本,但是后来你发现自己浏览了一下午的娱乐新闻。

第二,多任务处理

这个问题我是经常遇到。比如说,我在进行日更的时候,有新同学发微信,说查一下宿舍的分配情况。

我当时的反应是火急火燎地去其刷微信,信息查询完毕之后,和分配在同一宿舍的同学聊了一下午。

最要命的是,等到你刷完屏的时候,你有很大可能会忘掉你在更这件事。

或者说你还记得,但你的精力已经消耗的差不多了,你会告诉自己,等会再更,然后你有很大的概率会断更。

找到时间黑洞形成的原因,那么就可以寻求解决措施了。

第二、计划

为自己的病症设置一个完整的疗程,根据问题出现的原因,制定每一步要采取的手段。

第三、拆解

这一步是和计划联系在一起的,只不过它的要求更加细化。

它需要我们将计划的每一步都拆解成可以执行的步骤,感兴趣的读者可以参考笔者的另外一篇文章《如何让遥不可及的梦想变得触手可及?》

第四、卡壳

可以说,我们每个人都有改变的想法,也确实有很多人尝试去做了,为什么还有那么多的放弃者。

因为在执行计划的时候,出现的变数让我们卡壳了。卡壳再正常不活了,那为什么会放弃?

答案是自我负罪感。

当我们卡壳的时候,我们大多数人会产生一种负罪感,就是觉得自己定计划的时候,详尽完备,而且自己已经坚持了这么长时间,会陷入一种自我怀疑,也就是负罪感。

解决的办法是立即采取行动,而不是描述问题本身,这也是我们解决所有问题的一个心态。

我们不要紧盯着问题本身,你理解问题的过程就是在采取行动,相反,你逢人就说,我遇到什么问题,我有多痛苦,没有任何意义。

第五、练习

其实这个步骤是对前面几步的一个综合。

这五部曲是一个闭环,是需要反复进行的,因为问题会不断出现。

回头看过去的生活,我们的历程何尝不是这样?不断遇到新问题,不断解决问题,然后获得新的体验。

想看更多文章

欢迎关注大鱼号小妖影视

 为什么说程序员是一个极度劳累的工作?这个肯定是多方面的,究其原因,不外乎如下几个方面。

第一,现在的语言种类是越来越多了,而且各行各业都有自己所擅长的语言,有针对性的针对某个行业发展出来的语言,在易用性和性能方面,肯定有其独到的优异性,要不还不得被淘汰啊,这个应该没有人会反对吧?

第二,现在大阵营主要分为NET和Java等几大阵营,NET的生态的确没有Java的好,但是它也有自己独特的优异性,因为大部分技术都是微软自己的,所以框架比较统一,各个技术兼容性比较好,但是由于与之相关的系统等等都是需要收费进行使用的,导致很多中小型公司都转向对系统依赖性更低的Java等语言上,从而Java的生态变得越来越好,完全碾压了NET了,即使微软出了最新的NET Core技术,虽然在性能和易用性方面都远远超过Java,但可叹的是生态已经被破坏,现在外面使用NET Core的人员远远没有Java的多,要想恢复之前的生态,看来任重而道远啊。

第三,还有就是现在的企业的趋利性,导致生态变好之后,就各种的收费,导致使用它的人越来越厌烦,所以就转向开源的Java。当然这个无可厚非,但是使用者可不管这些,开发人员哪有那么多钱去买与之相关的软件和工具。

   你对底层程序员有何看法?他们的主要工作是什么?

程序员,外面都说人傻,钱多,死得早。

不过我本人是程序员,所以不完全认同,但是也不能说没有。程序员因为天天和代码打交道,代码是很多逻辑的部分,所以程序员一般逻辑思维不会太差,但是整体来说和人交接和情商就比较低。

a

因为一群大老爷们讨论需求什么的就是各种吵吵,基本上说弄就弄。

然后程序员的起步工资确实比较理想,但是后期其他行业工资也会上来。程序员的工资都是加班加出来的,不管多么好的公司,出产品的时候各种加班,有一些加班是阶段性,但是有很多的公司就是长期性,基本上每天都是加班。所以加班也是程序员的标签之一。

程序员因为逻辑长期脑力运动,再加上程序员都是很懒的,肯定也有爱运动的,但大部分都比较懒,我接触的懒人居多,不会特别去装扮自己(包括女程序员,基本都不会化妆的)。

所以程序员会有一点点的邋遢,但是邋遢和脏是两回事,邋遢只是不爱打扮,但是个人卫生一般还是可以的。然后体格方面也不会太好,长时间坐着,大肚子的概率和秃头非常高,我的几个老大头发都比较稀少掉头发,我现在也开始掉头发。

所以死得早应该是说这个。

还有一点,程序员聊天的时候喜欢说一些代码性的东西,外行感觉十分奇怪,但是这是程序员的笑话,这个是职业病,其他职业应该也有。

b

不过程序员谈恋爱的时候这些毛病一般很少存在,都会刻意去避免。

总的来说程序员其实也还好,只是一个职业不会有太大的区别,人际关系可能差点点,然后逻辑肯定不差。其他就是宅。

技术的日新月异,各个公司的血液不断换新,企业想要发展依赖于产品,而产品的开发归于技术的支持。新老开发人员的不同在于,老一辈的开发人员在年轻时学的技术在现在应用的很少了,生活上上有老下有小,体力和精力投入的要少,学习新技术的能力比不上年轻人,思路也不灵敏了,逻辑分析能力,理解能力逐步减退,唯剩经验,但是 IT 届的经验不如创新值钱。

既然从事了程序员,那自己就在这个行业学点东西。但是中国跟国外的程序员就不一样,中国的程序员懂得很全面,而国外的是对一个方面很精的这种。

c

1自己把技术学到位。往大公司发展,才能真正地学到东西。2实在不行,用做程序员这几年的资金,做点小生意,有魄力,就往大的方面发展。要不就安安逸逸过一生。

很多人想要成为程序员,在学习编程的过程中,面对各种bug和源源不断的问题,有时会对自己是否适合编程这一问题产生困扰。

作为一名教授全栈Web开发的教育工作者,我已经带领很多新手成为了程序员。好消息是,我发现没有任何人是不能学习编程的。我把它看作是一种基本的人类技能,就像阅读、写作和算术一样,任何人都可以做到。它是我们人类能力的一部分,只是需要学习。

在过去的几年的教学中,我目睹了不同的学生在学习过程中的斗争,以及在他们的挣扎中出现的一些共同问题。

下面的列表将帮助你了解你是否喜欢编程

1、缺乏好奇心

如果你对计算机是如何工作的缺乏好奇心,那么,作为一个程序员,你将永远不会成功。

学习的一个基本要求是对你所学的东西有积极的兴趣。如果你没有一个对技术好奇的头脑,你就没有精力去坚持学习要成为一个成功的程序员所需要的广博而深入的知识。相比之下,技术的世界就像一个巨大的海洋,里面充满了各种有趣的领域、相互联系的思想和各种可能,它们可以激发人们的想象力。想要潜入这片海洋并发现你所能发现的一切,需要内在的动力。

找到你的好奇心:问问你自己,编程是否真的让你感兴趣?如果没有兴趣,去找你感兴趣的东西,以节省时间和精力。但是如果你的答案是感兴趣,那么就强迫自己去发现一些你以前没有注意到的新事物,认识到浩瀚的技术海洋,再往下潜一点。

2、缺乏自主性

如果你不培养自己解决问题的能力,你就永远不会成为一个成功的程序员。

毫无疑问,要成为一个成功的开发人员,你必须对自己的学习能力充满信心。这实际上是一项基本的生活技能,如果你年满18岁,没有人有义务教你任何东西。这就是现实。当你想学习技术所需的技能时,首先要学会的是,在谷歌中输入你想要的任何东西并获取你需要的信息。除此之外,所有编程语言都有文档和规范,这些文档和规范对语言的工作方式解释的非常清楚,它们就像字典一样。作为一个程序员,最快速、最可靠的学习方法就是简单地阅读这些文档。

当你有问题的时候,在问别人答案和查阅官方文档之前,强迫自己先搜索一下,节省别人的时间。

3、面对问题缺乏毅力

如果你在遇到问题时轻易放弃,作为一个程序员,你将永远不会成功。

编程的本质是解决问题,这也是计算机产生的全部原因!每当你开始编写一个程序时,你总是会遇到一大堆问题。一旦你解决了一个问题,那么几乎总是有另一个问题在后面等着你。你在进步,但总是会有新的问题要面对。

这堆问题会让人望而生畏,令人感到沮丧。如果你觉得程序应该「能用就好」,那么你就没有精力坚持下去,因为问题还在继续出现,它们会一点一点地击溃你的情绪和决心。从字面上来说,你的工作就是找出程序为什么不能跑起来。

从我在授课上的经验来看,通常每个班都有一两个学生,和其他学生相比,他们似乎更容易遇到更多的问题——通常是非常随机和模糊的问题。我提醒学生,他们面对的问题越多,学习越深入、越彻底的可能性就越大。如果他们能通过这些问题获得深刻的理解,他们会很快发现他们变得更加自信了,因为他们面对和解决的问题比普通学生多。

你需要认识到,问题不仅仅只是问题,它实际上也是挑战。你所面临和克服的每一个挑战都能让你更深入地理解技术,更好地面对新的挑战,并迅速解决旧的挑战。

4、解决问题之后没有成就感

如果你在解决一个问题后没有兴奋感和成就感,作为一个程序员,你将永远不会成功。

与上一个问题相关的是,你成功地解决了一个问题,却缺乏「良好的感觉」。当修复bug和问题变成了一个永远不会结束的事情时,你会失去与克服问题的动力。

当你解决一个问题时,你需要的是多巴胺的释放。这类似于在电子游戏中完成了一个关卡,或者解决了一个像纵横字谜或数独这样的挑战。我们都知道,坚持通过一项挑战,然后最终赢得比赛,一般都会有成就感和兴奋感。但是如果你失去了感受这些快乐的能力,或者从一开始就没有真正有过这些感受,你将无法体验到编程带来的快乐。如果你把编程看作是一种磨砺,你只想尽可能容易地得到结果,那么你永远不会真正成为一个成功的程序员。

无论何时,当你解决了一个一直在努力解决的问题时,无论这个问题多么微小,你总是为你的成就感到骄傲。你需要休息一下,祝贺你自己完成了一项出色的工作,让成功的感觉渗透进你的心里,为你即将面临的下一个问题注入活力。

5、无法独立思考

如果你期望别人为你着想,并且主动看到你自己所在的处境的细节,你将永远不会成为一个真正成功的程序员。

当你在学习新的东西时,很容易感到缺乏知识和经验,并没有自己的观点。主动做事或者说错话似乎是有风险的。对于错误,我们的内心都有一种恐惧感。当对错误的恐惧抑制了你的探索和好奇心时,你会扼杀开发真正知识、从经验中获得的知识和「失败」的能力。当你需要依靠「权威」的观点、一个受欢迎的博客、一个最佳实践或「教科书」的答案时,那么你就没有真正地整合编程的知识。你需要对什么有效,什么无效形成自己的观点。你需要理解为什么你认为你的解决方案有效,以及使用这个方案有什么好处。你需要建立一个微妙的视角,超越那些显而易见的东西。你需要能够「证实」你的立场。

为自己着想。通过你的经验和批判性思维技巧,发展出你自己的思想体系。做出合理的猜测,坚定立场,并愿意随着新信息的出现而改变立场。

6、僵化、狭隘、混乱的思维

如果你的思维僵化,并且难以保持代码的条理化,那么你将永远无法成为一名真正成功的程序员。

我有时在学生中看到两个极端。第一种是僵化和狭隘的思维方式。拥有这种态度的人拒绝帮助,尽管会有反馈,但不会有改变。他们看事情只从一个角度看,别人给的建议被忽略。

我看到的第二个极端是思维混乱。学生们似乎使事情变得更加复杂,他们的代码杂乱无章,难以理解。他们过度思考问题,写100行代码,而其中只有10行是有用的。

当这两种心态结合在一起时,结果就是一种用蛮力的方法去设计程序。我们需要的是回顾解决方案,重新评估它,放弃最初的方法,并重新组织方法。

无法看到其他可能性或无法反思反馈会抑制成长的能力。思维杂乱无章会减慢你的成长速度,阻止你看到那些原本显而易见的模式。你的工作质量也会下降。

自我反省。你需要退后一步,看看你是接触的事物的大局是什么样子的。你要怎样才能做得更好?你能做些什么让你的生活更轻松吗?你需要什么来帮助你?

7、需要「正确」的答案,而不是识别一系列「好」和「坏」的答案的方法

如果你认为编程的最终目标是找到正确的解决方案,而不是一系列解决方案,那么作为一个程序员,你将永远不会真正成功。

当开始学习技能或编程时,学生往往想知道他们所做的是否「正确」,而答案总是「视情况而定」。

计算机科学是一门评估权衡的科学。在不同的环境下,哪条路更好,这完全取决于所处的环境和目标。当你把编程看作是一个有正确答案或错误答案的测试时,你就失去了对全局的认识,放弃了你的创造力。任何答案都可以是「正确的」,前提是你能根据具体情况证明这一点。现实情况是,编程更像是写诗或写短篇小说(如果程序很大,则可能是小说)。在你的代码中可以看到一种美学和美丽,这些东西有时只有你和其他程序员能够识别出来。你决定解决方案的原因,以及你对答案的设想,比「正确的方式」或「错误的方式」更重要。拥有一个艺术家的头脑可以让你编的程序具有选择和可能性,而不是认为只有一种处理方式。这就是编程的美——有很多方法可以解决问题,考虑不同的可能性,然后决定哪种方法最适合当前的情况。

创造性很重要。你要认识到,解决问题的方法有很多种,通过经验和积累,你会对哪些解决方案比其他解决方案感觉更好产生细微的理解。纵观全局,想象不同的可能性,相信你的直觉,你会得到更满意、更好的解决方案

如果你对学习编程感兴趣,我鼓励你开始这段旅程。记住提到的七条,并开始学习、探索在线资源,这些资源可以让你快速学习。你不会后悔的!

合格程序员,对于一种计算机程序设计语言,我们将其分为语法、语义、语用三个层面。仅仅掌握语法是不够的,不算学好。但是很多人,在履历上写自己掌握(甚至精通)了某种语言,其实就是解了语法,会写简单的程序而已。这就是为什么我们行业特别不喜欢“精通”这个词的原因。

现代软件开发,规模都比较大,不是写个HelloWorld那么简单,也不可能每个项目每件事都从头开始造轮子,我们都是站在前辈、同行们的肩膀上工作的。也就是说,语言之外,还有“库”这个东西需要掌握,不然就寸步难行。库有语言级别支持的BuildIn的库,比如JAVA里面的util、concurrent,CPP的IOSTREAM、STL等等;更多的更丰富的还有第三方提供的库,比如JDBC、Servlet、EJB的implementations等等。这些东西掌握了,干活儿才可能得心应手,不然寸步难行。

比Libaray更高层一些的,是Framework。框架的作用在于,将某一方面开发的BestPractices搞到一起,给你提供一个更易用的、不关注底层的脚手架。比如做企业应用的,SpringFramework是标配了;访问数据,Hibernate或者MyBatis也离不开,很少直接用JDBC去干活的了;做WEB的,各种MVCFramework起码得掌握一两个(springmvcorstruts2);做网络的,Netty,MINA怎么也得掌握一个总而言之,框架是绕不过去的一个门槛。

然后呢,就是环境、辅助工具。应用服务器,怎么也得会调试配置那么两个吧。TOMCAT是入门标配,JBOSS,WEBLOGIC之类,起码要弄得跑得起来;针对不同应用场景,还要会选择。开发/管理工具,ECLIPSE是标配、GIT和SVN起码要搞熟一款;其它比如单元测试工具、Build工具、测试覆盖率、CodeReview这些插件也得知道怎么用。

最后,通用的,计算机科学的基础,不说多扎实,至少不能一窍不通。说起来就那几大件, *** 作系统、数据结构&算法、编译原理、体系结构。要懂一点点,你才知道你编的程序是怎么run起来的,哪儿可能存在效率问题性能瓶颈,除了问题知道怎么debug。如果仅仅把计算机当作一个黑盒子,那也不算学好了。

最最后,还有一样,就是你要训练一下,快速理解领域知识的能力。你参与做一个项目,你懂的只是上面这些专业知识,但并不懂客户的行业知识。如何尽快地理解业务,并用你手头的工具实现业务逻辑,这点对程序员而言是非常重要的,否则你做的东西客户总不满意,GET不到重点,很麻烦。

我觉得这是一个合格的程序员的基本要求。你看,我并没要求你懂需求工程、懂项目管理、懂架构设计、懂很多算法、模式,甚至更深的专业知识。

程序员之间也是存在很大的区别,他们之间最大的区别主要表现这这个方面,跟大家分享一下。

能力。一些程序员刚刚进入一个单位,学习的东西还不多,他们的能力差距要比老员工差很多。

经验。有的程序员,自身的能力是提升上去了,但是,由于呆的时间相对比较短,经验还不是很足,面对一些疑难杂症,还是不能解决。

薪资待遇。因为能力不同,所以获得的回报也是不一样的,一般高级程序员的薪资都是非常高的,毕竟他们能够解决很多困难以及复杂的问题。

当然,除了这几个方面之外,还有一些也是有差距的,比如说头发,思维以及工龄等等。

大家会发现程序员的浪漫体现在很多个地方,尤其是在工作的时候,他们也会把自己的心情加入到代码里。所以大家也会觉得程序员非常的可爱,在这个过程当中也可以让他们变得很有成就感。所以说将工作和生活联系到一起,大家也能够找到自己的价值。

每一份工作的存在都会有一定的理由,在这个过程当中也有一些人比较喜欢程序员这个行业。之所以会出现这样的情况,可能是因为大家比较喜欢敲代码的过程。而且在敲代码的过程当中又可以加入自己的浪漫,因为在这个过程当中他们也会加入自己比较喜欢的元素。甚至还有一些人群会将自己特别喜欢的东西放到代码当中,在这个过程里也可以体现出他们对生活的热爱,而且程序员也会觉得这一份工作特别的有趣。

甚至还有一些人在工作的过程当中,还会找到自己的成就感。之所以会出现这样的情况,可能是因为他们对待工作比较认真。可是还有一些人觉得敲代码这一份工作比较繁琐,甚至还有一些人会觉得自己比较无聊。遇到了这样的情况之后,大家也可以利用敲代码做一些有意义的事情,这样的话也可以找到自己的成就感。甚至还有一些人会将自己热爱的东西和敲代码联系在一起,在这个过程当中也可以让他们变得很快乐。

所以说序员这一份工作非常的有前景,在这个过程当中也值得大家的学习。而且相关的公司对员工也非常的贴心,在这个过程当中还会给员工提供各种不同的待遇。因为他们也知道程序员的工作比较辛苦,所以公司的负责人也比较体贴。因此年轻人也可以选择从事这一份工作,在这个过程当中也可以让大家享受到不一样的管理待遇。而且在工作的时候,大家也可以做一些自己比较喜欢的东西。

以上就是关于程序员是怎样解决问题的全部的内容,包括:程序员是怎样解决问题的、为什么说程序员是一个极度劳累的工作、你对底层程序员有何看法他们的主要工作是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9771676.html

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

发表评论

登录后才能评论

评论列表(0条)

保存