如何快速学习

最初想到这个问题是因为自己跨专业到了计算机。众所周知(如果你不知道,我现在一说你也就知道了:P),计算机行业的发展是非常迅速的,每年都有很多新的技术产生,这样计算机行业对其从业者要求就会很高,因为他们要不断地学习新的技术来应对日新月异的技术更迭。

看了很多计算机专业的招聘以及网上对计算机从业者的要求,发现学习能力都是一个合格的程序员的必备能力之一;同时因为自己跨专业,发现和身边科班出身的同学们在专业方面的能力差别很大,也希望能更快的学习到更多的知识,所以在自学计算机基础方面的课程时也注意思考“如何快速学习”这个问题。在经过了一年的学习,阅读了很多著名程序员的博客之后,将一些经验和思考总结在此。

从本质上说,我个人认为,是不存在“快速学习”这个概念的。一个人在某个方面学习的速度:1)和他在这个方面所花去的有效时间是成正比;2)和他之前对这个方面的知识储备是成正比的。

这里面的第一点比较好理解,对于大部分人而言,你在一个方向面花去了多少时间,就会有多少收获。不论是学习知识、技能还是你对自己兴趣爱好的追求。同时,我们生活中一定观察过这样的现象:有些人(也可能是自己)在某些学科花费了很多时间,但是收益却不明显,很大的原因就是这些花去的时间并不都是有效时间——真正用于这方面知识积累的时间。最常见的例子就是,中国很多大学生学习英语好多年,然后有很多人竟然连四、六级都没能通过,就更不用说能够流利使用英语了。根本的原因之一就是,他们并没有真正的想去学习(使用英语解决问题的技能),都是抱着应付考试的心态去努力(当然还有一个重要的原因是方法不太恰当)。

对于第二点,这也是我跨计算机专业之后才发现的。当时还有一个同学也是跨专业,但是他很快就入门了,而且学习效率更高。经过比较,我才发现这个区别的:虽然同样是跨专业,但是他的本科学校更好(高中学习更好,这也意味着他自我管理等等方面会好很多)、要求更高,本科学习过《离散数学》、《C语言》等等科目。这些都算是计算机方面的基础性学科,很多计算机学科的学习有了这些知识都会事半功倍的。

当然,学习的速度还和方法有关,甚至有很大的关系,不过当我们刚刚接触一门学科的时候,我认为方法的作用是不太明显的。因为你对这个方向上没有太多的认识,都是看网上或者听前辈讲述方法,真正重要的东西往往都要自己有了一定的知识积累,才能感觉到学习方法的重要。

将以上的内容进行总结,可公式化表示为:

v = \alpha \times t + v_{0}

v :学习速率; \alpha :方法系数; t :有效时间; v_{0} :初始的知识储备,甚至可以包涵一个学习者的整体能力。

因为,学习速率和方法成正比,和有效时间成正比,初始的知识储备或者一个学习者的整体能力会对初始学习速率有影响,不过对于学习速率的影响总是有一个范围。

那么如何做到“快速学习”呢?

我个人认为,要做到快速学习,一个学习者(尤其是一个领域的初学者)应该具备以下能力或者习惯。

1)良好的自我管理能力。

前面说了,学习速度和花去的有效时间成正比,那么就需要良好的自我管理能力来约束自己,不要终日拖延,不要有三天打鱼两天晒网的现象,要能够静下心来学习。同时,在刚刚进入一个新的学科的学习是有很多困难的,尤其是自学。我相信大家都有过类似的经验:在初学某样事情的时候会觉得这个事情特别困难,这因为初期时我们对这个方面的重点和学习技巧掌握的太少,这个就要多看看前人的经验了。

2)查找所学行业的经验,找到适合自己的方法。

我们都是站在巨人的肩膀上去寻找前方不太清晰的路途的。很多问题已经有了相当多的经验可循,而且现在互联网发达,遇到事情之前上网查查,寻找一下类似的经验,可以省去很多不必要的弯路。而且每个人学习的方法不同,学习的习惯不同,有人愿意早起,有人愿意晚睡,看看其他人的经验结合自己的实际来做出自己的计划是非常重要的。这个有点像考研的时候你会上网或者向专业学长询问考研经验。这点对于新学习一个行业非常重要。

