1 / 18

How to be a good engineer ?

How to be a good engineer ?. Phantom Weng, Openfind RD VP. Engineering. Programmers No engineering, just do it Engineers Balance between ideal world and real world Solving problems with disciplined and systematic approaches Scientists/Researchers Looking for a perfect model. 工業標準.

Download Presentation

How to be a good engineer ?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. How to be a good engineer ? Phantom Weng, Openfind RD VP

  2. Engineering • Programmers • No engineering, just do it • Engineers • Balance between ideal world and real world • Solving problems with disciplined and systematic approaches • Scientists/Researchers • Looking for a perfect model

  3. 工業標準 main() { char s[10]; strcpy(s,”abc”); addExt(s); printf(“%s”,s); } void addExt(char *s) { strcat(s,”.dat”); }

  4. 工業標準 #define SUCCESS 0 #define ERR_PARAM -1 main() { int ret = 0; char s[10]; strcpy(s,”abc”); ret = addExt(s,10); if (ret != SUCCESS) // Error Handling else printf(“%s”,s”); } int addExt(char *s) { if (s == NULL) return ERR_PARAM; strcat(s,”.dat”); return SUCCESS; }

  5. 工業標準 #define SUCCESS 0 #define ERR_PARAM -1 #define ERR_BUF_SIZE -2 main() { int ret = 0; char s[10]; strcpy(s,”abc”); ret = addExt(s,10); if (ret != SUCCESS) // Error Handling else printf(“%s”,s”); } int addExt(char *s,int nLen) { if (s == NULL) return ERR_PARAM; if (strlen(s)+strlen(“.dat”) >= nLen) return ERR_BUF_SIZE; strcat(s,”.dat”); return SUCCESS; }

  6. 工業標準 #define SUCCESS 0 #define ERR_PARAM -1 #define ERR_BUF_SIZE -2 #define LEN 10 #define EXT “.dat” main() { int ret = 0; char s[LEN]; strcpy(s,”abc”); ret = addExt(s,LEN); if (ret != SUCCESS) // Error Handling else printf(“%s”,s”); } int addExt(char *s,int nLen) { if (s == NULL) return ERR_PARAM; if (strlen(s)+strlen(EXT) >= nLen) return ERR_BUF_SIZE; strcat(s,EXT); return SUCCESS; }

  7. 工業標準 #define SUCCESS 0 #define ERR_PARAM -1 #define ERR_BUF_SIZE -2 #define LEN 10 #define EXT “.dat” main() { int ret = 0; char s[LEN]; strncpy(s,”abc”,LEN); s[LEN-1] = ‘\0’; ret = addExt(s,LEN); if (ret != SUCCESS) // Error Handling else printf(“%s”,s”); } int addExt(char *s,int nLen) { if (s == NULL) return ERR_PARAM; if (strlen(s)+strlen(EXT) >= nLen) return ERR_BUF_SIZE; strncat(s,EXT,nLen-strlen(s)-1); s[nLen-1] = ‘\0’; return SUCCESS; }

  8. 工業標準 #define SUCCESS 0 #define ERR_BASE 0 #define ERR_PARAM ERR_BASE - 1 #define ERR_BUF_SIZE ERR_BASE - 2 #define LEN 10 #define EXT “.dat”

  9. Learn from our or other’s prior failures. • Why projects fail? • Poor scheduling • Poor planning • Poor management • Bad organization structure • Uncontrolled requirements • Unmanaged changes • Are these reasons technical?

  10. Planning a software project • Everyone knows we need to have a plan, but why we don’t have it • Release pressure and tight schedule • We only have time to testing and coding, anything else is unnecessary and can be skipped • But, actually, having a sound plan is the only way to meet the aggressive schedule.

  11. Duties for an Engineer • Feasibility study • Technical design with alternatives • Schedule estimation and meet it • Robustness and quality • Your work can be reproduced • Your work can be maintained

  12. Bad Schedule Estimation • 過分樂觀 • 義和團式的估計方式 • 沒考慮到 integration effort • 沒考慮到 testing and debugging effort • Perfect Man-month partition

  13. Time Communication Effort Work load Human resource The Man-Month

  14. Time requirementsSuggested by Fred P. Brooks, Jr. • Planning • Coding • Component test and early system test • System test with all component in hand 1/3 1/6 1/4 1/4

  15. How to estimate schedule • Do not optimism. Always keep buffer. • More details you consider in the design stage, more accuracy about your estimated schedule. • Break large module into small modules. • Do not forget the effort of integration. • Use intermediate milestone to control. • Learn from mistakes.

  16. Design • Review by others • Must have alternatives • Design more • Well-document • Invite related people to join design • Start thinking about integration at this stage • Control bugs • UI samples

  17. 5 4 3 1 2 溝通方式 • 主動溝通是每個人的責任 • 無法溝通的時候不是放著不管,而是 escalate • 最後總會有人做決定。做決定的人負責任。 • 決定一但完成,所有人不管原來同不同意,必須共同遵守並確實執行。

  18. Thank You 機會永遠屬於主動的人

More Related