How to be a good engineer
This presentation is the property of its rightful owner.
Sponsored Links
1 / 18

How to be a good engineer ? PowerPoint PPT Presentation


  • 110 Views
  • Uploaded on
  • Presentation posted in: General

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


How to be a good engineer

How to be a good engineer ?

Phantom Weng, Openfind RD VP


Engineering

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


How to be a good engineer

工業標準

main()

{

char s[10];

strcpy(s,”abc”);

addExt(s);

printf(“%s”,s);

}

void addExt(char *s)

{

strcat(s,”.dat”);

}


How to be a good engineer

工業標準

#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;

}


How to be a good engineer

工業標準

#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;

}


How to be a good engineer

工業標準

#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;

}


How to be a good engineer

工業標準

#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;

}


How to be a good engineer

工業標準

#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”


Learn from our or other s prior failures

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?


Planning a software project

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.


Duties for an engineer

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


Bad schedule estimation

Bad Schedule Estimation

  • 過分樂觀

  • 義和團式的估計方式

  • 沒考慮到 integration effort

  • 沒考慮到 testing and debugging effort

  • Perfect Man-month partition


The man month

Time

Communication

Effort

Work load

Human resource

The Man-Month


Time requirements suggested by fred p brooks jr

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


How to estimate schedule

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.


Design

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


How to be a good engineer

5

4

3

1

2

溝通方式

  • 主動溝通是每個人的責任

  • 無法溝通的時候不是放著不管,而是 escalate

  • 最後總會有人做決定。做決定的人負責任。

  • 決定一但完成,所有人不管原來同不同意,必須共同遵守並確實執行。


How to be a good engineer

Thank You

機會永遠屬於主動的人


  • Login