3)找到领域内长期不变的东西,学扎实。

每个领域都有很多知识是长期沉淀下来的产物,而且因为沉淀了很久,这些知识变化很慢,甚至是不会改变的了。我们都应该有这样的经历,在一门课程刚开课的时候,老师都会给我们介绍书籍,而这些书籍往往都是很厚且较为久远的书籍了。其中一个原因就是,一门学科发展到一定的阶段,必定有很多知识是研究的很透彻的了,不太容易改变。不过这些知识往往是很重要的,新的技术很多都是这些知识在不同方面的应用。当然还有一个原因可能是,任课老师一般最少都比我们大个10岁8岁,他们看过的书籍肯定都是较为古老的书籍(这个是针对计算机,其发展也不过几十年,而且这几年国内有众多的相关书籍出版,所以10年前就比较久远了,有些传统行业的学科肯定在高校学习到的知识会更古老)。

4)保持自我充电的习惯。

利用业余时间扩大不同学科的涉猎,可以针对自己行业周边学科优先选择。这些学科不要求自己都能很清楚的理解,但是要对一些学科有一些通识性的认识(脱盲)。这样,在自己想要学习新的知识的时候,会发现很多东西是自己已经了解的了,这样在前期学习的时候困难曲线会平缓很多。

如果还要加一条的话,那么就应该是热爱这个方向。当你学习一个自己喜爱的学科的时候,会愿意在其中投入更多的时间,并且乐此不疲。长此以往,你的积累会超乎自己的想象的。

当然,这仅仅是我根据以往的观察以及这一年经验所思考的结果,一定有很多地方需要修正,甚至有些观点可能是错误的。以后也会在有了新的感悟之后,再来更新以往的认识的。

顺序单链表插入新节点的一种方法

在学习链表的时候我们都接触过单链表插入新结点的问题。其中有一类就是在顺序链表中插入新节点,并保持链表的递增或者递减性质。

最近看《C和指针》一书中提到了一种方法,我个人感觉不错,并且思想非常好。

这是最常见的思维:

//sll_node.h  
  
typedef struct Node  
{  
    int value;  
    Node *next;  
} Node;  
#include "sll_node.h"  
#include <stdio.h>  
  
#define TRUE    1  
#define FALSE   0  
  
// insertNode:把newValue的值插入到递增排序的链表中,正确返回TRUE,错误返回FALSE  
// rootp是链表的头指针。  
int insertNode(Node **rootp, int newValue)  
{  
    Node *newNode; // 新节点的指针  
    Node *previous; // 当前指针的前一个指针  
    Node *current; // 当前指针  
  
    current = *rootp; // 初始化  
    previous = NULL;  
  
    // 查找插入的位置  
    while (current != NULL && current->value < newValue)
    {
        previous = current;
        current = current->next;
    }
  
    // 给新节点分配空间  
    newNode = (Node *)malloc(sizeof(Node));  
    if (newNode == NULL)  
        return FALSE;  
    newNode->value = newValue;  
  
    // 更改新节点的前驱和后继节点  
    newNode->next = current;  
    if (previous == NULL) // 此时插入节点的为链表中第一个节点,修改头指针  
        *rootp = newNode;  
    else  
        previous->next = newNode;

    return TRUE;
}

我以前编写的时候也会用这样的方法:一个当前指针和指向当前指针之前的指针,这样需要讨论原链表是否为空。书中提到了一种抽象,每次插入新的节点,都是改变一个指向这个新节点的指针以及指向下一个节点,这样可以省略讨论插入的节点是否为第一个节点的步骤。代码如下:

#include "sll_node.h"
#include <stdio.h>

#define	FALSE	0
#define TRUE	1

