How to be a good engineer
Download
1 / 18

How to be a good engineer ? - PowerPoint PPT Presentation


  • 157 Views
  • Uploaded on

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. 工業標準.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' How to be a good engineer ?' - gwendolyn-thompson


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


工業標準

main()

{

char s[10];

strcpy(s,”abc”);

addExt(s);

printf(“%s”,s);

}

void addExt(char *s)

{

strcat(s,”.dat”);

}


工業標準

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

}


工業標準

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

}


工業標準

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

}


工業標準

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

}


工業標準

#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


5

4

3

1

2

溝通方式

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

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

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

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


Thank You

機會永遠屬於主動的人


ad