用 Node.js 做了個工資系統,我感覺不錯為什麼老闆卻覺得水平低?

原先的工資系統是excel的,加vlookup, count等函數。

遇到人多就加行,遇到業績項多就加列。

然後我給改進了一點,用node.js寫,程序里只保留了通用過程,所有崗位特殊的業績獎金規則等都保留在了資料庫里了。最終結果是這樣的

程序里數據跟程序幾乎完全脫離關係了,自我感覺這是社會主義初級階段躍升到高級社會主義的利器。然後就被鄙視了

----excel比這個方便多了,連財務都會修修改改,這樣做怎麼讓他們改。

可這個改起來也沒啥難度啊,資料庫里進行添加,兩分鐘做完excel15分鐘的工作,再以該數據為基礎配置一個獎金,2分鐘,一刷新,又幹完excel20分鐘的活。就像這樣

可能需要培訓一下怎麼休吧。但做起來的話會點sql where就能寫啊,比excel的那些計數函數簡單多了啊。

----別的軟體里都能在線寫公式計算的

我的軟體也能寫公式啊,能寫純數學公式,還能進行函數運算,用複雜一些的演算法肯定就得寫複雜的函數啊。就像圖片右下角一樣。而且,頁面我可以做成傻瓜式的,讓他們隨便改運算公式啊。

----網頁有點亂,看不清

我的數據後台組織的很有序啊,想怎麼展示就能展示成什麼樣啊,

我也不知道如何是好。本來就是半路出家+野路子出身。遇到問題只知道自己怎麼實現,不知道別人怎麼搞的。希望大神指點一二

2016年10月3日

首先感謝我消失這幾天突然出現上百人關注和半百的回答。

看了評論,發現70%都在拿界面說事兒。誠然界面純IE5原生Table,兼容性支持2016年的前後五百年所有電腦,界面我不會做啊,我就是管理excel和vba的,nodejs偶爾學一下也不過半年多,,但我在這曬的是這套系統的思想,界面我還沒系統學習,還停留在展示和color:#FFFFFF的階段,我如果連前台都會靈活套用各個div+CSS模板了,這還對得起我這在北京8k的工資嗎?界面可以先找人做,用他們的經驗5小時能搞個差不多,我自己來做可能一周,倒是學會了肯定一輩子界面不用愁難看了。

對於SQL需要讓財務學習的問題,SQL語句中我只需要他們自己寫where 子句,而這個子句只需要知道如下幾個要素:

  1. 列名,

  2. 運算符 就是大於等於小於

  3. 邏輯符,and or 和括弧

  4. 常量的表示方法,日期如何表示,字元串加雙引號,

也就是說,給財務一頁紙,年輕開化一點的財務就能比著寫出來。或者做一個page出來,傻瓜式的,有個+號,讓他們自己來向input框里填自己想要的東西,全程滑鼠點擊和鍵盤敲數字的界面我也是能做出來的。

