“創業”之所以打上了雙引號,是因為我要講的這些工作,都是利用業餘時間,契而不捨一點一點肝出來的成果。
有時我也會慶幸對於IT業來說,創業的門檻沒有傳統行業那麼高,一臺電腦一個車庫,再加上一個人就可以開始了。從我接觸程式設計開始,我就想做自己的“東西”,希望有一天能夠做一款受到大家認可和喜愛的軟體。在那個時候,“mp3 cd maker”、“fox mail”、“超級解霸”、“網路螞蟻”之類的軟體作者,都是我和許多同時代程式設計師崇拜和追求的目標。
相比於一些程式設計師痴迷於程式碼本身的魅力,我更看重產出的成果,更看重產品。從那個時候走過來的程式設計師,基本上自己就是產品經理。初期做過許多小工具,小軟體,用 VB 做過播放器、用 Delphi 做過 Zip 工具,便籤工具等等有的沒的小玩意,略過不提。
我正真想做自己的企業級的產品,有三次經歷。
第一次
一個通過簡單配置生成業務軟體功能的系統
Github:
https://github.com/iccb1013/Sheng.Winform.IDE
這個系統沒有正式的名子,只有一個開發代號:Sheng.Winform.IDE。
第一次是想做一款 IDE,大約在 2010 年前後,是各類 ERP 軟體最流行的時候,我在公司做了許多管理軟體類的專案,從程式設計師到專案經理,做了沒兩年,就發現基本是重複勞動了。
我就想能不能開發一款工具軟體,把底層邏輯抽象出來,上層業務部分通過配置的方式生成呢?市場上有一些類似的產品,但是在我看來做的遠遠不夠,基本是圍繞自家原有產品做的部分頁面表單自定義,功能比較薄弱並且無法脫離原有產品框架。我當時想需要實現一種中間描述機制,通過 XML 之類的方式,產生針對業務而脫離技術框架的中間描述語言,我開發出對應的 IDE 開發工具,匯出 XML 。另外再根據平臺和基礎產品的不同,開發出不同的表述框架來解析和實現最終業務功能。
我在業餘時間,花了大量的時間思考這樣的一款產品應該怎樣設計,坐公交坐地鐵的時候,都一直在想,想到了新的問題或者靈感,就馬上拿出手機記錄下來。在當時要做這樣一款工具,本身是有一定技術難度的,另外對於我當時的技術水平來說,也是很大的一個挑戰。有時想想一個問題邏輯上應該怎樣解決,卻不知道怎樣編碼實現,就只好帶著各種問題去查資料,看書學習。有許多本書我是在地鐵上,在車上一天一天看完的。為什麼要這樣看書呢?因為要解決的問題要實現的功能一是複雜,二是基本是體系性結構性的問題,不是非常具體的一個問題點,搜尋都不知道搜尋什麼。
當時有一款開源 C# IDE 叫“SharpDeveloper”,我仔細閱讀了它至少一半的原始碼,後來也借鑑了許多它的設計模式和理念。
最終我做這件事,大約歷時了兩到三年,幾乎所有的業餘時間,得到了這麼一個東西:
詳細介紹:
https://blog.shengxunwei.com/Home/Post/30bcf36f-5ff7-412b-bb47-763ce9218bce
這裡自誇一下,這個系統裡有太多太多的技術細節,對程式設計基礎和設計能力有很大考驗。
最終這個產品,在初具雛形的時候,我放棄了。
我在開發這個軟體的過程中,犯了許多的錯誤,這些錯誤未必是技術上的,但都是嚴重錯誤。
-
首當其衝:閉門造車。
活在自己的技術宅世界裡,從來不去想,也不願意去想這個東西有多少實際價值,誰會去用它,到了後來,我明明潛意識裡知道這個軟體沒有太大市場價值,就是不願意去想這個問題,一門心思去開發。但是這麼辛苦的意義是什麼呢?我當時沒有認真的思考。 -
目標非常的不明確。
看上去有目標,我要做一個什麼什麼樣的東西,但是太巨集大,太寬泛,太遙遠。沒有認真的考量我要的到底是個什麼,所以完全沒有詳細的計劃,里程碑什麼都沒有。 -
缺少與外界溝通。
這個溝通除了技術,更多的是市場對技術的需求到底是什麼,如果回到當初,我會抽自己一巴掌,你睜開眼睛,走出去看看別人的世界好嗎!做技術不是高新技術行業,更多的是服務業,我們需要利用手中的技術去為他人服務,這是技術存在的意義。 -
不懂快速迭代,最小可用集。
這個概念現在應該大家都知道了,在當年好像並不是很流行,也可能和我長期做企業級開發有關係,專案週期都非常長。做產品如果不懂得快速迭代是非常危險的,最小可用集就是隻要達到最低可用的限度,就立馬拿出去見人,當然範圍可以是有限的。根據 真正 使用者的反饋,快速調整。這個說起來簡單,技術人員做起來很容易失控,我做這款軟體,就是花了大量的時間精力去研究技術方面的問題,以至於在某些方面挖的非常深,但是這個東西和我的 大目標 其實沒有必然關係,不管技術好不好,差一點就差一點,先做出東西來,先用起來,功能先實現,業務先轉起來,論證了這東西基本的可行性,再通過迭代去優化。 -
做東西儘量不要藏著掖著。
沒意義,藏著掖著無非怕別人剽竊了自己的創意,想法,這個先不論創意想法有多大實際價值,就算你的想法真的很厲害,如果你沒有其它門檻,別人看了就會抄去,那你這個東西一定是會出問題的。門檻這麼低,怎麼就你想到了?別算別人確實一時沒想到,你沒有其它門檻,被抄了是遲早的事情,藏著掖著沒有用。做了東西就要勇敢拿出來和人交流,正面的就吸納,負面的就多反思自己。 -
學習
我看完了《人月神話》,《程式碼大全》,《設計模式》,和其它一些不是那麼有名的書籍,一半以上 SharpDeveloper 原始碼。很多是在地鐵,長途車,火車裡看的,當時好像沒有平板,有一次在火車上抱著膝上型電腦看《設計模式》,被旁邊妹子主動搭訕:“你是程式設計師吧”,想像一下,綠皮車,一堆人…… 上面講的幾本書我推薦有時間就看一看,特別特別是《程式碼大全》,一定要看。我的體會是如果沒有目標,沒有目的的看書學習,很難深切領會,很容易泛泛而談,我當時看這些書大部分原因是被逼的,因為我總是遇到我搞不定的問題,我必須去尋求解決方案,比如設計模式,我當時也是被逼急了,有結構上的問題搞不定,就到處查資料,看書,一邊看一邊帶著目的的去想,這樣行不行,那樣行不行,這樣成長確實比較快。
第二次(上)
升訊威線上客服系統
一個偶然的機會,我瞭解到了線上客服系統的業務需求和業務場景,我決定自己開發一套這樣的軟體。
雖然我當時基本瞭解了這個系統所需具備的基本功能和目的,但是我需要自己一個人從頭開始設計和實現它,包括推理它的伺服器部分是怎樣設計和實現的,客服端軟體是怎麼做的。我花了大量的時間對同類軟體做分析和調查,自己編寫相關的文件資料(給自己看),嘗試解決其中的技術問題。和之前做 Winform.IDE 一樣,幾乎所有的業餘時間都在思考關於這個系統的問題,從產品設計到技術實現,凌晨 2 點以後休息是常態,大概從我做 Wiinform.IDE 開始就已經是常態了。
持續了大約兩年左右,開發出了初步可用的版本,我開始嘗試推廣它,我這次克服了第一次“創業”中的一些錯誤,但是又犯了新的錯誤,好了,我又要開始總結反思了:
-
開通試用的門檻太高
我當時偷了個懶,沒有開發使用者自主註冊開通的 Web 管理後臺。有興趣的使用者必須通過給我留言的方式,我手工開通再回復對方登入資訊。可想而知這種方式使用者量肯定是很難積累的。 -
系統架構設計太複雜,調子定的太高
這可能是一個程式設計師骨子裡最難克服的障礙,在系統設計時,定位很高,瞄著集團使用者去的那種。在系統架構上,設計了負載均衡、路由服務、分散式服務架構、關係型資料庫(還做了分庫)、記憶體快取資料庫,訊息佇列,還有什麼的全用上了。可以說花了大量的時間和精力在這些事情上,卻沒有把面向使用者側的體驗細節做好,連自主註冊都沒有。
時間來到了 2015 年前後,微信一天比一天火起來,“公眾號”這個新鮮事物也越來越流行。狗熊掰棒子的故事來了,我丟下了客服系統,開始研究微信公眾號了。
第三次
升訊威微信行銷系統
GitHub:
https://github.com/iccb1013/Sheng.WeixinConstruction
隨著微信公眾號的流行,我留意到了一個新的方向,公眾號運營平臺。當時大大小小的商家,企業,都願意嘗試開通一個自己的微信公眾號,當時主流的公眾號平臺功能都偏重於線上活動營銷,而我留意到的方向是線下實體商家,當時原有的公眾號營銷平臺在功能上並不特別關注“線下”場景,線上線下的營銷活動往往是脫離的,比如商場、超市、影城等等。
當時還沒有微信小程式,回過頭來看,我當時想做的東西,正和後來的微信小程式有類似的理念,到店掃碼即用,線上線下場景打通。
於是我開啟 Visual Studio ,點選新建解決方案,又開始肝了。
詳細介紹:
https://blog.shengxunwei.com/Home/Post/0fb606f8-5def-4c10-9896-c53f1c7cb8ea
大概經過小半年的時間,產品有了雛形,我開始試著推廣,這次我汲取了教訓,開始邊推廣邊開發,試了百度關鍵詞(地域定向投放),也自己跑地推,跑了很多商家,包括展覽館,電影院,百貨公司商業中心等,我們這裡的電影院和百貨公司基本我都跑遍了,電影院跑到了縣一級,我自己上門陌拜,跑銷售就是不要怕,雖然會吃閉門羹,但總會有人願意接納你,有一家電影院和我“重度”合作了一把,專門為上我的這個系統做了大幅畫的戶外廣告。
很快我發現,這不是一個好的方向,這次我得到的心得和體會:
-
產品的方向和形態非常重要
產品的方向不用說,決定了產品是否有前(錢)景,這個大家都知道,但是要特別注意的是你的產品的形態,拿微信第三方平臺來說,這是一個很難取得高客單價的一個產品,往往對方的預算只是一年小几千塊錢,甚至更少,覺得這些東西應該免費的商家也不在少數。競爭是一方面原因,更重要的就是產品的形態造成的。 -
雲平臺是否是銀彈
從技術角度來說,雲平臺有諸多優點,甚至我們會覺得,雲平臺對客戶來說也是有巨大優勢的,比如成本和價格優勢。但是,對於企業來說,對方是否願意,是否放心把資料全部交給你?如果你是一家創業公司,這個就更懸念了,因為你沒有足夠的實力為你背書,有客戶直接和我說,如果你不能把產品和資料庫部署到我的伺服器上,我寧願不用。 這種情況我們不能單純的認為是客戶觀念老還是怎麼樣,應該去適應這個市場和客戶,客戶不是那麼容易說服的,信任不是一朝一夕能夠建立的。 -
做產品還是做專案
技術人員都希望能做產品,也許沒有人不想做產品,做出來賣授權坐在家裡收錢,但是我的建議是創業型公司慎做產品,產品化程度越高的,你越不要去做,當然,除非你掌握了某種複雜的業務,是一般軟體公司很難掌握的,或者你有什麼門檻是別人根本不可能有的,這個不在我現在討論的範圍之內。
一般而言產品化的東西,意味著競爭的激烈,價格的下探,客戶預期的不斷提高,這些是創業型公司難以承受之重。我現在更推薦走專案之路,很多專案雖然看上去辛苦不堪,技術上縫縫補補,但是一年的專案經費能夠吊打你腦海中想像的產品能帶來的營收。而且做專案一般會有一些天然的門檻,比如特殊的業務邏輯,特殊的使用場景,你一旦一期二期做下來,基本這就是你的客戶別人很難搶走了。2017年我只帶著做了2個專案,收入就已經幾十倍於過去所謂的產品收入。也是我現在丟棄微信產品全部開源的原因之一吧。 -
如果做產品遇到競爭,是打價格戰,還是尋找差異化
過去我看過一些文章,都會告訴你尋找差異化,我也是這麼過來的,吃了一些虧有了自己的想法。我的想法是在競爭激烈的市場,如果遇到了價格戰,而你又打不起,就及早退出,改變方向,千萬不要死撐去尋找所謂的差異化,會讓你更加陷入泥潭,虧損更大。在充分競爭的市場,有什麼差異化等著你去找呢?也不要尋求技術的先進性,技術的先進會使你投入更多的成本,但不會有任何實質性的作用。
所以,打價格戰,打不起,及時止損,退出競爭,不要心存幻想,不要等。 -
做專案的關鍵是什麼
就一點:優質客戶資源。
第二次(下)
升訊威線上客服系統
在我意識到微信公眾號平臺不是一個好方向之後,我消停了一段時間,工作上的事情也越來越忙,業餘時間越來越想讓自己休息休息,荒廢了一段時間。
很快到了 2020 年,疫情加經濟下行,公司的資訊化業務毫無起色,我只好主動找老闆說:在這塊業務能掙錢之前,別考慮給我加薪和獎金了。
話是這麼說,精神上的壓力還是很大,想想還是得把業餘時間用起來,不能這麼荒著,一時沒有好的方向,就把客服系統撿起來繼續做吧。
這次我痛定思痛,好好回顧了之前的經驗教訓,重新開始審視這件事,我做了以下這些工作:
-
我推翻了之前 .Net 框架的服務端全部設計,用 .Net Core 又重寫了一遍,取消了暫時用不到的各種複雜設計,只保留下未來可擴充套件的空間,輕裝上陣。對於網路通訊這塊,做了大量工作,保證使用者使用時的穩定性,甚至做到了斷線時的會話保持,自動重連。
-
由過去的只支援 SQL Server 改進為同時支援 SQL Server 和 MySQL。伺服器也實現了 Linux 支援。
-
重構了 Web 訪問端的全部程式碼,取消取款 IE6 的支援,僅保留對 IE8 以上的支援。取消了一些非常囉嗦卻不太重要的功能設計,同時在穩定性和速度上做了重點攻關。
-
用 VUE 開發了 Web 管理後臺,有興趣的使用者可以自主註冊開通試用了,不用聯絡我提前預約了。
在技術之外,我積極和朋友交流這件事,不論是技術層面的還是產品層面的,都毫無保留的和朋友交流想法,不但獲得了很多有意義的見解,也為我積累到了一些種子使用者。
最終得到了:
詳細介紹:
https://blog.shengxunwei.com/Home/Post/44a31a32-d4e1-4ddd-8526-8a2bcd2e22be
私有化部署版下載地址與版本說明
https://docs.shengxunwei.com/Post/f7bc8496-14ee-4a53-07b4-08d8e3da6269/553293a8-dfa1-4282-bc3f-96c6c623fc9a
可能是因為這次準備的比較充分,前期積累也多,系統上線以後,收穫了一些實際使用者,得到了許多積極的反饋,這是做 Winform.IDE 和 微信行銷系統 都沒有的。
未來的計劃
其實做了這麼多,錢是沒掙著,都是免費開源的在做,核心還是興趣在支撐吧。
客服系統算是折騰這麼久,第一個沒有虎頭蛇尾堅持把它做上線的產品,達到了有實際使用者在用的水平,這一點讓我比較欣慰。
我想如果不久我離開了IT業了,我也會繼續維護這個產品,一直保持免費,只要有使用者要用就好。至少也是我做過這麼多年IT,做過這麼多年技術的一個遺產是吧。