搜索            

无为论坛,没有版主,不删贴不封ID,北美中文论坛,加拿大中文论坛,红卫兵rolia,找工作,面试,职场,学英语,股市,炒股,心态,沟通

无为论坛,没有版主,不删贴不封ID,北美中文论坛,加拿大中文论坛,红卫兵rolia,找工作,面试,职场,学英语,股市,炒股,心态,沟通

Avatar

自己做论坛 (IT 入门 实战篇)(18) 搬砖 (copy & paste) (IT)

by super(学霸) ⌂, 2015-01-06 14:38
edited by 学霸, 2015-01-08 02:26

言谈阁有一个网友叫饭老师,经常说自己到各个地方搬砖。俺一开始还以为他是盖房子的师傅,后来发现饭老师也是做IT的。再一打听,原来搬砖是 copy & paste。

刚刚写IT入门的时候,俺有一个想法,就是无中生有的能力对一个码工很重要,因为写code往往都是从一张白纸开始。后来这个问题想多了,俺越来越觉得那个想法比较片面,跟事实不完全相符。事实是,绝大部分码工绝大部分时候都是在 copy & paste,真正从一张白纸开始的情况很少。

中介找人,往往喜欢用 greefield project 做诱饵。所谓的 greenfield project,就是崭新的 project,真正地白手起家,从无到有。但是绝大部分码工绝大部分时间都是在做已经上马已经成型的项目,在这些项目上添加功能或者 fix bugs。这种项目里,任何新的功能,现有的代码里都能找到类似的 code,你只需要 cut and paste 即可。

因为如此,码工对技术的要求,远不如大家想象的那样高。


俺做的这个论坛,也不是白手起家,俺用的是一个开源软件。俺在原有的软件上做了很多改动,加了很多功能,但是俺绝大部分的新代码都是 cut & paste 的结果。

比如俺想加一个新的表,俺首先找到一个结构类似的表,copy 过来,然后再把里面的名字改掉。

CREATE TABLE IF NOT EXISTS `entries_cache` (
    `cache_id` int(11) NOT NULL,
    `cache_text` text NOT NULL,
    PRIMARY KEY (`cache_id`)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8;

如果这个表里没有俺要的功能,比如 foreign key 或者 unique key,俺就在别的地方找到这种功能,再给 copy 过来。

	CONSTRAINT uc_email UNIQUE (email) 
	CONSTRAINT FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE

不光 copy & paste,而且俺还不求甚解。比如那个 ENGINE=InnoDB 是个什么东西,俺不知道,也不想知道。


PHP code 也是如此。比如用 PHP 从数据库读取数据,俺总是要找到类似的 code,copy 过来,再按需要的改。

	$query = "SELECT id, user_id, name,description FROM series WHERE user_id = " . intval ( $user_id ) . ' ORDER BY id';
	$series_result = @mysql_query ( $query, $connid ) or raise_error ( 'database_error', mysql_error () );
	if (mysql_num_rows ( $series_result ) > 0) {
		$i = 0;
		while ( $series_data = mysql_fetch_array ( $series_result ) ) {
			$series [$i] ['id'] = $series_data ['id'];
			$series [$i] ['name'] = $series_data ['name'];
			$i ++;
		}
	}
	mysql_free_result ( $series_result );



网页的code,俺大部分用的都是一个叫 jQuery 的 Javascript library。原来的软件不用 jQuery, 所以俺没有现成的code 可以抄。没有现成的 code,但是俺有 Google。用 Google,其实比抄现成的 code 还要来的快,来的好。

比如有一个东西叫 AJAX,无为论坛用的很多。所谓 AJAX,就是去服务器拿一个数据,而不是拿整个一个网页。拿到的数据不是用来更新整个网页,而是更新网页的一部分。无为论坛很多链接点击一下就能蹦出一个小窗口,这个小窗口里的内容就是通过 AJAX 从服务器拿的。

第一次做 AJAX,俺不知道怎么做,但是俺会 Google。俺 google 了一下 "jQuery ajax update div",几秒钟的功夫,就找到了俺需要的 code:

$( "#result" ).load( "ajax/test.html" );


读到这里,很多网友可能都对俺嗤之以鼻,他们本来以为俺是一个大拿,原来俺只不过是一个抄手。对这些网友,俺的回答是,抄不光有效,而且有理。即使是大拿,写代码最好的办法还是抄。即使你能写出来,即使你写出来也很快,抄来的代码比写出来的代码好。代码能抄就抄。

很多年前俺上班无聊,喜欢去一些谈软件的网站。其中有一个网站叫 Joel on Software,网主记得叫 Joel Klein,一个很有见地的同志。从这个同志的网站上,俺学到了一个很深刻的道理,那就是再孬的代码都不应该重写。孬的代码看起来很 stupid,但是里面可能有很多玄机,可能经历过无数次的敲打,改进,修补,无数次的QA和 bug fix。重新写代码看起来简单,但是新代码一样要结果那些敲打,修补,改进,QA 和 bug fix,结果花的代价远比一开始想象的要高。

为什么代码能抄就抄,抄比写好?因为抄来的代码不管是谁写的,都要比你新写的代码更安全,更可靠。

炒股的人经验越丰富,胆子就越小,码工也一样。俺这么多年做码工,养成了一个习惯,那就是任何时候都尽量 copy and paste,大到一段代码,小到一个字符串(String)。即使是一个单词,俺宁愿在现有的代码里找到抄过来也不愿意重新打进去。为什么?因为 copy 过来的东西,绝对的,百分之百的不会有错。重新写,即使你千小心万小心,总是免不了要出错。俺是吃了无数次亏才找到这个窍门的。

第一次吃这个亏,是俺上研究生时候的事,到今天俺还记忆犹新。俺做一个project,是一个小软件。俺做完寄给老师以后,突然发现有一个小错误,俺想着这么小的一个错误,就随手那么一改。几天以后俺才发现,俺改的那个地方打成了错别字,因为这个错别字,程序根本就没法启动。后来那个老师对俺态度一直不好,也许他以为俺的软件根本就没有做完,俺是在骗他。


写IT入门,俺一直在强调的就是自信。希望入门IT的网友,读了俺的这篇文章会大大地提高自信心。绝大多数码工绝大多数时候都是在 copy and paste,即使是高级码工。

给你代码你会不会抄?如果你会,你就能做码工。

---
serve the people

Tags:

IT, IT入门, 找工, 面试, 中介, 程序员, 码工, 电脑工作, job, interview, confidence

  562 views

整个话题:

 RSS Feed of thread

 
[x]