// insertNode2:把newValue的值插入到递增排序的链表中,正确返回TRUE,错误返回FALSE
// nextp是指向当前节点的指针,最初是头指针
int insertNode2(Node **nextp, int newValue)
{
	Node *newNode; // 新节点指针
	Node *current; // 当前节点指针

	current = *nextp; // 最初当前节点为nextp指针指向的节点
	// 查找新插入节点的位置
	while (current != NULL && current->value < newValue)
	{
		nextp = &current->next;
		current = current->next;
	}

	// 为新节点分配内存
	newNode = (Node *)malloc(sizeof(Node));
	if (newNode == NULL)
		return FALSE;
	newNode->value = newValue;

	// 统一了插入的步骤。即:每次插入,都是前一个指针指向新节点,新节点指向下一个节点
	*nextp = newNode;
	newNode->next = current;

	return TRUE;
}

main函数

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "sll_node.h"

int insertNode(Node **rootp, int newValue);
int insertNode2(Node **nextp, int newValue);

int main()
{
	srand(time(0));

	Node *head = (Node *)malloc(sizeof(Node));
	head->next = NULL;

	for (int i = 0; i < 5; i++)
	{
		int temp = rand() % 50;
		printf("%d\n", temp);
		//insertNode(&head,temp);
		insertNode2(&head,temp);
	}
	
	Node *p = head->next;
	while (p != NULL)
	{
		printf("%d\n", p->value);
		p = p->next;
	}

	getchar();
	getchar();
	return 0;
}

因为我个人没有经过正经的课堂训练,自己考研才接触编程、数据结构之类的。看了很多对自学编程提的建议都是多编写,并且要有抽象的思想,所以将这个方法写了下来,可能对很对科班出身的人不算什么问题了吧。

我感觉这个抽象很好,希望是给自己编程道路的一个好的开端吧:)

同时,因为我在初学时发现测试代码也会花费很多时间,所以将完成的代码都贴了上来,而不仅仅是函数,希望也能帮助到更多的想我这样的初学者吧。

博客时间轴

16.08.29

添加如下插件:

1.LaTeX for WordPress。此插件可以在wordpress编辑LaTex公式。这个插件的作者就是我的推荐博客中阅微堂的博主写的。这个页面中有一些关于此插件用法的总结。

16.08.26

对自己博客的手机端进行了一些优化,比如首页只显示三篇文章标题等,不过手机端的显示每次在更新博文之后几个小时之内会显示成为修改之前的样式。

添加如下插件:

1.WordPress Mobile Themes。此插件可以实现wordpress手机端和桌面端使用不同的主题。
2.WP Super Cache。把wordpress页面静态缓存,提高浏览速度。
3.Dynamic To Top。在文章页面中增加跳转回顶部的插件。
4.BackUpWordPress。众所周知,备份是很重要的,如果出现什么问题,之前的备份就会有很大的作用了。这款插件就是实现自动备份wordpress的插件,可以选择时间将备份的wordpress内容发送到你的邮箱。
5.WordPress 导入工具。将以上提到的BackUpWordPress插件备份的内容还原。之前其实就用过这两款插件。因为本来博客的页面是frankge.me的,但是后来出现了一些问题,所以改到了frankge.me/blog页面,就是用的这两款插件。

16.08.17

添加如下插件:

1.Akismet:此插件可用于过滤垃圾留言。
2.Google XML Sitemap:给自己的博客生成sitemap,方便搜索引擎抓取文章。
3.SyntaxHighlighter Evolved:便于插入代码。支持很多种编程语言:cpp, java, python, css等等,使用方法和支持的语言具体参见这个页面

16年05月

GoDaddy买域名frankge.me。主机采用的戈戈主机。采用wordpress搭建。

建站过程

按照知乎用户@waylight 在怎样搭建一个自有域名的 WordPress 博客?的回答进行。建站期间还遇到一些问题,所以将自己的建站过程记录如下。

主要步骤为:

1.建立本地博客文件

建立博客的过程中肯定需要记录一些信息(比如博客的登录名和密码,主机服务器的ip和登录名密码,还有博客头像和一些备份内容等等)和一些待解决的问题(建立博客可能不是一次就完成的)。这个文件夹用于存放这些信息,便于以后的查看、修改和一些重要信息的备份。

2.购买域名

前文说了,我个人是在GoDaddy上面购买的域名,个人感觉还不错,同时看好像是支持支付宝付款,方便不过我个人是用Visa信用卡付款的。

