2008年2月20日 星期三

Software Development Top 30 Mistakes

Software Development Top 30 Mistakes

http://www.realsoftwaredevelopment.com/2006/10/software_develo.html

"...I have been developing software and web applications for nearly 11 years now. Software development has come a long way since the days of Binary, Cobol, etc. What still fascinates me about software development is the same mistakes made before, are still made today. Below are the top 30 Mistakes that are made within the software development process. It's amazing to see that none of these have anything to do with the language itself.
  1. Not understanding the user's needs. Lack of user input, or not even asking.
  2. Underestimating the size of the project.
  3. Rushing through the planning stage, or avoiding the planning all together. Code first, plan later! BAD!
  4. Not testing early enough, often, or at all! Make it a habit!
  5. Choosing the "Cool" methodology at the time, vs. one that has worked in the past. Which leads into my next point...
  6. Not using a methodology.
  7. Letting a software developer run the software development project.
  8. Bored, unmotivated team! You have to motivate your developers! If you can't motivate, don't bother trying to lead. Your team will fall asleep, literally.
  9. Planning on catching up later. You won't... don't even think it!
  10. Non Source Control! Ouch.. not good people... and no, just installing a software package is not it...
  11. Deciding to switch your development tools when you're already into the project.
  12. Allowing feature creep. Just say NO! Everyone will be happier in the end.
  13. Omitting necessary tasks to shorten the project plan. Really, what's the point of doing this?
  14. Insufficient management controls in the development project.
  15. Lack of high level business sponsorship.
  16. Adding people at the end of the project to "speed things up". You will only slow things down...
  17. No unit testing. Heck if you can do it, use Visual Studio Team Foundation Server and set up some automated testing nightly.
  18. Stressed out software developers. If you have managed to perform even one or two of these software development mistakes, you will have a stressed out bunch of programmers to deal with!
  19. Lack of error handling.
  20. "Off by one" errors. These happen a lot during the software development process.. *sigh*.
  21. Typos... Just use option strict and explicit please.. during one software development project, which I was on as a consultant, they were getting ridiculous amounts of errors everywhere... turned out the developer couldn't spell and would declare variables with incorrect spelling.. no big deal, until you use the correct spelling when you're assigning a value to it... and you had option explicit off. Ouch to them...
  22. No understand the deployment or hardware the software is to be installed on. Ohhhh it's for a Macintosh... lol. Well hopefully not that bad, but you get the point.
  23. No naming style or code conventions. Honestly it doesn't matter what you use... as long as you are consistent with the rest of the team, and hopefully at least yourself.
  24. Using global variables everywhere. These are NOT your friend and hog memory like nothing you have ever seen before!
  25. Not asking for help at all during the software development process. If you're stuck, don't fight with it for hours on end! Ask for help!
  26. Not commenting your code.
  27. Hogging all information to yourself. You think you're more valuable this way? You're actually not and there is a plan brewing to get you kicked off the development project, and possibly out of the company. You might want to brush up your sign "Will code for pizza!".
  28. Performing database operations at the application layer instead of the database layer. Not only is this putting the processing juice on your application instead of your server, but you have put your database at risk of data integrity issues, and getting bad data! Some of my hipster cool friends are always saying "It's alllll good", well, if your database can be caught saying this... and If everything looks good to your database, then you should be worried. It is NOT all good!
  29. Not validating your data! Yikes... Yes.. let's just assume all the data is perfect! NOT!
  30. No load testing. What.. This is supposed to run on 1,000 user's machines through Citrix? Interesting... Shouldn't be an issue! lol... NOT...."

2008年2月4日 星期一

[轉帖]不要做有才華的窮人

不要做有才華的窮人
陳益南

天下到處是有才華的窮人!
當從一本書中讀到這句話時,心頭不由一震。
有才華的人,怎麼會成了窮人呢?
在這個世界上,那些在政治、軍事、科學與經濟領域中,凡能夠創出偉績與成就的人,有哪一個不是智商出眾而才華橫溢的聰明人?那些造出了億萬身家的商界富翁,有誰不是搏擊商海縱橫人生的高手?而又能有哪一個蠢漢白痴可以做出讓世人刮目的事業?
窮人的結局,怎麼會與才華相連,與聰明相伴?!