對於這套系統,舊的思想是這樣的,程序員(excel老闆都會改,不存在泄露薪金機密的問題)規定好了,各個崗位配置基礎數據求解公式,然後考勤的,然後根據實際業績,用N多個if嵌套。這樣的excel應用程序有N個不足之處:

  1. Excel可以實現95%的功能,但需要消耗300%的腦子和350%的時間。
  2. 我規定好了薪金規則,比如數據大於10小於等於20對應50元,但程序無法直接取裡面的值,我程序還得再在if里寫一遍10和20,或者高級一點的用vlookup模糊查詢,但這太不方便,而我採用的方法就是
    • 1 //1表示大於等於10小於20的表示方法,2表示大於10小於等於20的表示方法
    • 0,10,30;//大於等於0小於10所對應的值為30
    • 10,20,50;//大於等於10小於20所對應的值為50
    • 20,∞,100//大於等於20對應100
  • 這樣做非常簡單易懂,也很直觀,而舊的系統里改錯查錯要在一大堆if或者vlookup里找,而且這些配置都在每頁不同的位置保留。新的系統都在一個資料庫表中,可以做界面集中展示出來。

  • 每人都有重複的業績項,舊的系統我需要有幾十個崗位我就得手寫幾十次,新的系統中,我只需要在業績-崗位表中將崗位id設置為0即可表示通用項。設置為1那麼只有1號崗位才能有這個業績。
  • 所有業績和獎金考勤我必須在excel中給各個崗位配置好了展示界面,新的系統這些都是自動化完成,就是依據上面的cmd窗口,展示出什麼東西我就在html中自動列出來什麼東西。一個設置2分鐘即可。
  • 我在這說我作為一個資料庫熟練工人,我用自己的系統配置2分鐘就能新加一個業績,配置2分鐘就能新加一個獎金,意思就是,我同樣作為一個excel熟練工,我改這一步就需要20分鐘以上,改的多了,我就沒時間維護每個參數每個公式是否全都準確了。但依靠這套新系統,維護成本大大降低,基本用資料庫生成一個文檔,裡面是你存儲的各個參數也是程序執行的參數,包括取值表和欄位,運算規則,過濾規則,可讀性非常強。這些參數如果沒錯,那麼程序里也就沒錯。excel如果你想總體的核查一遍呢?是不是得把每個頁面翻爛了?每個公式的配置看透了?多個頁面來回翻查上千次?3天能解決問題嗎?
  • excel行數不可變化,每次預留幾十行,總有人數過多超過行數的時候,這時候加行就略顯複雜。
  • 這個工資系統就是為了保密性和易用性而建立的。首先你作為一個程序員,時不時的調試一下工資系統,裡面的東西是不是你都看到了,這還成何體統?但如果將配置存儲在資料庫里呢?一個財務,自己按照傻瓜式方法配不出來篩選條件,問技術就行了,技術來了配置一下就走了,出來的數完全沒有泄露的機會。當然,我認為100%可以用簡單的配置就可以完成所有需求的系統不存在,這個系統只能解決95%的問題,初等數學能解決所有的問題那還要高等數學幹什麼?關鍵時候還得需要程序員寫特有代碼。不過我這個也簡單,我告訴你基礎數據有哪些表哪些欄位,我要怎麼求,讓程序員寫一個Function,取名為「新業績考核.js」,然後我把程序員寫的js導入系統中就行了。我在資料庫里這項演算法配置成新業績考核,這樣就能完美運算了。又能保證安全性,又能靈活使用。雖然說我這裡透露了我的核心演算法,但我以後又不做HR不做工資表的,留著這個思想又有何用,給大家共享了。有了這麼多的介紹,界面黨是不是也要修改一下自己的回答?
  • vba是可以實現上述所有功能,但有兩個缺點:評論區

  • 其實提問者的這種疑惑我很能理解,相信很多人都能理解(當然大部分人看看就關了頁面也不會特意來回答,我是晚上睡不著來說兩句)。

    一般來說但凡是特別熱愛編程的人學了一段時間後必然特別希望實踐所學去解決具體問題。這是好事,學以致用是對的。但程序員處在這個階段有個特點就是,充滿激情,無所畏懼,但眼高手低,偏偏還固執己見。我無意冒犯,其實很慚愧的說我以前也經歷過這種階段,好幾年。但很不慚愧的說這也不能算錯,好多我們覺得很棒的程序員以前也就這樣。為什麼呢?因為沒經驗啊,見識少啊,在加上一點自以為是啊。(讀到這裡別生氣,你要想我強調過我也曾經這樣,不是只針對你,也針對我自己)

    首先希望你繼續加油學習,不要因為別人的批評就認為受到了傷害(但凡有點追求的人骨子裡都有傲氣,往往自尊心強,但也很敏感),你要知道這些尖銳的批評其實很寶貴,因為他們是在指出你的問題,促進你的進步。你要學會接受一點別人的建議,這是獲得進步的關鍵。

    比如說界面丑,說實話他們說的很對,這是看臉的世界,界面別說簡陋,已經直接是引起反感了,普通人看到的第一反應是在心裡就把它否定了,這時你再作解釋其實無法改變任何事情了。所以你要明白,一個好的軟體,不僅內核要強大,界面也必須及格。而你的界面如果滿分 10 分的話只能打 1.5 分。那 0.5 是幸苦分。抱歉客觀來說真的只能給這麼多。你如果不能把界面做到 6 分的及格線那麼真的,你再加更多功能也沒意義,因為沒人有興趣繼續了解。

    另外有些人提和 Excel+Vba 的對比我覺得這樣說的人往往比較有經驗,他們特別能為客戶著想。這種為客戶著想不要簡單的理解為不敢去突破,不敢跳出 Excel 創立自己的解決方案。其實他們寧願選擇 Vba,選擇一種不凸顯自己「技術高」的方案而是完全以用戶使用習慣學習成本出發去考慮,這是所有成功的商業軟體設計者必備的品質—方便用戶,不是方便自己;以用戶為中心,不是以自我為中心。這種品質是怎麼來的呢?肯定不是與生俱來的,而是經歷過像你這樣的階段後被現實啪啪啪打得體無完膚後痛徹學習到的。但這也不能說是教訓,其實是一種社會良性運轉所需的服務精神。是我們從「把技術當藝術」到「把技術當工具」的轉變,把技術從神壇上請了下來,擺正了自己位置和心態後的新的認識。他們把這種認識告訴你,肯定不是要害你。雖然話有些耿直,但你要先嘗試琢磨和體會,不要急於否定和爭辯。

    至於你談到的讓用戶學 SQL 語句。我覺得有這種想法道不奇怪。因為你覺得這是「正確的選擇」。而且這是更加「強大」的方案,學了「有百利無一害」。但按這個邏輯,我覺得你應該讓他們直接學習一下 Matlab。眾所周知 Matlab 是非常強大而且「簡單易學」的,難度估計也就比 SQL 高一點但學會了以後各種數據處理哪還需要其他軟體?如果你們財務和老闆學有餘力的話還可以安裝上人工神經網路的工具箱,直接可以對你們的工資進行機器學習,何須止步於工資的自動計算呀(微笑)?你覺得你只讓他們去學 SQL 是不是在阻礙他們?是不是害怕他們搶了你的飯碗?你這樣的心態不對。技術方案選擇還是有私心,太保守不夠有遠見。

    當然玩笑歸玩笑,意思你應該能體會。你把對用戶的要求和期待拔得和對自己一樣高。你心裡覺得「這也是為他們好」實際上他們希望你能做的越傻瓜化越好,而不是越強大越好。

    他們真的不期待強大,他們期待簡單。期待漂亮,用起來有面子。如果你能滿足這些,他們並不會吝嗇對你的尊敬。因為你值得被尊敬。

    但是當他們看到糟糕的界面,不知所云的概念和你固執的辯解時,他們沒有感覺到你在尊敬他們。那麼你又怎麼能期待他們尊敬你呢?

    最後說一句,你的野路子問題。其實不用自卑野路子不野路子。只要虛心肯學,多看書多實踐,沒有什麼是教室里才能學到而你學不到的。這不是勵志,這是事實。

    請繼續努力。看好你喲。


    類似題主的情況,我也遇到過,具體情況是,網吧本來有一套基於excel的報表系統,作為每班結束後的統計之用,但是有一個比較嚴重的問題,就是由於收銀員普遍素質不高,明令禁止在單元格之間複製粘貼,(由於報表通過公式來計算,因此複製粘貼會破壞引用關係),但是仍有大量新入職員工隨意複製粘貼,導致各種計算錯誤。

    因此需求就來了,開發一個不會受複製粘貼影響,且可以由管理者自己定義各種數據實體之間關係的報表系統。

    我一想,這個需求不難啊?於是花了數天擼了一個簡單的報表系統(用了Node.Js),上面提到的需求基本都可以滿足。

    但是更快,還沒正式上線,就發現了嚴重問題,如果說之前excel形式的很容易搞砸是個大問題的話,那麼現在的版本就是讓員工更本摸不著頭腦:因為excel操作真的太易學了,而且多數人可以憑藉之前的經驗熟練的操作,畢竟還是老員工多啊。

    於是我想到了一個方法,就是改造excel,因為之前的excel的方案問題其實就只有一個,而好處卻有很多,比如穩定性;可以簡單的通過備份文件的方法來備份數據(而不需要單獨學習一些東西);快速上手等等

    具體方案就是利用excel內置的機制來解決這個問題,這個我探索了好久,最後是通過excel內置vba來解決這個問題,就是直接屏蔽菜單上的複製功能,然後對對應快捷鍵設置一個宏,手工實現複製粘貼功能,只改變值,而不更新公式引用,於是問題解決,對方很滿意。

    為什麼我沒有選擇改造自己寫的東西呢?因為成本啊!大部分需求Excel都能滿足,而你自己去造一個能讓用戶按照既有習慣進行操作的軟體,成本有多少?即使只是製作一個Excel功能的子集,那也是一個很大的工作量,有這個精力和能力,為啥不能搞別的?

    一個替代項目的價值取決於它解決了一個問題的同時有沒有同時引入更大的問題。新的東西總是會有學習成本的,特別是方案完全不同的情況,如果學習成本造成的問題大於它所解決的問題,那麼被採納才是怪事

    而且,你能保證你寫的東西考慮的邊界情況有excel的多?即使你都考慮到了,後面來接手的人呢?還有財務人員寫的代碼呢?這樣的系統幾乎沒有實用性,除了拿來練手之外,實用價值確實不高

    -----

    如果你真的要弄一個能讓老闆接受的方案的話,那就應該從一開始就去收集需求,最起碼要知道原有方案的問題在於何處,不同的角色可能有不同的需求,比如員工的需求可能是方便查看自己的工資,和之前的工資的對比,已經工資漲跌的緣由——或者說是工資是如何被計算出來的;老闆、財務的需求可能是方便的管理功能,比如調控一些係數,或者關聯業績的比例,增加一個新的影響因素——以上這些我是胡扯的,具體要自己調研。然後把這些需求整理起來,然後把所有的用例都設計出來,並且要考慮不同的情景下的操作。這是需求部分,這部分不做好,別去動工寫什麼。整理需求的過程切記多和這些人交流交流,如果你連這個都交流不好的話,做出的成品更難讓人接受。

    然後編碼過程中注意可測試性,最好是能實現編寫單元測試,畢竟這是涉及金錢的,如果出錯了,那可比其他的問題嚴重多了。

    界面部分其他人也都說的很好了,其實我覺得界面真不是問題的核心,因為一旦你事先設計好了,界面能不好用么?

    雖然我覺得真要這麼做這個項目會在需求分析階段就被否決。。。


    我所在的團隊最近正在寫人事管理系統,也是用nodejs。我在思考客戶使用我們系統時,從來不敢想著讓客戶增加學習成本,基本都是客戶點一個按鈕,後端跑斷腿的設計。

    看到你說讓那些財務學習使用sql,簡直嚇尿。為什麼你會有這麼反人類的想法,我平時操作資料庫要麼用sequelize、要麼用workbench,直接寫sql一般是用於調試或者添加批量數據。

    你如果真的想推出你的產品,一定不要讓領導覺得你的產品會產生巨大的學習成本。一個命令行、一個sql足以讓大部分人聞之色變。

    最後,好看的界面才是吸引客戶的關鍵啊,我們的客戶從來不挑後端的毛病,只挑些頁面的字體大小什麼的,畢竟他們不懂(′?_?`)。建議你用bootstrap來快速開發前端頁面,扁平化設計,基於jquery,學習成本低,關鍵是還好看。

    騷年,既然你覺得讓財務們學習sql並不難,那你學習bootstrap應該也不難

    吧~~~


    題主挺有想法的,是個人才。

    但是乾的這活一般被稱作脫離用戶實際需要的偽需求。

    做一個軟體,首先是要給人用的。

    那麼首先要找到這個軟體的目標客戶和實際用戶。

    然後去調查,分析他們的需求。

    當然不同人有不同需求,還要分個高低輕重。

    所以不是說開發人員自己覺得怎麼樣就是怎麼樣的。

    好不好用開發人員說了不算,因為不是最終用戶,他不知道實際應用場景里會出現什麼情況。

    你們老闆說的很對,原來excel,財務人員用的很熟練,所謂會者不難,他們已經習慣了,沒有需求去改變。

    題主好心,說兩分鐘做15分鐘的事,可能是站在題主自己的技術水平來說的,如果換作財務人員,可能是反過來的。

    而且前期還有大量的培訓成本。

    而且題主敢保證程序沒有bug?敢保證不會因為用戶不熟練的操作造成數據損失?

    再一個問題,如果做改進型的項目,還要考慮用戶已形成的操作習慣。

    一般的用戶遇到用起來不順手的東西,第一反應就是不好用。

    然後可能用熟練了,才能客觀的去和原來的情況比較,說白了就是用戶習慣的向下兼容。

    你想想當年win8出來多大的爭議。

    第三個問題,題主那個頁面也太寒磣了,說難聽點,一股山寨氣息。一般用戶對技術不熟,可是對gui還是挺關注的,你後面多牛的技術手段,不好看就是不爽。

    還有,別跟用戶說命令行,我看了都煩,別說一般用戶了。

    總之,題主這個在一般用戶看來,就是個沒用的半成品,題主要是想推廣,還需要下下功夫。

    如果你的操作足夠友好,他們的實際問題你都能更有效且方便的實現,我覺得老闆會贊同你的。


    唉,我不是故意的…

    1.敢不敢再丑點?

    2.學sql?are you kidding!

    你要考慮幾個問題:

    1.同事是白痴

    2.用戶是白痴

    3.產品是傻逼

    看完上面三個,你還敢說你這個提高了效率?


    私以為,如果你要做這套系統,你得把系統做完整,不能讓人家自己去資料庫里玩對吧?增刪改查的功能都得做出來對吧?用戶許可權得考慮清楚對吧?你得把各方面考慮到這才能算個系統對吧?

    就你現在做的這個東西,連半成品都不算,玩呢?

    「你已經超神了」,玩呢?

    隔行隔山,這說的不止是真正的行業壁壘,還包括心理壁壘。資料庫基礎在我們看來或許真的沒那麼難,但是你要求財務去學?玩呢?

    在你這個混亂不可靠的體系下(注意,不是代碼,是整個體系的不可靠),不是excel要花你300%的時間,而是你的東西整體成本不可控,跟excel完成不具備可比性


    你把裡面的英語換成德語,符號換成符文字母

    基本就是你的程序在非編程人眼裡的東西。弄個前端設置好輸入條件讓人直接點就完事了

    想讓麻瓜用魔法?不是教他們咒語,而是做成捲軸賣。你讓業務人員學代碼。。你是想讓學不會的罵你還是學會的替換你?


    我突然想起一個有趣的事。

    很多時候,最賺錢的並不是技術手段最屌的產品,而是連最白痴的用戶都能用得很開心的產品。


    讓用戶寫sql語句??然後你只要執行??我大學時候做的大作業都不止這個水平好嗎……做軟體的都應該知道,永遠不要相信用戶的輸入…


    老闆的意思你沒明白

    他的意思是

    大家用習慣後,萬一你小子辭職了,以後我找誰來維護?


    像一坨屎。老闆把剛看完一本《喬布斯自傳》摔到桌子上說道。你告訴我,用iPhone需要大學文化嗎?啊!?

    我們要做的產品只要小學文化就能用!你看看你這圖表,一個個飛來飛去,SQL語句是啥東西,excel這麼厲害都沒有要求用這個!?都什麼年代了,還用這黑漆漆的界面,同志們,要與時俱進啊!今天什麼破玩意廢了,太不人性化不友好了,百分之兩百不能用。唉,被你氣暈了,若不是缺人,你這樣不符合價值觀的早就炒了,回去吧,搞好了再來


    做程序的第一個原則, 就是把用戶當什麼都不懂得傻子來看待, 這樣設計自己的程序界面及邏輯的時候, 才能讓最終結果不出問題...

    很顯然, 你做的東西離這個目標也太遠了吧...

    一般上一個可以操作內容的項目, 要有不同許可權的東西, 還要有後台管理界面, 不是只做展示就可以的了, 因為直接操作資料庫是大忌, 一般都要封裝一下然後再做完善的數據校驗許可權, 管理員也很少直接操作數據的, 都是在後台管理頁面去操作數據...因為人都有迷糊的時候, 手滑操作一下資料庫, 錯了怎麼辦? 慎之又慎才是最重要的事...

    你現在不僅要補習前端知識, 對於用戶體驗設計的東西也有很多很多的要學習, 才不會有這麼多的低級錯誤出現...

    這個系統我要打分的話, 滿分一百分, 我最多給1分...只是界面出來了而已...


    你這程序我都看不懂你指望財務能看得懂。。。

    你的水平不見得低,但是你對程序員的意義好像不是特別清楚

    程序員的作用就是讓白痴藉助你寫的軟體完成一個原本複雜但是機械的特定工作。

    程序員的作用是幫助懶人,你倒好。。。你還給人新的學習要求。。。要知道斷人錢財,逼人學習都無異於殺人父母。。。

    曾經給單位寫過一個出差統計處理資料庫軟體,使用者是一個大媽。。。大媽。。。最後那個程序用起來比電視機也複雜不到哪去,但是她還嫌麻煩。。。恨不得點一個按鈕就可以完成所有處理並且生成完美的表格並且直接轉發給領導。。。而且那個按鈕還得在她想要的時候自己蹦出來。。。

    說實話你這軟體寫了等於沒寫,你還不如裝個navicat然後讓財務學會算了。。。


    主要是,太丑了


    上次做個spa,一個刪除按鈕,我嘗試了3個位置才最終確定。

    以前聽過一句話,「把用戶當成傻逼,當成極度沒有耐心的熊孩子,你就對了。」

    以前我不以為然,經過幾次坑之後,才深表同意。

    用戶不會考慮應用的複雜度。只考慮用的爽不爽,顏值高不高,能不能約炮,能不能撩妹。


    老闆來評價技術,你覺得能客觀么?


    界面我不會做啊,我就是管理excel和vba的,nodejs偶爾學一下也不過半年多

    你看你說的多麼理直氣壯的。

    SQL我不會啊,我就是個辦公做表的,Excel還沒用熟呢

    可能需要培訓一下怎麼休吧。但做起來的話會點sql where就能寫啊

    可能需要看看CSS吧,但是做到能看也不需要很複雜啊。

    我如果連前台都會靈活套用各個div+CSS模板了,這還對得起我這在北京8k的工資嗎

    我一個小公司的小財務,連SQL都學了對得起我在北京8K的工資嗎

    有些東西呢,別說在自己身上就理直氣壯的,不會我有理,到了別人身上就是不會不行就是蠢。

    這麼說吧,你這套東西,不小心DROP TABLE了你有沒有應急措施?

    現在急需一些複雜函數,你二十分鐘能不能寫出來?排序沒意外的話你應該也只能手寫選擇或者冒泡吧?回歸函數之類的呢,你是不是還得看兩天論文?

    再說了,你覺得Excel需要消耗300%的腦子和350%的時間,對人家熟練的才不是這樣的好吧?你為啥非要人家學你的SQL而不去學Excel。

    算了不說這個複雜的,你就告訴我你檢不檢查用戶輸入怎麼避免不小心輸錯吧?希望不是拿刀把他們砍死。


    技術人員沉迷於自hi中無法自拔。如果真拔不出來,折中方法是使用VBA。


    讓用戶直接操作資料庫,這擱誰誰鄙視啊。你好歹也弄個界面操作吧?

    你讓財務去資料庫里操作,那還不是分分鐘砸鍵盤的事


    老闆只看界面!!老闆只看界面!!老闆只看界面!!


    推薦閱讀:

    當前還有哪些主流的用戶需求沒有在互聯網上得到很好的滿足?
    在沒有用研的時候,怎麼確定假設的用戶需求是客觀的?
    為什麼現在的VR設備留存率低?為什麼用戶不願繼續玩VR了?
    怎麼做才算得上是有格調的互聯網產品?
    遊戲滿足了人類哪些需求?

    TAG:用戶需求 | 程序員 | JavaScript | PHP | Nodejs |