同时正如知乎的回答中所说,如果你提前想好了想要买的域名,在自己的购物车中放几天,然后GoDaddy就会给你邮箱发送优惠券的,优惠券好像只能信用卡支付使用,具体的忘记了。

3.购买主机空间

只有购买了主机空间,将自己博客内容上传到自己的主机之后,才能让别人看到你的博客内容。支付成功之后主机提供商会给你域名的对应IP,同时还有一些其他的信息。

4.域名解析

使用DNSPod进行域名解析。具体步骤为:

1)在DNSPod中添加域名。
2)把DNS地址修改为DNSPod。登录自己的GoDaddy账户,点击DOMAINS左边“+”号,选择Manage DNS。将其中Nameservers改为"f1g1ns1.dnspod.net","f1g1ns2.dnspod.net"。
3)将域名指向主机服务器的ip,即在DNSPod中添加“A记录”。填写完成后如下图。

域名解析01

域名解析03
其中黑色笔划去的部分填写你的主机供应商提供的ip地址。

5.安装wordpress

知乎回答的原文说,不同的主机空间有不同的虚拟主机控制系统,安装的过程也不尽相同,但是步骤都是差不多的。这个具体的我也不太清楚,我的主机空间使用的也是cPanel面板。

1)登录cPanel面板,“数据库”->“MySQL数据库”,创建一个数据库,然后创建用户,将用户添加进数据库,勾选“所有权限”。

wordpress安装01

wordpress安装02

wordpress安装03

wordpress安装04

wordpress安装05

2)上传WordPress。进入cPanel首页,点击“文件”->“文件管理器”,选择public_html文件夹,将wordpress文件夹中的文件上传至此文件夹(忽略我下图中的“wordpress”和"blog"文件夹)。

wordpress安装06

3)按照提示设置wordpress的信息。

以上完成之后,就可以在浏览器中输入你的博客地址,进入wordpress的界面了。

6.主题选择

网上有很多免费的wordpress的主题可供选择,当然也有很多收费的,这个根据自己的需求选择。之后的内容都很简单,就不一一写明了。我个人的主题使用的是twenty fifteen。

初到四牌楼

一、

出了文昌宿舍所在的小区,横穿太平北路的一个斑马线,经过文昌桥走到小路的尽头,向右转再走不到100米,就是东南大学四牌楼校区的东门了。

在我眼中,四牌楼校区相比于九龙湖校区,简直是没有可比性的。四牌楼这边宿舍陈旧,实验室太小以至于要两个人做一张桌子,浴室的承载能力有限,在高峰的时候洗澡很不方便,更不用说食堂饭菜不好,体育场也很小等等这些细枝末节的问题了。

当然,这边还是有很多惊喜的。因为去年复试就是在四牌楼,所以国立中央大学的旧址所带来的古朴和厚重就显得没那么吸引我了,令我欣喜的,反倒是另外一番景象。

街道上散落的炒饭摊点,道路两旁整齐的绿化,许久没听见的大片大片的蝉鸣,以及一个城市中老居民区的生活。

听同学说,这个宿舍原本是居民小区,因为学校宿舍不够用征用过来的,所以这附近住着很多的南京本地的居民。有居民的地方,周边自然有很多生活元素:小吃摊、水果店、理发厅等等。这些当然不足为奇,但是这对于在九龙湖那边的生活来说,可算是再奢侈不过了。同时,这些元素让我想起很多年前还能常常呆在家中的时光了——每天早上都要排队等候的包子铺,教育孩子要好好学习的家长,以及下象棋打牌的中年人——起码上了大学之后就没再经历过这样的生活了。这种感觉,只有融入了这样的行为模式一段时间之后才会有,不是仅仅看看就能产生的。

刚到这边的时候给我印象最深的是一家小店,叫做「战将鸡排」,因为它不像附近其他几家炒饭摊那样满是油污,而且这边食堂整体没有九龙湖那边好吃,所以要提前找好懒得去食堂的时候能够饱腹的地方。

最近天热了,看到这家店门口正好贴着凉面皮的价格,我就走过去要了一份。老板拌凉面皮的功夫,我和她搭起话来。