然而,當我們在細緻觀察靜心思索之後,卻不得不接受這一個看似矛盾、又大量存在於我們周圍而令人驚異不已、卻是甚為冷酷的客觀事實:在這個世界上,的確到處都是有才華的窮人!

在 窮人集堆的下崗者大軍之中,我們可以不費力便能發現到一些幾年前、十幾年前、甚至二三十年前畢業的大學生,不僅他們那常常是厚厚的高度近視眼鏡片,能證實 他們曾有過的博學知識,而從他們談吐出來的言語中,更是常常可以顯示其學識的不凡與口才的雄風。而最特別的是,儘管他們人生的進程已到了其生存都有危機之 際,但在他們不經意的言談中,卻從來不會有對比爾.蓋茨或李嘉誠們表示歎服的美言,更始終不會給柳傳志任正非劉永行張朝陽們送以尊敬的口吻,對那些人生的 成功者,他們的結論卻常常也令人因惑的都是同一個:「老子運氣不如他們而已!」

彷彿,比爾.蓋茨或李嘉誠他們所擁有的那幾百億資產,全是 運氣的贈物;柳傳志劉永行們創出來的那一個個財富公司,都是天上掉下來落到那些人頭上的餡餅;而他們的困境,卻是老天爺犯有分配不公錯誤的結果。「否則, 憑老子這些本事,難道不也就是另一個李嘉誠、柳傳志?!否則,老子也就是另一個大富翁,而不會虎落平陽!」——他們常常會這樣的憤世嫉俗,更伴有沖沖的怒 氣。
但是,他們這墜入窮人行列的理由,實在太牽強。

有些人雖然尚未跌入失業者的隊伍,雖然他們還在某一個大公司人模人樣的有著一 份光鮮的工作,但是,在他們自己心中,以及同行者的眼光中,他們卻也有了窮人的徵兆:或是他們工作已長達數年,卻沒能像其他同輩那樣富有,不僅既沒有自己 賺上多少錢,也沒能為後代提供優裕的生活與學習條件,而且,又還全然沒有升職加薪的美好前景。或是,那被公司炒魷魚的陰影,竟常常落在他們的附近,而在今 天這個社會,如果沒有了工作職位,也就意味著是向窮人的位置靠攏。

這類尚還在各種公司職位上呆著的打工者,更常常大多是有著種種才華標誌 的聰明人,其高等學府的文憑亮出來,足可以讓那些做著體力勞動的民工們對其仰視欽羨萬分,而或能熟練地說出洋文,或可不費力地操作電腦編製程序,或對世界 500強大企業情況瞭如指掌等專業水平,更能使各公司的人力資源主管們連連點頭。然而,工作多年,他們卻始終沒有能成為企業老總那樣的富人,也沒有能成為 有車有房、以公司白領的舒適生活特徵為身份的中產階級,甚至,擺脫滑向窮人命運的危險,倒經常成為他們不能不認真對待的大問題——雖然,他們總是沒能認真 對待這個問題。
這也是一批有才華的窮人。

有才華的窮人,雖然經常會炫耀他們的才華,可是,才華卻又並未能給他們帶來成為富人的美妙現實,相反,他們只能在窮人堆或窮人堆的邊緣,或無奈地抬頭向月,或一廂情願地白日做夢。

為什麼人的才華這種「先進的生產力」,在很多人的身上,竟沒能創造出相應的財富與成就?
也許可以套用政治經濟學中的一個名詞來解釋:他們沒能處理好自己面臨的「生產關係」,他們對任何工作對任何創造,都缺乏一種本不可少的敬業精神。

人的才華是通向財富之路的必要因素,但,卻還不是全部因素。
只有在一個誠心敬業的平台上,人的才華,才能夠發揮它巨大的「先進生產力」作用,從而轉化為事業的成功之結果。

然而,相當數量有才華有本領有能力的聰明人,輕視了才華必須賴以立腳的敬業精神之平台,甚至將敬業精神的本質當成愚笨呆板的外化,全然忽視不理,而以為憑他們具有的才華那個獨輪,就可以載運自己到達幸運之境地。這樣的情況,在急功近利風行的今天,尤為常見。

