我们在学习的过程当中都在思考一问题,初级程序员与高级程序员到底有什么样的差别。我每次很辛苦都完成一个案例,为了一个小bug就要奋斗好几天,甚至十几天。过一段时间,在回过头来,想把以前敲过的代码在复写一遍,我发现我做不到。无数次不断的怀疑自己,无数次想要放弃。事已至此,也只能不断的坚持,人的选择在特定的时候,不得不让你一直向前。我问了很多的编程大牛的朋友,我得出结论就是,高级程序员,他们费力解决的bug,在过一段时间,也会忘淡忘。但是他们能过记住里面的思想。思想就是解决这个问题的过程。这么说有些空泛和抽象。
我举个例子:拿我们初学者学到的最简单的冒泡排序来说,这个代码是怎么实现的。我一想起冒泡排序,就想到就是进行两次循环,左右比较,那个大,就交换位置。这个是核心思想。然后再想到,冒泡排序就是每一次选出最大的一个数放在右的位置,缩小范围,选出第二大的数,放在缩小范围后的数组的最右边。循环结束,排序完成。根据这个思想,先不管那么多,先写出两个循环。需要缩小范围,那么第一个循环就需要降低数组范围,于是就把一个循环写成从数组的长度开始降低。第二循环,需要比较出这个范围内的最大值,并写在最右边。就把第二循环,写成从0开始到第一个循环的最右端。每次循环进行比较,那个大,就交换位置。完成本次循环。
这是我第一次写出的代码
public static int[] bubbleSort(int [] array){
for(int i=array.length-1;i>=0;i--){
int index=0;
for(int j=0;j<=i;j++){
if(array[j]>array[j+1]){
index=array[j];
array[j]=array[j+1];
array[j+1]=index;
}
}
}
return array;
}
}
代码写完之后,要再去看代码。找出里面不合理的地方进行修改。根据代码运行的顺序找出不合理。我发现如果i=array.length-1是,j=i,此时下面交换array[j+1]产生了数组越界。所以做了调整
修改后的代码
public static int[] bubbleSort(int [] array){
for(int i=array.length-1;i>=0;i--){
int index=0;
for(int j=0;j<i;j++){
if(array[j]>array[j+1]){
index=array[j];
array[j]=array[j+1];
array[j+1]=index;
}
}
}
return array;
}
}
找不出合理的地方,就运行,如果有bug,就要根据bug在进进行调试。
这里我想说明一点,任何一个程序最开始都不是之追求程序的完美性,而是程序的完整性,用一句通俗的话说,想不管那么多,先让程序跑起来。然后再让程序逐步完善。
比如说写一个app,对网络上的数据进行读取,然后呈现在listview上。可以下来刷新。
首先,我看到这个小案例,先要做的就是是想从网络上把数据给读取出来,无论什么样的数据都可以。我需要在控制台上看到我的读取出来的数据。
此时的问题将转换为怎么在listView中对数据进行呈现。
当完成基本骨架的时候,就需要对程序一步一步完善。你需要思考,呈现的时候,怎么才最好看。我对网络上的数据进行读取时,网络是断开的时怎么办。每次都要从网络上读取,能不能做一个本地缓存。我读取的数据在listview呈现太死板了,能不能做一个下拉刷新,对网络上的数据进行重新读取。这几样不断的反问自己,发现问题,就能开发出一个完整性较强的小案例。
在找工作中,大部分的公司看重你能不能使用已有的框架,和设计模式,程序员很重要一点,就是不要重复造轮子,把精力放在对于你来讲最有价值的地方。
如果你准备开始学习编程了,想要一份好工作。我有一些建议。
1.创建github,在你每一次完成一个小案例是,就将这个项目上传到github上,大公司看简历是,会看你在github上有没有经营自己的项目。
2.创建一个自己的技术博客。在博客上写自己的总结,写你的笔记,写你学到的东西,写你的体会。就像现在我一样,这是你找工作是,你学习过的证据。
3.刷题很重要。我在这里推荐www.nowcoder.com.可以下载牛课网APP,比如,你学习java, 你就每天练习10道java题,前期你肯定都不会。但每做一道题,就去背题目的解析,去理解。这以后对于笔试,面试那是至关重要。
4。学习数据结构与基本算法是很重要的,这是培养你程序思维的最有效,最直接方法。肯定难学,不要紧。一个编程题,规定一天1个小时看看,看不多了,过了时间就不要看了。明天再看,明天在看一个小时,看不懂,停止,后天再看一个小时,随着你对不断的学习,肯定会明白,对于程序思维,这就是水滴穿石的方法。
5。每天努力很重要的,有方法有计划是远远不够的,时间是唯一有产出的方式,即使你再笨,即使什么方法都没有。都不要紧,你要想做这个事情。天道酬勤,比别人更努力是你胜出的唯一王道。
第一次写这种分享博客,有什么问题可以一起讨论与交流,我的QQ:1982363896
学而无友,则孤陋而寡闻也。