「你这地方不大,卖的种类到不少呢,还真没看出来」,我有点惊叹的问到。

「啊,那可不是么」,老板边忙着拌凉皮儿边回答着我为了避免静默所引起尴尬的随意的话语。

「好久没吃过凉皮了,大概上了大学之后就没再吃过了吧。我刚才九龙湖搬过来,这边四牌楼食堂感觉不太好吃。对了,记得小时候最喜欢吃凉皮里面的面筋泡子,多放点吧」,我接着说到。

「行」。老板爽快的答到。

「我家儿子也是,在外面上大学,整天抱怨食堂的饭菜不好吃,经常在外面吃」,我的话仿佛说到了全国各地大学食堂的通病,她也不禁地帮着儿子抱怨着。

之后,老板又说了说自己店面干净,不仅是学生,还有好多居民都到她这边买小吃的情况,我也跟着搭搭话,表示以后会常来关顾的。

回到寝室吃着凉皮,感觉还是没有小时候家边店里面的味道。

二、

提到蚌埠,大部分人的印象可能是以前坐火车经过此地吧。再多一点,就是蚌埠是一个大站了。

是的,蚌埠是火车拉来的城市,提到它想到蚌埠火车站一点不令人出乎意料。

其实最早听到以「火车拉来的城市」的称呼来形容蚌埠,还是从本科室友的口中。

大概是刚刚上大学没多久,我聊到家乡蚌埠。他说蚌埠是火车拉来的城市。

我听了他的形容之后惊异的问到:「『火车拉来的城市』在以前地理书上面介绍的不是株洲么?」

「我们上地理课时,老师还举了个例子,说我们省的蚌埠也是火车拉来的」,他回答说。

可能是因为他也是安徽人的原因吧,所以老师才会拿一个比较熟悉的城市举例。这是我之后想到一个合理的解释。

其实,蚌埠的小吃也是不错的。可能是因为交通便捷,文化交流会多一点,很多南方北方的小吃本地都有。蚌埠本地曾今有首RAP,叫做《烧饼夹里脊》,里面有句歌词唱到:「都说中华美食遍天下,遍天下的美食都在蚌埠开了花。烧饼,包子,油茶,春卷,辣汤,麻圆,米线,凉皮,火锅,拉面,水单饼,大麻花。吃啥啥香,你要啥有啥」。当然,对于自己家乡的印象每个人都有很多很多,且都如数家珍。熟悉的街道、肆无忌惮开着玩笑的发小儿、伴随着记忆中的自己成长的那些学校,还有在家中做个孩子的味道。

记得刚搬过来的时候,在沙塘园食堂吃饭的时候突然发现有豆腐脑儿,一时兴起想要尝尝,发现也不如小时候家边店里的好吃:汤不是骨头汤,里面没放粉丝,没放黄豆,竟然吃到了一点孜然的味道。吃完了之后想了想,可能也不见得就是不好吃,人家没准认为这是美味呐。只是这不是我熟悉的味道罢。

三、

一转眼,来到四牌楼校区一个月了。

搬到一个新的地儿,自然要置办一些东西,来适应新的住所。这边寝室的地方实在太小了,自己想买一个大点儿收纳箱,把一些柜子里面放不下的衣物给塞到收纳箱里。

这边校区在市区,不远处就有超市,这个我倒是挺满意的。即使在这个网络购物已经足够便捷、实惠的时代,不时去趟超市,看看生活中最常接触的柴米油盐,看看生活中最常遇到的普通百姓,还是很有必要的。而不仅仅是被充斥着京东首页的数码产品或者是铺满淘宝首页的时尚衣物或者是网络媒体中所报道的名人大V所占据。

想了想,好久没吃太多的零食了,而且,很久也没大鱼大肉一番了。其实很久以前,大鱼大肉对我的吸引力就已经不怎么存在了。记得在九龙湖那边时,几次和室友去吃自助,自己都是不停地拿蔬菜水果,而不是去弥补在校园食堂里面亏欠的动物蛋白。

