Agile in planday

33
Agile in Planday #HienNguyen #Planday #AgileVietnam #2015

Transcript of Agile in planday

Agile  in  Planday  

#HienNguyen#Planday  #AgileVietnam #2015

WhoAmI()  {return  HienNguyen  =  {

{  board_member  _at_ agile_vietnam  },{  [[no-­‐title]]  _at_ Planday  };

}}

2

why_am_i_staying_here =  {@Share  a  case  study  of  Agile  applying  in  Planday,@Hiring  J

my_expectations :  [@You  know  how  we  are  doing  /  being  in  Agile  projects  /  environment,@Get  your  comments  of  what  we  are  doing  /  being  right  /  wrong,@Find  the  talents  onboard  with  us

]

}

3

what_am_i_talking_about =  {agile_project :  [

practices,collaboration,automation  &&  visualization,continuous_integration,lean

],agile_environment :  [

working_style,motivations

]

}4

planday  ::contextplanday =  start_up {

product :  workforce_scheduling_system,company_size :  60,offices :  [  CPH,  HAN,  LND,  OSL  ],hanoi _office  :  office.open(  2013  ),projects :  [

system_maintainance,platform,mobile,…

]}

5

#agile_project

practices  =  [scrum  ||  kanban,meetings :  [

sprint,daily,retrospectives,…

],pair_programming,tdd,…

]7

project  ::visualization  

where  reason =  visualize_most_as_possibleà visualize ([

team_board,wiki,commit,build,…

]);

8

project  ::visualization  ::board

9

project  ::visualization  ::status

10

project  ::tools

11

project  ::workflow

User  storyAccept  criteria  

agreement

DoD

Interface  definition

Code Test

CodeCode  reviewTestBuild  

pipeline  integration

Sub  task

dev :  test1:  1

dev :  test1:  1

12

project  ::flow  ::interface_definition

As  normal  user,   I  want  to  get  all  portals,   support  pagination

13

project  ::testing

test_types =  [{  unit_test,  nunit },{  integration  ||  contract_test,  nunit },{  performance_test,  jmeter }

]

14

#agile_project##ci

project  ::ci

automated_things =  [build,test,deploy,code_quality_control

]

16

project  ::ci  ::pipeline  

17

project  ::ci  ::build  

automated_build =  {by_commit :  true,db_migration :  {

auto :  true,name :  #RoundhousE

}break_build_on_error :  true,notify_to :  #HipChat

}18

project  ::ci  ::test

automated_test =  {by_commit :  true,test_types :  [

unit,integration,performance

],break_build_on_error :  true,notify_to :  #HipChat

}19

project  ::ci  ::test

20

project  ::ci  ::deploy

automated_deploy =  {trigger :  commit,tool  :  #Octopus,environments  :  [

test,staging,production

],notify_to :  #HipChat

}21

project  ::ci  ::code_quality_control

automated_code_analysis =  {trigger  :  daily,tool  :  #Sonar,steps  :  [

checkout,analyze,log_n_report

],integrate_to_build_pipeline =  false,

}22

project  ::ci  ::code_quality_control

23

project  ::ci  ::environment

environment  =  {name :  #amazon_aws,reasons  :  [

on_demand_scale,easy_to_clone

],on_off_flexible :  true,

}

24

#planday_environment

environment  ::management

directions  =  [@Work  hard,  play  hard@It’s  not  bad  when  we  have  mistakes,  it’s  

just  bad  if  we  don’t  know  we  are  doing  wrong  or  don’t  want  to  make  it  better

@Go  lean]

26

env ::simple_3

simple_3  =  [rules :  [

respect_to(  [contract,  colleagues,  …  ]  ),

!share(  private_things ),!say_bad_thing_about(  colleagues,  

back  ),],always_invoke(  good =  3,  bad =  3,  

time_out_minutes =  3  )]

27

env ::mngt ::method

method  =  {style :  #flat_managment,roles  :  [

[[no-­‐title]],member

]}

28

env ::mngt ::[[no-­‐title]]

works  =  whatever(  member -­‐>  satisfied  )  {keep_direction(  right  );support_member(  all  );

}

29

env ::mngt ::members

member.works =  whatever(  self -­‐>  satisfied,  environment -­‐>  better  )  {

self-­‐aware(  actions  );support_colleague(  all  );motivate(  [self,  others]  );improve(  [self,  others]  );

}team  =  {

self-­‐organized :  true} 30

env ::activities

activities  =  [works :  [

saturday_talk,code_challenge,shipit_day,…

],plays  :  [  football,  film, big_friday,  …  ]

]31

ping  –t questions.you.here

32

planday#  find talents.here

event =  {name  :  @Regional  Scrum  Gathering  2015,topic  :  @Scrum  in  action,location:  @Pullman  Saigon  Center,time  :  @2015-­‐May,  29  -­‐>  30,info  :  @https://scrumgatheringvietnam.org/

}33