Time of Update: 2018-12-04
過年那段時間,抽空看掉了《產品經理實戰手冊》,金山的王欣、夏濟寫的,很實用的操作讀物,看起來比較輕鬆,記錄一下自己的體會。另推薦《產品經理的第一本書》和《第二本書》(前兩天5塊淘到,哈哈),更詳細,看起來也累一點,只是瀏覽過。 看完之後對產品經理有了更全面的理解,正如Product Manager是從寶潔的品牌經理髮展而來的一樣,還有很多工作是PD平時接觸不多的,因為公司裡有專門的運營、PR、市場、銷售團隊會做掉相應的工作。不過這次的產品暫時沒有專門的運營團隊,而且最近又加入了銷售團隊的郵件組,
Time of Update: 2018-12-04
當將選項按鈕添加到對話方塊時,將它們作為一個組處理,在“屬性”視窗中為組中的第一個按鈕設定 Group 屬性。該選項按鈕的控制項 ID 於是出現在新增成員變數嚮導中,這使您得以為選項按鈕組新增成員變數。在對話方塊上可以有一組以上的選項按鈕,每組都應通過下面的過程添加。將一組選項按鈕添加到對話方塊選擇“工具箱”視窗中的選項按鈕 (RadioButton) 控制項,並在對話方塊中單擊希望放置該控制項的位置。重複步驟 1 以添加所需的任意多個選項按鈕。確保組中選項按鈕的
Time of Update: 2018-12-04
前段讀了《敏捷估計與規劃》,這本書很適合開發經理看,我只是很快的瀏覽了一下,摘錄一些體會。 Ø 敏捷的裡程碑是功能驅動的,先完成可交付的最“重要”功能,重要取決於功能商業價值、生命週期、實現難度等綜合的結果。而傳統的瀑布模型的裡程碑是任務階段驅動的,到了項目50%的時間,可能進入“編碼”,但對客戶來說,等於0%。而且這樣的模式會陷入“實現難度決定開發順序”的不合理模式,因為這裡有個不合理的假設前提:所有功能都能夠完成、必須完成,中間過程對客戶是透明的。 Ø
Time of Update: 2018-12-04
突然想起QA的一個職業口頭禪:你這樣做是不對的……當PD們激情四溢的亂沖亂撞時,有個嚴酷的QA/測試控制著,確實太有必要了,雖然經常吵架,:) 先分清兩個概念,原來一直很土的以為QA和測試是一個概念,其實QA是品質控制,主要做流程管理(如需求跟蹤流程、需求變更流程)、組態管理(版本管理,多分支開發的管理)、文件管理(如開發規範、UI規範)等東西,經典的CMM成熟度等級啥的說的就是這回事,不過這方面懂的不多,有興趣可以去搜“測試的成熟度等級模型”,人月神話的blog裡有談到。測試本身就比較單純了,
Time of Update: 2018-12-04
int g[N][N]; /*剩餘流*/bool vis[N]; /*標記數組*/int level[N];int n, m; /*頂點數,邊數*/int src, sink; /*scr源 sink匯*/int build(){ /* 建圖 */}int find(int x) { for (int i = 1; i <= n; i++) { if (g[x][i] != 0 && level[i] == level[x] + 1)
Time of Update: 2018-12-04
最近項目做的對敏捷有點興趣,花了兩個晚上瀏覽了《敏捷反覆式開發法——管理者指南》,理念式的書,看起來比較輕鬆,摘錄一些自己的體會。 有些需求在開始的時候是提不出來的,或者說沒法細化的,強行的過渡需求分析是浪費時間的行為,到後來多半還是要改。瀑布(其實Royce大大提出的瀑布模型初衷裡也是有迭代思想的,不過被後人誤讀了)的問題是最後集中暴露矛盾,當然對需求固定的項目還是不錯的。敏捷反覆式開發法,如果斷章取義是極其危險的,比如沒有迭代的測試跟上,到最後發現問題的時候就已經晚了。 介紹了四種敏捷
Time of Update: 2018-12-04
前幾個月嘗試做了PM(這次是Project不是Product了),親身經曆了一個項目是怎樣一步步不順下去的。先說明一點:這裡的“敏捷”是指甲乙雙方配合的“敏捷”,而不是說外包項目本身內部不合適“敏捷”。 先說一下背景,項目時間太緊,工期是由商業談判決定的,沒有及時評估工作量,做著做著產生delay,先試圖簡單的用加班的方法趕上進度,後來被迫注入“敏捷”項目方法,但事後發現“項目外包”模式不適合敏捷。 首先,項目外包使得甲方不願意砍需求。為了敏捷靈活,公司內部的項目需求在很大程度上是可以砍的,是“
Time of Update: 2018-12-04
提前50天左右完成“一周一篇,持續一年”的小目標,繼續往下走下一站99篇~~~==========================================================在很多外人眼中,需求人員整天就是在寫文檔,那乾脆整點文檔的心得吧。話題超大,網上也有很多文章,我只說幾點自己平時很注意的。 Word:在做結構稍微複雜點的文檔時採用,簡單的幾段話一般用記事本搞定,開啟Word絕對不是一開始就碼字,而是要先設定一堆東西,比如頁面、格式樣式、標題層級啥的,充分利用Word的自
Time of Update: 2018-12-04
技術人員的全面介入,可以簡單的看作以“需求分析初稿完成”為界,需求完成以後,派生出幾個設計:互動設計、編碼設計、資料庫設計、測試設計,各自設計完成並執行以後,再部署發布。 具體的說一下,互動設計這塊,主要是做軟體和使用者互動的工作,分工有從最直接的視覺設計師到使用感受上的使用者體驗師(互動設計師)再到偏代碼實現的前端工程師。 編碼設計,比較偏概要設計的有軟體架構師(比如整個系統的表結構設計),具體到coding的層面就是最常見的開發工程師,他們也會有分工,比如偏應用、偏底層資料庫、專做搜尋引擎,
Time of Update: 2018-12-04
/* Dinic最大流 O(V^2 * E)INIT: ne=2; head[]置為0; addedge()加入所有弧;CALL: flow(n, s, t); */#define typec int // type of coststruct edge { int x, y, nxt; typec c;} bf[E];int ne, head[N], cur[N], ps[N], dep[N];void addedge(int x, int y, typec c) { //
Time of Update: 2018-12-04
可用性測試也是使用者研究/需求採集的一個常用方法,從理念上講就是:讓產品的最終使用者儘可能多的參與到產品設計各個環節中去,深入一點就很2.0了——“使用者創造內容”(這也不是什麼新概念,傳統行業的宜家IKEA好像早在50年前就有所行動,讓使用者參與到產品的設計),把使用者參與擴充開,還可以包括前期調研、demo評審等等。 可用性測試的效果往往無法量化,所以經常因為項目時間過緊被略過,好不容易前段時間這次有了一些空閑,正好系統的部分模組是給阿里內部人員使用的,所以就很低成本的執行了一次可用性測試。
Time of Update: 2018-12-04
人治à法治à無為而治,大公司多為第二種:法治,1和3很像,外表經常看不出來。管理最高境界就是做到無為而治,這是產品和團隊的發展必經階段,我們的現狀就是“1à2”,開始正常化,正好有同學原來熟悉UML,所以大家也都開始學習一下。 UML就是整合模組化語言,它試圖將軟體工程的過程給正常化,從產品設計的角度,我對它的簡單理解就是用一系列的標準圖把需求分析的過程串起來,充分體現了“字不如表,表不”的原則,具體是以單個用例的粒度為界,把相關的圖理解為兩個層面。 上層的圖中,用例是最小單位,不涉及用例內部,
Time of Update: 2018-12-04
/*0為源點,n-1為匯點,返回最大流*/int edge[N][N];int chk[N], n,m;int father[N];int Ford_Fulkerson() { while (1) { queue<int> q; memset(chk, 0, sizeof (chk)); memset(father, -1, sizeof (father)); int now; chk[0] = 1;
Time of Update: 2018-12-04
Dijkstra O(E * log E) /* Dijkstra O(E * log E)INIT: 調用init(nv, ne)讀入邊並初始化;CALL: dijkstra(n, src); dist[i]為src到i的最短距離 */int cost[E], dist[V];int e, pnt[E], nxt[E], head[V], prev[V], vis[V];struct qnode { int v; int c; qnode(int vv = 0, int
Time of Update: 2018-12-04
接上回,下層的圖描述的是一個用例內部的事務(用例內部不一定是“單個用例”內部,也可能有用例之間的關係),主要有: Ø 時序圖(順序圖):描述事情變化在時間維度上的先後順序,善於表達對象(比如多個頁面之間)的互動。玩的好可以完全替代UC中對流程的文字表述。 Ø 活動圖表(比較接近傳統意義上的流程圖):描述各種動作如何引起系統變化,善於表達泳道較多、分支較多的情況。 Ø
Time of Update: 2018-12-04
在編程的時候,經常遇到要判斷一個字串中的字元是否全部是數字(0-9),本來是一個很容易實現的功能,但程式員首先會想到的是,這樣簡單的功能有沒有現成的函數可以用呢?VB.NET中有個IsNumeric(object),C#中只有判斷單個字元的Char.IsNumber(),IsNumeric可以判斷double類型的數字字串,但無法排除加號或減號和小數點,如果判斷字串是否是一個數的話用它挺合適,但不能用來判斷字串是否全部由數字組成的。沒現成的方法了,只好自己寫函數:public static
Time of Update: 2018-12-04
Dancing Links 精確覆蓋模板#include<iostream>#include<stdio.h>#include<string.h>#include<vector>#include<math.h>#define inf 0x3fffffffusing namespace std;const int N = 305; /*列數*/const int M = 4000; /*點數*/int map[N][N]; /*
Time of Update: 2018-12-04
產品團隊剛剛經曆了一場公司內部的戰爭,爭奪的是下個月的開發工程師與測試工程師的資源。 先說一下為什麼以前沒有過這樣的戰爭吧,因為公司原來是按照產品線劃分的部門,這樣對於某個產品來說,有自己的PD、開發與測試等,下個月要做哪些需求,完全可以在產品經理的層面上決定;而現在公司變成了按職能劃分團隊,有了統一的產品運營中心(PD和運營)、研發中心(所有開發工程師)、質控中心(所有測試工程師),這樣的話,下個月各個產品就都想儘可能多的搶到開發與測試,然而資源總是嚴重不足的,所以最終做哪些,就必須要上升到幾
Time of Update: 2018-12-04
Dancing Links 重複覆蓋模板 #include<iostream>#include<cstdio>#include<string.h>#include<vector>#include<math.h>#define inf 0x3fffffffusing namespace std;const int N = 1005;const int M = 4000;int U[M], D[M], R[M], L[M],
Time of Update: 2018-12-04
ShellExecute(NULL, "open", "Winword", "D://1.doc", NULL, SW_SHOW); ShellExecute(NULL, "open", "Winword", "D://2.txt", NULL, SW_SHOW); ShellExecute(NULL, "open", "Winword", "D://3.html", NULL, SW_SHOW); ShellExecute函數原型及參數含義如下: ShellExecute(