上次一个人逛超市大概是一年多之前吧,研一阶段去超市一直是和室友一起的。看了好几款,挑了一个大小适中,颜色淡雅的收纳箱,放到了手推车里。终于,来到这边宿舍最大的一桩事情算是弄好了——我的东西差不多能放下了。

走到零食的那一排排货架前,自己还是在那放缓了步伐,毕竟我每次都会买点饼干之类的简单食品,留在晚上饿了的时候充饥。现在零食的种类确实丰富,不论从口味还是包装,都足够吸引人。我拿了一袋看看,这个钠含量太高了,给放了回去;又拿了一袋看看,这个能量太高,也不需要,又给放了回去。我在这排货架面前驻足了有大约十几分钟,最后还是拿了自己常吃的那种饼干放到了推车里面:有一点糖分,在晚间能补充能量;钠的含量不高,对于现代人的生活节奏而言比较合适;而且每个小包装里面数量不多,不用怕放久了回潮。

走到收银台那边,不经意间看到一个顾客推车里面放满了零食,我没忍住嘴角微微扬起:「原来在很多方面,我已经足够理性了。」

「人到了一定年龄,分化的程度太令人可怕了。」我有点无奈地笑笑。

四、

2016年7月的南京,甚至全国,都是挺令人难忘的吧。湖北、安徽等地区遭遇了多年不遇的强降雨,很多地方水灾泛滥。起初天气还不算热的,但是雨一停,直接进入了以往夏季的燥热。空气中到处都弥散着令人窒息的热气。

横穿太平北路,经过文昌桥。经过文昌桥,再横穿太平北路。去实验室,回寝室。这是再熟悉不过的路程了。

横穿太平北路的时候,要经过一个斑马线。斑马线前的红灯,大约80秒左右。在这盛夏的时节,等个红灯,也足以让人感到筋疲力尽。

那天,我在看到绿灯刚刚过了之后,站在很远的树荫下等红灯。红灯后,一个女生从斑马线的另一端走过来,白皙的皮肤,穿着蓝色上衣、白色的裙子,打着遮阳伞。她大概注意到我了,嘴角微微上扬,视线向另一侧转去。其实在等红绿灯的功夫我就注意到她了。我也微微笑笑,然后径直地穿过了斑马线。

当我们在谈论「社会」的时候我们在谈论什么

记得在我小的时候,家人对社会的评价是偏「负面」的,比如「人情味比较淡薄」、「黑暗」等等之类的词语。

甚至在最近几年,我的父母还经常说:「我有点太理想主义了,太单纯了,进入社会就会明白很多东西不像你想象的那么简单。」

于是在我刚开始建立「世界观」的时候,就感觉「社会」可能是一个不太好的东西,想要趁着在学校的生活当中学习到更多的知识技能,这样才能立足于社会,不被这个「黑暗」的社会所欺负。

渐渐地,我长大了。上大学、上研究生,期间还学过车,而且有过两次独自去一个陌生城市旅行的经历,于是开始对从前认知的「社会」有了新的了解。

下面我来谈谈我所理解的社会。

为了便于思考,我将社会的最基本单位分为「职业」。社会是由不同的职业构成,比如「教师」、「出租车死机」、「程序员」等等。

每种职业有每种职业运行的规则,甚至潜规则,所以我们对于社会中的不同的职业有着不同的理解。

比如,商业的运转中,逐利性是商业的一个共性之一,所以「饭店老板」、「超市店铺店主」需要进到更低价位的东西,然后以高价卖出,这样他们才能生存。那么进货的渠道就是一个很重要的事情了。进来的货物是否安全、质量合规,就是我们消费者关注的事情了。就像前几年比较引人注意的事情那样,「地沟油」的小摊小贩必备道具,这就变成了条潜规则;一些不法商贩进货渠道有问题,出售假货、高仿货或者残次品给客户,这也就成了一些行业的潜规则,比如有些运动鞋的店铺等等。那么商业的本身的运转有问题么?我个人认为是没有问题的。问题出在法律、法规是否健全以及法律、法规的执行是否合法。

