从艺术生到程序员:我的自学之路与职业转型

2024-08-06
来源:网络整理

我先说一下我的背景。我高中是学美术的,平时不怎么学数学。后来发现自己没有艺术天赋,就读了一年大学,然后做了两年淘宝美工。攒了几万块钱去参加编程培训(java)。然后学习第三个月就开始看差异了。因为发现他们的逻辑关系很复杂(请见谅,当时上学的时候只专注于画画和打球),所以模块就没学了。

但我不想放弃,先在一家服装公司找了一份网络管理员的工作,自学了计算机技术,看了不下8本大学计算机教材,平均每天学习6-8个小时,周末学习10-12个小时,顺便学习了前端知识(因为编程入门比较容易,但是逻辑性比较弱)。最后在广东找到了第一份开发工作(那一年做过web前端和游戏前端)。后来第二年在家自学了3个月C#,在广州找了一份.net cs开发的工作(当时很倔强,因为培训里后端没学,想攻克)。

进入正题,我介绍了一些背景,我的逻辑思维能力大家都知道,我讲一下这一年来后端开发的经历,因为是医疗系统,主要做数据库,用了30%左右的.net。

说一下我对后端开发的感受。在培训的时候就觉得好复杂啊,各个类对象之间有相互包含关系,有继承关系,如果逻辑思维能力不强的话,很容易就搞混了。(因为那时候学的是艺术设计,美术,大家都知道是讲视觉思维的,不是逻辑,是视觉。)再加上我记忆力也不好,程序开发的逻辑关系不容易记住。后来我做网管的时候就自学了(那时候因为学了不少IT知识,逻辑思维强多了),就觉得没那么难。另外那时候学过前端,做游戏开发,做web前端的时候就觉得。那时候有后端的同事,自己也学了一点PHP,结合自己原来的Java知识,很多原本比较混乱的后端开发知识点逻辑关系就理顺了。 可能我从事IT行业两年了,多用逻辑思维,会更好。

后来我在家自学了C#。然后我去了广州找了一个C#的开发人员,发现其实挺难的。有一次领导布置任务的时候,因为要设计很多东西,各种模块。数据库会涉及到很多表。C#会涉及到一些业务代码做功能修改。接到业务的时候我很茫然,感觉自己像一只无头苍蝇,不知道如何下手,因为之前做过前端,前端的东西是看得见的,但是后端全是数据、逻辑之类的,看不见摸不着的,让我无从下手。当时心里很着急...甚至有点害怕。

其实不复杂,把各种表之间的关系拆开,功能代码之间的关系就很简单了。问题是我脑容量有限,现在准确描述自己关键的逻辑,逻辑不复杂,但是逻辑数量多,连接多,不知道我的理解对不对,耦合性很强。(我当时没学离散数学,其实可以用一个图来表示各种事物之间的联系,会清楚很多。)后来找到了一个很好的办法,解决了我逻辑思维差,记忆力差的问题。

把解决思路写下来。。。一开始我用一个txt文件来记录,把我的思路和发现的问题都写下来,然后自己走到那一步,这是最基本的方法。

后来完善了自己的方法,用有道笔记把解决思路记下来

在此处插入图像描述

这里有一些![在此处插入图片描述](,pdGk,,,,,t_70

这是我自己的解决方案的一个例子。

先自己分析问题。像做数学题一样得到一组已知条件,然后利用已知条件推导出隐含条件。包括领导的建议。界面截图,把有用的信息全部记下来。

像数学问题一样,首先列出条件。

这时候我会思考,分析我收集到的已知条件。然后慢慢思考,写下我的解决思路。规划我自己解决问题的步骤。(条件:(解决问题的各种获取信息的方法)分析:写下我对条件的分析和理解。思路:根据分析写下我解决问题的步骤。)

然后我会把自己的想法执行,执行的时候会发现一些当时没发现的条件,或者更好的解决方案,这时候就会写下二次分析和思考,在原来的基础上写二次分析,是对问题进一步的理解和思考,再次写下自己的思考步骤(二次分析:(对问题的理解更加深刻,以及更好的已知条件)思路:写下上一次思路的改进或者更快的思路)

现在我这样写代码

当遇到问题或者bug的时候,先别急着动手,先列出条件,分析问题,然后列出解决问题的方案(csdn上有些经验5年以上的高手也支持这样做),再采取行动。如果发现更好的条件和解决方案,可以做二次规划。这是我通常的做法。

这种方法并不是适合所有人,可能更适合我这种出家修行、数学基础较差的程序员。

其实这也符合理论→实践→理论的认识规律。。。

接下来说一些与逻辑思维无关的东西,前面那部分主要是帮助逻辑思维和记忆力差的人理顺逻辑和思维。后端编程可能和所有的编程一样,路径很重要,如果数学上解决问题的思维方法不对,往往就解决不了。后端也是一样,找到合适的路径解决问题,就是成功的一半。这是我这段时间的体会。思维是一个东西,我比较懒,下班后不学编程,学数学。所以一般都会问领导,因为他们解决问题的经验足够多,问他们基本上都能找到最短的路径。第二件让我很惭愧的事情就是技术知识,当你对工作所需要的技术知识有足够的了解后,你就可以找到更合适的技术了。其实问领导就是解决这一步而已。论坛上说编程计算机的核心是数学,领导的思维可能不是最好的。 有些思维很美的大神(一般数学非常好)有很漂亮的解决问题的思路(哈哈,原来我的说话方式很简单,是因为我受艺术熏陶已久)。

我只能达到技术层面。

我先说一下我自己对编程的理解吧。(哈哈,一万人中有一万个哈姆雷特,我自己的经历比较复杂,因为我上学的时候是个穷学生,高中学的是美术,后来跟女朋友搞艺术设计,后来做过网管,写过网页,写过游戏,现在写后端。)工具不重要,重要的是思维,可以说是解决问题和赚钱的思维。会编程,有好的思维很重要,因为现在IT技术迭代的很快,各种各样的语言,框架,太多了,如果你把精力都放在这里,那么你就不会有什么积累,也不知道几年后你会用到什么工具,也就是说你以前学过的语言框架是没用的,但是好的解决问题的思维,你花精力去培养,可以让自己有所提高。

这只是我的一个小小经历,希望可以启发其他人分享自己的想法。

分享