我們經常可以看到,有些人確有天才的頭腦,敏銳的眼光,獨到的創造思想,甚至他們還能獲得大筆創業的資金,世間一切為進行打造成功的客觀條件,他們常常都不缺少。但是,數年過去,他還是他,既沒能成為富翁,也沒能搞成事業,依然徘徊於其人生的起點。
為什麼?
因怕吃苦,耐不得奮鬥中的寂寞。

我 們也常常能夠發現,很多公司的員工,講技術能有一套套,論專業則極具水平,學歷夠高,見識也不少,而且大多年富力強精力旺盛。然而,經年拚搏,他們卻始終 沒有進入高級白領的行列,在公司位置與整個人生的金字塔結構中,他們仍還處在最大部分的底層,不僅與車與房均無緣,而且還常常面臨裁員下崗的危險。
為什麼?
因其不珍重所處的工作。

敬業精神所包涵的要素至少有二條:
欲做創業的英雄公司的老闆,你就得能在物質與精神上吃得大苦,能耐得住奮鬥中常有的寂寞;而那求能登上舒適白領階層高級職員位置做做打工皇帝打工太師者,你就得安心職守努力工作擺正自己位置忠於付薪水給你的企業,並始終以此去贏得企業對你敬業態度的回報。

既想做創業英雄公司老闆,卻又不能象老闆那樣沒日沒夜的思慮工作,不能象老闆那樣在孤獨與寂寞中獨力支撐事業面臨的壓力,還不能象老闆那樣小心翼翼決不意氣用事地對待與處理各種人事關係,總之,不能象老闆那樣盡心敬業,你又怎麼能成功?怎麼能成就大業進入富翁榜?

而 欲追求那種打工皇帝高級白領神仙般舒適生活,卻又不能安心職守盡心努力的工作,不能明白自己的位置而對付給自己薪水的企業報以忠誠,並且心底裡老是這山望 得那山高,常懷見異思遷的跳槽之念,甚至只為貪圖一時之利,不惜利用職務之便做損害自己所在企業的事,還自以為是在追求「實惠」。這等漠視敬業規則的心 態,又怎能讓你騰躍上打工皇帝舒適白領的天堂?又如何不使你長久呆在人生金字塔的底層?!

才華固然不應成為墜入窮人隊伍的理由,但一個沒有敬業精神,甚至毫無敬業觀念的人,哪怕他是天才,都只會也只佩與貧窮為伴!
這不是咒語,不是道德審判,而的的確確是某種人生規律的真實現況。

才華,使不少人也沒能成為富人。但,敬業之心,卻讓很多才華不多智商不高的農村青年,或跨進了中產階級的圈子,或騰飛而成為手握巨產的大老闆企業家。對此,相信已是不需證明的鐵的事實。

敬 業精神,使這些人或數年十幾年在同一個企業中努力工作,「多年的媳婦終於熬成婆」,長期對專業業務的熟練與認真,使打工仔打工妹已變為了白領主管。沒有哪 一個企業,僅憑老闆一人單槍匹馬就可打天下的,而必須有一個團隊的配合才行。老闆固然是隊長,但他時時刻刻在心中都少不了要員工的支持,也要挑選能支持他 的員工。而能否敬業,永遠是天下所有企業老闆衡量一切員工的首要標準。

敬業之心,也讓這些人中的很多都成為企業鉅子。由於敬業,改革開放25年的歷程積累,能使任何只賺取微利的小企業小生意,都一步步發展為參天大樹。
眾 所周知,浙江很多民營企業,就是靠做一件只賺幾分錢、甚至幾毫錢的小商品,而演變為資產數億的大公司的。二十多年的盡心盡意的專業經營,以及紮紮實實誠心 敬業帶來的高質量,憑每隻一分錢利潤的打火機,溫州的民營企業今天竟能打敗現代化的日本公司,殺入並佔據日本市場;憑每支利潤的數字在「分」的前面還要加 若干位小數點的飲料吸管,浙江一家民企的產品,竟已雄據天下國際市場的幾分之一。

人們常愛說機會,愛說運氣。其實,即便沒有大機會,沒有大運氣,只需敬業,此生你就不會做一個窮人。只需敬業,你也能躍上企業大老闆的富翁地位。

一切自認為有才華的聰明人,如果你還在做窮人,就請你再聰明一次:撿回你丟失的寶貝——敬業精神。這樣,你將很快告貧窮,而搭上致富的時代列車。

請記住:不要做有才華的窮人!