再比如,娱乐圈的潜规则,大家都懂。这也是因为,在有些方面,法律无法硬性的规定别人的私生活,让一些人找到了漏洞。在我们中国这样一个人口众多、人口密度很大的国家,这些问题被放大了。同样,我猜测,在国外这个圈子应该也是有类似的潜规则的,因为这个圈子本身就是依靠人来发展的,所以这是个没法避免的问题。

从以上两个例子我们可以看出,我们对有些行业的疑虑,并不是因为这些行业本身,而是因为我们没有去认真思考。每个行业可能有很多不符合我们平常的认知、价值观念和道德观念的地方,因为每个人的见识毕竟有限。同时在我的观察中发现,一些同学、亲戚朋友,他们对法律、法规的建立并不关注,所以造成他们对生活中的很多行业变得并不信任了。因为长期的信任的缺失,所以「贵圈很乱」、「中国食品质量不过关」这样的理念渐渐深入人心。究其根本,应该建立完善 法律、法规,并且相关的机构认真执行。

说到身边很多人对法律、法规的不关心,我还想到另一个问题。生活中,我们经常称自己「老百姓」,甚至更早的中国百姓见到官员时都称自己是「草民」。我感觉这就是一个不好的习惯,这就让我们本身觉得自己是低人一等。英语中有一个词叫做citizen,直译为「公民」。我个人感觉中国人更应该树立每个人的「公民感」。话题扯远了。

那么我们能做的是什么呢?或者说对于一个出身一般,同时对自己的未来有一定期望,在面对因为社会本身的一些不完善所带来的阻力时应该怎样努力呢?

从我个人的经验来说,可以朝着以下几个方面来努力:

1.改变「社会黑暗」的观念。社会必然不完善,甚至还有很多问题,但是在很多时候,社会中的人还是很友善的。令我印象最深刻的一次,是我在北京地铁找不到方向,而且刚到那边目的地也不清楚,手机还没电了,只能回忆要去的地方有哪些地标性建筑,最后地铁里面的志愿者大妈花很久帮我想乘车方式,甚至两个大妈为了讨论哪条线路更近,都吵起来了。

2.努力踏实地学习自己赖以谋生的知识技能。这个其实不需要再强调一遍了,我想强调的是,学习的方向也不是说一次择业决定终身的。像我,就是从一点不懂编程跨专业到计算机的,同时自己大学的时候还巧合认识了一个家伙从学化工跨考到金融。不同的行业在不同时代发展不同,甚至在某些对从业人员要求较高的职业或者岗位,对人才的尊重会更高。人们总说要适应环境,其实还要不停的提高自己的能力、素质,去寻找适合自己性格或者实际情况的环境。在现在信息传递加速,信息获取逐渐平等的时代,找到适合自己的环境已经不是天方夜谭了。

3.仔细思考自己行业运转的方式,这样才能不停地提高自己的层次(虽然我不太喜欢把人划分为不同的层次、阶级等等,但是这样简单的表述确实能够将一些想法简单地表达出来,这里的「层次」可以理解为不同的收入或者不同的社会地位)。举一个简单的例子,如果你是做生意,那么在一个小区门口卖东西和做一个地区的代理卖东西所挣到的钱是不同的吧?而且在一个高档小区里面卖同样的东西也比在一个低档小区卖东西挣钱吧?

4.理解不同职业的运转规则。原因有二。其一,从小到大,我们有很多同学,亲戚朋友,肯定是分布在不同职业的,如果你对他们的职业不理解,甚至有偏见,那么这会使得你们逐渐疏远。其二,理解了不同职业的运转规则,会使你懂得如何跟不同职业的人进行沟通。同时,拿同学经常说的程序员到了一定年纪就敲不动代码来说,到了未来你可能会技术转管理。那么如果你不理解管理方面的知识技巧,你能很好的管理别人么?即使你不会转岗,那么在你被别人管理的时候,你如何分辨别人的管理是否明确可行呢?

5.了解一些和自己密切相关的法律法规。在我们初入职场的时候确实会处于比较被动的地位,了解法律法规才能保护自己。甚至社会的不断发展,很大程度上就是要靠法律法规更加完善、健全,同时公民的法律意识更好才行。当然这是一个长久的过程了。