SlideShare une entreprise Scribd logo
1  sur  70
//@roofimon
“   ”
“   ”
You can not find the best
 solution but you can find the
 optimal one.
Agenda
•   Software Development in my perspective
•   Methodology
•   TDD
•   Tools
•   QnA
•   Little bit about @roofimon
•     26         2518       1       2
•                                A-F
•             IT Technical Architect DTAC
• Architect        ?
•                  “           ”
Software Development
•
•                          ?
•        “   ”



•
•                     IT
    ?
Just an Example
•   Programmer
•   Project Management
•   Solution Architecture
•   System Integration
•   Database Administration
•   Testing
•   Security
•   Operation
•   Infrastructure
- -
             English for Communication
000102                                    - -
             English for Academic Purposes (EAP
  II)
000103                                    - -
             English for Academic Purposes I
  (EAP II)
000112                               - -
             Thai for Academic Purposrs(???
Software Development
 and Operation is like
     grocery store
How to build software like 7-11

•   Work
•   Not over budget
•   In time
•   Easy to transition
•   Easy to operate and maintain
We need
• Methodology
• Good Programmer
• Tools
Lack of Methodology
How to survive?


  Methodology
Methodology reflect …

            Methodology


  Team                    Individual
Structure                  Behavior

             Discipline
Which one is the best?



Which one is the suitable for us?
The Greatest Waterfall
The Greatest Waterfall

Requirement

         Analysis

                    Design

                             Implementation

                                      Integration
                                                Testing

                                                          Maintenance
Waterfall Team
Waterfall Discipline

• Project is divided into sequential phases.
• Emphasis an entire system at one time.
• Tight control is maintained through the use of
  extensive written documentation.
Waterfall s..ks?
Waterfall not wrong
• 90% of enterprise firm in Thailand still using
  waterfall model.
• It’s big , really big. 100 people involve with
  project.
• Match with their procurement process
• Strong Audit process.
• “Trust ??”.
Developer Discipline
• Depends on developers themselves
• Mostly, make it fast.
• Mostly, make it done.
• Deadline ahead
• Quality ummmmm QA team will cover it for
  somehow
• Aggressive Regression Test
• Customer will come when our software is “done”.
• Change request, Change request, Change request
What about small organization?
•   They need something that is really “work”.
•   They can spend time with your team.
•   So Waterfall again?
•   We need methodology that focus on
    delivering software that working.
Agile Development Methodology
Customers   Requirement



Analyst      Analysis




                             Why Agile?
Architect    Design



Labor       Implementation



Labor        Integration


Tester       Testing



             Maintenance
Three simple truths
• 1. It is impossible to gather all the
  requirements at the beginning of a project.
• 2. Whatever requirements you do gather are
  guaranteed to change.
• 3. There will always be more to do than time
  and money will allow.
Agile Team
Discipline
• Customer satisfaction by rapid delivery of useful software
• Welcome changing requirements, even late in development
• Working software is delivered frequently (weeks rather than
  months)
• Working software is the principal measure of progress
• …
• …
• …
• Regular adaptation to changing circumstances
Developer Discipline
• According to 3 simple truth
• Agile coder will carry these four basic activities
  along with them
  – Coding
  – Testing
  – Listening
  – designing
Anyway
• Grocery Store does exist but …?
• Waterfall and Agile
• Waterfall still dominate the market.
• Waterfall itself doesn’t encourage
  programmer to write good code.
• We need something.
• Applied TDD into development phase in
  Waterfall 
We understand the story, so we
           Happy.
Produce good code
Good Programmer = Good Software
• Understandable
• Testable
Understandable
The Program
• a1 is a yng and gftd sftwreng attempting to
  hackMnfrm() of sftw company ENCOM in
  order to fndEvdc() that senior executive
  a2 stole() a1's cde and prsnt() it as his own,
  earning him a rapid series of promotions. a1 is
  blcked() by the MCP, an ai that ctrl the ENCOM
  mnfrm.
The Program
kevinFlynn is a young and gifted
SOFTWARE_ENGINEER attempting to hack() into
the mainframe of encom =
SoftwareCompany(“ENCOM”) in order to
findEvidence() that ENIOR_EXECUTIVE
edDillinger stole(kevinFlynn) code and presented
it as his own, earning him a rapid series of
promotions. kevinFlynn is blocked() by the
MasterControlProgram , an
artificialIntelligence that controls(encom) the
ENCOM mainframe.
Understandable
•   Use Intention-Revealing Names
•   Make Meaningful Distinctions
•   Use Pronounceable Names
•   Use Searchable Names
•   Avoid Encodings
Use Intention-Revealing Names
//================================
int d // elapsed time in days
//=================================
int   elapsedTimeInDays;
int   daysSinceCreation;
int   daysSinceModification;
int   fileAgeInDays;
Use Intention-Revealing Names
public List<int[]> getThem() {
  List<int[]> list1 = new
  ArrayList<int[]>();
  for (int[] x : theList)
     if (x[0] == 4) list1.add(x);
         return list1;
}
Use Intention-Revealing Names
public List<Cell> getFlaggedCells() {
  List<Cell> flaggedCells =
     new ArrayList<Cell>();
     for (Cell cell : gameBoard)
         if (cell.isFlagged())
              flaggedCells.add(cell);
         return flaggedCells;
}
Use Searchable Names
int realDaysPerIdealDay = 4;
const int WORK_DAYS_PER_WEEK = 5;
int sum = 0;
for(int j=0; j<NUMBER_OF_TASKS; j++){
  int realTaskDays =
  taskEstimate[j]*realDaysPerIdealDay;
  int realTaskWeeks =
  (realdays / WORK_DAYS_PER_WEEK);
  sum += realTaskWeeks;
}
Avoid Side Effect
public class UserValidator {
  private Cryptographer cryptographer;
  public boolean checkPassword(String userName,
      String password) {
        User user = UserGateway.findByName(userName);
        if (user != User.NULL) {
        String codedPhrase =
              user.getPhraseEncodedByPassword();
        String phrase =
              cryptographer.decrypt(codedPhrase,
                     password);
        if ("Valid Password".equals(phrase)) {
              Session.initialize();
              return true; }
        } return false;
    }
}
Testable
• What?
• We just understand our code.
• Dependency?
Test Driven Development AKA TDD
  – Executable Document Spec
  – Executable functional checking
  – Executable dependency checking
  – Executable integration test
Normal Cycle
•   Read function spec
•   Start coding
•   Monkey see and monkey do
•   It might not effect to other functions
•   Waiting for defect ticket
TDD cycle
•   Read function spec
•   (Re)Write Test
•   Run Test fail
•   Write Production Code
•   Run all test
•   Refactor
•   Cool 
Demo
Code
Part II Tools
•   Project Management
•   Collaboration
•   Development Environment
•   Development Tools
•   Testing
•   Continuous Integration
•   Deployment
•   Monitoring
Project Management and
      Collaboration
# Flexible issue tracking system
# Gantt chart and calendar
# News, documents & files management
# Feeds & e-mail notifications.
# Per project wiki
# Per project forums
Redmine Demo
Version Control
     • You are not alone
     • Code is your asset
     • Choose one:
        • GIT, SVN, CVS
Development Tools
•   Build Tool
•   Library dependency checking
•   Single Repository
•   Check Style
•   IDE
Testing
•   Junit
•   DB Unit
•   Mockito
•   Selenium
JUnit
• JUnit is a unit testing framework
• Unit test itself is not enough we need
  company
DBUnit
• Why do we need to test our database?
• You need [multiple] databases
Mock Object
• Mock objects are simulated objects that mimic
  the behavior of real objects in controlled ways.
• supplies non-deterministic results
• has states that are difficult to create or reproduce
• is slow
• does not yet exist or may change behavior;
• would have to include information and methods
  exclusively for testing purposes
Web App Test
• Selenium is a suite of tools to automate web
  app testing across many platforms.
Continuous Integration
• Execute all unit test in integration
  environment
• Code coverage checking
• Automatic Branch/Tag
Deployment
Monitoring

Contenu connexe

Tendances

QA team transition to agile testing at Alcatel Lucent
QA team transition to agile testing at Alcatel LucentQA team transition to agile testing at Alcatel Lucent
QA team transition to agile testing at Alcatel LucentAgileSparks
 
Introduction to TDD
Introduction to TDDIntroduction to TDD
Introduction to TDDAhmed Misbah
 
Continuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database ObjectsContinuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database ObjectsPrabhu Ramasamy
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for youAmbientia
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanQA or the Highway
 
The state of containers for your DevOps journey
The state of containers for your DevOps journeyThe state of containers for your DevOps journey
The state of containers for your DevOps journeyAgile Montréal
 
Bringing CD to the DoD
Bringing CD to the DoDBringing CD to the DoD
Bringing CD to the DoDGene Gotimer
 
The Continuous delivery Value @ codemotion 2014
The Continuous delivery Value @ codemotion 2014The Continuous delivery Value @ codemotion 2014
The Continuous delivery Value @ codemotion 2014David Funaro
 
Agile Testing Introduction
Agile Testing IntroductionAgile Testing Introduction
Agile Testing IntroductionHai Tran Son
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013David Funaro
 
Career Paths for Software Professionals
Career Paths for Software ProfessionalsCareer Paths for Software Professionals
Career Paths for Software ProfessionalsAhmed Misbah
 
The Road to DevOps V3
The Road to DevOps V3The Road to DevOps V3
The Road to DevOps V3Ahmed Misbah
 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Ajay Danait
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentVladimir Bakhov
 
Teaching Kids Programming
Teaching Kids ProgrammingTeaching Kids Programming
Teaching Kids ProgrammingLynn Langit
 
Database continuous integration, unit test and functional test
Database continuous integration, unit test and functional testDatabase continuous integration, unit test and functional test
Database continuous integration, unit test and functional testHarry Zheng
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should knowRichard Cheng
 
Continuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database InsightsContinuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database InsightsMichael Medin
 

Tendances (20)

QA team transition to agile testing at Alcatel Lucent
QA team transition to agile testing at Alcatel LucentQA team transition to agile testing at Alcatel Lucent
QA team transition to agile testing at Alcatel Lucent
 
Introduction to TDD
Introduction to TDDIntroduction to TDD
Introduction to TDD
 
Continuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database ObjectsContinuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database Objects
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
 
The state of containers for your DevOps journey
The state of containers for your DevOps journeyThe state of containers for your DevOps journey
The state of containers for your DevOps journey
 
Bringing CD to the DoD
Bringing CD to the DoDBringing CD to the DoD
Bringing CD to the DoD
 
The Continuous delivery Value @ codemotion 2014
The Continuous delivery Value @ codemotion 2014The Continuous delivery Value @ codemotion 2014
The Continuous delivery Value @ codemotion 2014
 
Agile Testing Introduction
Agile Testing IntroductionAgile Testing Introduction
Agile Testing Introduction
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013
 
Career Paths for Software Professionals
Career Paths for Software ProfessionalsCareer Paths for Software Professionals
Career Paths for Software Professionals
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
 
The Road to DevOps V3
The Road to DevOps V3The Road to DevOps V3
The Road to DevOps V3
 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Behavior Driven Development (BDD)
Behavior Driven Development (BDD)
 
Agile Testing
Agile Testing  Agile Testing
Agile Testing
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database Development
 
Teaching Kids Programming
Teaching Kids ProgrammingTeaching Kids Programming
Teaching Kids Programming
 
Database continuous integration, unit test and functional test
Database continuous integration, unit test and functional testDatabase continuous integration, unit test and functional test
Database continuous integration, unit test and functional test
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know
 
Continuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database InsightsContinuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database Insights
 

En vedette

P pslides mt_astudyin_leadership
P pslides mt_astudyin_leadershipP pslides mt_astudyin_leadership
P pslides mt_astudyin_leadershipPamela Wyeth
 
Visma samenstel assistent
Visma samenstel assistentVisma samenstel assistent
Visma samenstel assistentAccountOne
 
Facebook: Contemos nuestras experiencias
Facebook: Contemos nuestras experienciasFacebook: Contemos nuestras experiencias
Facebook: Contemos nuestras experienciasJorge San Juan
 
Monday, march 12, 2012
Monday, march 12, 2012Monday, march 12, 2012
Monday, march 12, 2012Regina Navejar
 
Data management new
Data management newData management new
Data management newMISY
 
Robots and cars ca
Robots and cars caRobots and cars ca
Robots and cars caMISY
 

En vedette (8)

P pslides mt_astudyin_leadership
P pslides mt_astudyin_leadershipP pslides mt_astudyin_leadership
P pslides mt_astudyin_leadership
 
Visma samenstel assistent
Visma samenstel assistentVisma samenstel assistent
Visma samenstel assistent
 
Pathology of hearing loss
Pathology of hearing lossPathology of hearing loss
Pathology of hearing loss
 
Curri
CurriCurri
Curri
 
Facebook: Contemos nuestras experiencias
Facebook: Contemos nuestras experienciasFacebook: Contemos nuestras experiencias
Facebook: Contemos nuestras experiencias
 
Monday, march 12, 2012
Monday, march 12, 2012Monday, march 12, 2012
Monday, march 12, 2012
 
Data management new
Data management newData management new
Data management new
 
Robots and cars ca
Robots and cars caRobots and cars ca
Robots and cars ca
 

Similaire à Kku2011

TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)Peter Kofler
 
Agile, DevOps & Test
Agile, DevOps & TestAgile, DevOps & Test
Agile, DevOps & TestQualitest
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersSPC Adriatics
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle ManagementAmazon Web Services
 
New trends in testing automation
New trends in testing automationNew trends in testing automation
New trends in testing automationEran Kinsbrunner
 
Gartner Infrastructure and Operations Summit Berlin 2015 - DevOps Journey
Gartner Infrastructure and Operations Summit Berlin 2015 - DevOps JourneyGartner Infrastructure and Operations Summit Berlin 2015 - DevOps Journey
Gartner Infrastructure and Operations Summit Berlin 2015 - DevOps JourneyKelly Looney
 
Agile & Test Driven Development: The Ampersand Commerce Approach
Agile & Test Driven Development: The Ampersand Commerce ApproachAgile & Test Driven Development: The Ampersand Commerce Approach
Agile & Test Driven Development: The Ampersand Commerce ApproachAmpersand
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven developmentEinar Ingebrigtsen
 
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austinDev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austinMatt Tesauro
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile DeveloperBSGAfrica
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsAmazon Web Services
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev opsAgile Montréal
 
Introduction to Automated Testing
Introduction to Automated TestingIntroduction to Automated Testing
Introduction to Automated TestingLars Thorup
 
Introduction to-automated-testing
Introduction to-automated-testingIntroduction to-automated-testing
Introduction to-automated-testingBestBrains
 
Software Engineering in Startups
Software Engineering in StartupsSoftware Engineering in Startups
Software Engineering in StartupsDusan Omercevic
 
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro - Database DevOps
 
DevOps Overview in my own words
DevOps Overview in my own wordsDevOps Overview in my own words
DevOps Overview in my own wordsSUBHENDU KARMAKAR
 

Similaire à Kku2011 (20)

Kku2011
Kku2011Kku2011
Kku2011
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)
 
Agile, DevOps & Test
Agile, DevOps & TestAgile, DevOps & Test
Agile, DevOps & Test
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill Ayers
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle Management
 
New trends in testing automation
New trends in testing automationNew trends in testing automation
New trends in testing automation
 
Gartner Infrastructure and Operations Summit Berlin 2015 - DevOps Journey
Gartner Infrastructure and Operations Summit Berlin 2015 - DevOps JourneyGartner Infrastructure and Operations Summit Berlin 2015 - DevOps Journey
Gartner Infrastructure and Operations Summit Berlin 2015 - DevOps Journey
 
Agile & Test Driven Development: The Ampersand Commerce Approach
Agile & Test Driven Development: The Ampersand Commerce ApproachAgile & Test Driven Development: The Ampersand Commerce Approach
Agile & Test Driven Development: The Ampersand Commerce Approach
 
Agile
AgileAgile
Agile
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
 
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austinDev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile Developer
 
Enterprise PHP
Enterprise PHPEnterprise PHP
Enterprise PHP
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev ops
 
Introduction to Automated Testing
Introduction to Automated TestingIntroduction to Automated Testing
Introduction to Automated Testing
 
Introduction to-automated-testing
Introduction to-automated-testingIntroduction to-automated-testing
Introduction to-automated-testing
 
Software Engineering in Startups
Software Engineering in StartupsSoftware Engineering in Startups
Software Engineering in Startups
 
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
 
DevOps Overview in my own words
DevOps Overview in my own wordsDevOps Overview in my own words
DevOps Overview in my own words
 

Plus de ทวิร พานิชสมบัติ

Plus de ทวิร พานิชสมบัติ (20)

Devops maturity model
Devops maturity modelDevops maturity model
Devops maturity model
 
Crafting Culture
Crafting CultureCrafting Culture
Crafting Culture
 
Go: Programming Language for Cloud
Go: Programming Language for CloudGo: Programming Language for Cloud
Go: Programming Language for Cloud
 
LeSS
LeSSLeSS
LeSS
 
Legacy Code For Management
Legacy Code For ManagementLegacy Code For Management
Legacy Code For Management
 
Security As A Code :
Security As A Code : Security As A Code :
Security As A Code :
 
ATDD
ATDDATDD
ATDD
 
กระบวนการเชิงประจักษ์ (Empirical Process)
กระบวนการเชิงประจักษ์ (Empirical Process)กระบวนการเชิงประจักษ์ (Empirical Process)
กระบวนการเชิงประจักษ์ (Empirical Process)
 
Geeky Ademy Schedule 2nd Batch
Geeky Ademy Schedule 2nd BatchGeeky Ademy Schedule 2nd Batch
Geeky Ademy Schedule 2nd Batch
 
การทำซอฟท์แวร์ภายใน 30 วัน
การทำซอฟท์แวร์ภายใน 30 วันการทำซอฟท์แวร์ภายใน 30 วัน
การทำซอฟท์แวร์ภายใน 30 วัน
 
Geek Academy Schedule
Geek Academy ScheduleGeek Academy Schedule
Geek Academy Schedule
 
Scrum version3
Scrum version3Scrum version3
Scrum version3
 
Geeky academy
Geeky academyGeeky academy
Geeky academy
 
Agile
AgileAgile
Agile
 
Bdd bug day2013
Bdd bug day2013Bdd bug day2013
Bdd bug day2013
 
Scrum Version 3
Scrum Version 3Scrum Version 3
Scrum Version 3
 
Fixie atbarcampbangkok5
Fixie atbarcampbangkok5Fixie atbarcampbangkok5
Fixie atbarcampbangkok5
 
Scrum version2
Scrum version2Scrum version2
Scrum version2
 
Agile V2
Agile V2Agile V2
Agile V2
 
Start upandagile final
Start upandagile finalStart upandagile final
Start upandagile final
 

Dernier

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Dernier (20)

Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

Kku2011

  • 2.
  • 3.
  • 4. You can not find the best solution but you can find the optimal one.
  • 5. Agenda • Software Development in my perspective • Methodology • TDD • Tools • QnA • Little bit about @roofimon
  • 6. 26 2518 1 2 • A-F • IT Technical Architect DTAC • Architect ? • “ ”
  • 7. Software Development • • ? • “ ” • • IT ?
  • 8. Just an Example • Programmer • Project Management • Solution Architecture • System Integration • Database Administration • Testing • Security • Operation • Infrastructure
  • 9. - - English for Communication 000102 - - English for Academic Purposes (EAP II) 000103 - - English for Academic Purposes I (EAP II) 000112 - - Thai for Academic Purposrs(???
  • 10. Software Development and Operation is like grocery store
  • 11.
  • 12. How to build software like 7-11 • Work • Not over budget • In time • Easy to transition • Easy to operate and maintain
  • 13. We need • Methodology • Good Programmer • Tools
  • 15. How to survive? Methodology
  • 16. Methodology reflect … Methodology Team Individual Structure Behavior Discipline
  • 17.
  • 18. Which one is the best? Which one is the suitable for us?
  • 20. The Greatest Waterfall Requirement Analysis Design Implementation Integration Testing Maintenance
  • 22. Waterfall Discipline • Project is divided into sequential phases. • Emphasis an entire system at one time. • Tight control is maintained through the use of extensive written documentation.
  • 24. Waterfall not wrong • 90% of enterprise firm in Thailand still using waterfall model. • It’s big , really big. 100 people involve with project. • Match with their procurement process • Strong Audit process. • “Trust ??”.
  • 25. Developer Discipline • Depends on developers themselves • Mostly, make it fast. • Mostly, make it done. • Deadline ahead • Quality ummmmm QA team will cover it for somehow • Aggressive Regression Test • Customer will come when our software is “done”. • Change request, Change request, Change request
  • 26.
  • 27. What about small organization? • They need something that is really “work”. • They can spend time with your team. • So Waterfall again? • We need methodology that focus on delivering software that working.
  • 28.
  • 30. Customers Requirement Analyst Analysis Why Agile? Architect Design Labor Implementation Labor Integration Tester Testing Maintenance
  • 31. Three simple truths • 1. It is impossible to gather all the requirements at the beginning of a project. • 2. Whatever requirements you do gather are guaranteed to change. • 3. There will always be more to do than time and money will allow.
  • 33. Discipline • Customer satisfaction by rapid delivery of useful software • Welcome changing requirements, even late in development • Working software is delivered frequently (weeks rather than months) • Working software is the principal measure of progress • … • … • … • Regular adaptation to changing circumstances
  • 34. Developer Discipline • According to 3 simple truth • Agile coder will carry these four basic activities along with them – Coding – Testing – Listening – designing
  • 35.
  • 36. Anyway • Grocery Store does exist but …? • Waterfall and Agile • Waterfall still dominate the market. • Waterfall itself doesn’t encourage programmer to write good code. • We need something. • Applied TDD into development phase in Waterfall 
  • 37. We understand the story, so we Happy.
  • 39. Good Programmer = Good Software • Understandable • Testable
  • 41. The Program • a1 is a yng and gftd sftwreng attempting to hackMnfrm() of sftw company ENCOM in order to fndEvdc() that senior executive a2 stole() a1's cde and prsnt() it as his own, earning him a rapid series of promotions. a1 is blcked() by the MCP, an ai that ctrl the ENCOM mnfrm.
  • 42. The Program kevinFlynn is a young and gifted SOFTWARE_ENGINEER attempting to hack() into the mainframe of encom = SoftwareCompany(“ENCOM”) in order to findEvidence() that ENIOR_EXECUTIVE edDillinger stole(kevinFlynn) code and presented it as his own, earning him a rapid series of promotions. kevinFlynn is blocked() by the MasterControlProgram , an artificialIntelligence that controls(encom) the ENCOM mainframe.
  • 43. Understandable • Use Intention-Revealing Names • Make Meaningful Distinctions • Use Pronounceable Names • Use Searchable Names • Avoid Encodings
  • 44. Use Intention-Revealing Names //================================ int d // elapsed time in days //================================= int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays;
  • 45. Use Intention-Revealing Names public List<int[]> getThem() { List<int[]> list1 = new ArrayList<int[]>(); for (int[] x : theList) if (x[0] == 4) list1.add(x); return list1; }
  • 46. Use Intention-Revealing Names public List<Cell> getFlaggedCells() { List<Cell> flaggedCells = new ArrayList<Cell>(); for (Cell cell : gameBoard) if (cell.isFlagged()) flaggedCells.add(cell); return flaggedCells; }
  • 47. Use Searchable Names int realDaysPerIdealDay = 4; const int WORK_DAYS_PER_WEEK = 5; int sum = 0; for(int j=0; j<NUMBER_OF_TASKS; j++){ int realTaskDays = taskEstimate[j]*realDaysPerIdealDay; int realTaskWeeks = (realdays / WORK_DAYS_PER_WEEK); sum += realTaskWeeks; }
  • 48. Avoid Side Effect public class UserValidator { private Cryptographer cryptographer; public boolean checkPassword(String userName, String password) { User user = UserGateway.findByName(userName); if (user != User.NULL) { String codedPhrase = user.getPhraseEncodedByPassword(); String phrase = cryptographer.decrypt(codedPhrase, password); if ("Valid Password".equals(phrase)) { Session.initialize(); return true; } } return false; } }
  • 49. Testable • What? • We just understand our code. • Dependency?
  • 50. Test Driven Development AKA TDD – Executable Document Spec – Executable functional checking – Executable dependency checking – Executable integration test
  • 51. Normal Cycle • Read function spec • Start coding • Monkey see and monkey do • It might not effect to other functions • Waiting for defect ticket
  • 52. TDD cycle • Read function spec • (Re)Write Test • Run Test fail • Write Production Code • Run all test • Refactor • Cool 
  • 53. Demo
  • 54. Code
  • 55.
  • 56. Part II Tools • Project Management • Collaboration • Development Environment • Development Tools • Testing • Continuous Integration • Deployment • Monitoring
  • 57. Project Management and Collaboration
  • 58.
  • 59. # Flexible issue tracking system # Gantt chart and calendar # News, documents & files management # Feeds & e-mail notifications. # Per project wiki # Per project forums
  • 61. Version Control • You are not alone • Code is your asset • Choose one: • GIT, SVN, CVS
  • 62. Development Tools • Build Tool • Library dependency checking • Single Repository • Check Style • IDE
  • 63. Testing • Junit • DB Unit • Mockito • Selenium
  • 64. JUnit • JUnit is a unit testing framework • Unit test itself is not enough we need company
  • 65. DBUnit • Why do we need to test our database? • You need [multiple] databases
  • 66. Mock Object • Mock objects are simulated objects that mimic the behavior of real objects in controlled ways. • supplies non-deterministic results • has states that are difficult to create or reproduce • is slow • does not yet exist or may change behavior; • would have to include information and methods exclusively for testing purposes
  • 67. Web App Test • Selenium is a suite of tools to automate web app testing across many platforms.
  • 68. Continuous Integration • Execute all unit test in integration environment • Code coverage checking • Automatic Branch/Tag

Notes de l'éditeur

  1. ทักทายเล็กน้อย
  2. เนื่องจากเป็นการบรรยายในสถาบันการศึกษาครั้งแรกใน ชีวิต ก่อนหน้านี้จะเน้นไปทางงานไม่เป็นทางการเช่น BarCamp, OSSFest, …
  3. เนื่องจากเป็นการบรรยายในสถาบันการศึกษาครั้งแรกใน ชีวิต ก่อนหน้านี้จะเน้นไปทางงานไม่เป็นทางการเช่น BarCamp, OSSFest, …
  4. การทำงานในโลกแห่งความเป็นจริงนั้นใช้กฏ 80:20 ได้เสมอแต่ขึ้นอยู่กับตำแหน่งหน้าที่ที่เราทำ เด็กๆ บริษัทเล็กๆ 80:20 งานเทคนิคอลต่อการสื่อสารผู้ใหญ่ บริษัทใหญ่มาก 80:20 สือสาร:ต่องานเทคนิคอล เรามักจะพบอยู่เสมอว่าเราใช้เวลาไปสามสี่ชั่วโมงเพื่อ กำหนดคำว่า customer ให้ตรงกันหลีกเลี่ยงไม่ได้ว่า โลกเรา Globalize มากๆเราไม่ได้อยู่คนเดียว เราไม่สามารถทำงานคนเดียว เราไม่สามารถทำงานประเทศเดียวได้ เราต้องเกรียนอินเตอร์ เราต้องสื่อสารกับชาวโลกได้
  5. ทุกคนคิดว่าเหมือนอะไร ผมว่าเหมือนร้านขายของชำ หลายท่านคงคิดว่าเหมือนสร้างตึกแต่การสร้างตึกมันดู rigid ไปนิดมัน build to last มากไปนิดถ้าเทียบกับการสร้างซอฟท์แวร์
  6. เริ่มจากเล็กๆ ไม่มีแผนอะไรเลย อยากได้อะไรก็สุมๆๆๆๆๆๆ เข้าไป ผิดไหม? ขายของได้เหมือนกัน แต่ถ้าเจ๊ป่วย? แต่ถ้าเจ๊อยากยกร้านให้ลูก? มีตัวอย่างของ code ที่เกิดจากการคิดแบบนี้ให้ดู ว่าเมพส์ขนาดไหน หลายท่านอาจจบไปทำงานแล้วไปเจองานที่ต้อง maintain code ที่เป็นนี้ ต้องทำใจ มันมีที่มาแบบที่สอง รู้ว่าจะขายอะไร รู้แน่ๆ แต่ขายอะไรสุ่มสี่สุ่มห้าไม่ได้ ดีไหม? ถ้าเจ๊ป่วย? ถ้าเจ๊อยากยกร้านให้ลูก?สุดแต่ลูกค้าจะเลือกว่าจะเอาแบบไหน ลูกค้าให้ความสำคัฐกับการจัดการแค่ไหนการจัดการและ operate มีผลต่อธุรกิจแค่ไหน การทำ Software ไม่ใช่แค่ทำให้เสร็จตาม feature แล้วจบ มันต้องคิดต่อไปให้ครบจนถึงการ operate ด้วยดังนั้นถ้าเราต้องการสร้างซอฟท์แวร์ให้เมือน 7-11 หรือคล้ายๆ ที่ transition และ operate ได้ง่ายหน่อย
  7. เพื่อให้งานที่เราสร้างออกมาดี เราน่าจะมีวิธีคิดที่ดีเพื่อที่จะได้สร้างของที่ดี ดูแลง่ายออกไปให้ใช้งาน
  8. กระบวนการ ทีมงาน เครื่องมือที่ดีและเหมาะสมอยู่ดีๆจะออกไปเขียนโค้ด ดุ่มๆก็คงจะออกเกรียนกันไปนิด ต้องมีกรอบกันบ้าง ดังนั้นกรอบต้องมีตั้งแต่กรอบของทีม และกรอบของตัวนักพัฒนาเอง ไม่มีใครทำอะไรตามใจตัวเองได้มากนักหรอกครับในโลกแห่งความเป็นจริง ถ้าอยากทำอะไรตามใจตัวเองมากต้องเป็น สุดเขต เสลดเป็ด ผมอินดี้ ไม่เน้นขาย
  9. การสร้างงานแบบนี้เราไม่ต้องสอนกัน มันเป็นเรื่องของธรรมชาติ ถ้าเราทำอะไรไปเรื่อยๆดุ่ยๆไม่ค่อยมีแผน ผลมักจะออกมาเป็นแบบนี้เสมอ ที่ผ่านมาเมื่อต้นปีผมเพิ่งได้รับการชักชวนให้ไปร่วมแก้ปัยหาระบบที่เป็นเหมือนร้านขายของชำแบบนี้ โดยมีข้อแม้คือระบบห้ามหยุดเพราะการซื้อขายเกิดขึนตลอดเวลา 24*7 ตัวอย่างcode ของ Taradและตัวอย่าง Database Schema ของ สพฐ ถ้าได้เข้าไปทำงานที่ที่ไม่มี methodology สิ่งเดียวที่เราทำได้คือ สวดมนต์
  10. Methodology สำคัญมากๆ เนื่องจากมันเป็นจุดเริ่มต้อนของทุกอย่าง ในกระบวนพัฒนาซอฟท์แวร์ methodologyถ้าเราเลือกขึ้นมาหนึ่งตัวเราจะพบว่า methodology จะ reflect to 3 things: team, individual discipline and tools (ไม่ทั้งหมดแต่เกือบทั้งหมด) ดังนั้นวันที่เราจบออกไปทำงานเป็น รุ่นน้องที่สุดในทีมเราจะรู้ว่าเราต้องเจออะไรบ้างจาก methodology ที่บริษัทนั้นใช้ หรือ ถ้าโชคดีมากๆอาจไปเจอบริษัทที่ไม่มี methodology อะไรเลยเป็นแบบ อินดี้ ก็ขอให้โชคดีครับ ทุกอย่างมีที่มาที่ไปบางคนจบออกไปอาจจะอึดอัดกับการทำงานแบบนี้แบบนั้นแต่อยากให้เข้าใจว่าทุกอย่างมีเหตุผลของมัน ถ้าเราเข้าใจมันเราจะมีความสุข
  11. ปัจจุบันถ้าเราไปgoogleดูว่ามี Software Development Methodology กี่แบบเยอะมากๆ Prototyping, Spiral abcแต่ที่โด่งดังมหัศจรรย์ขั้นเทพที่สุดคือ Waterfall เรามาดูกันหน่อยว่าถ้าเราเลือก waterfall มันจะ reflect อะไรบ้าง ยังไง
  12. แต่บางครั้งเราไม่ได้เลือกเอง มันถูกเลือกมาแล้ว สิ่งที่เราทำได้คือเข้าใจมัน เพื่อให้เราทำงานอย่างมีความสุข หาวิธีปรับเอาเองโดยที่ไม่ violate disciplineคำถามคือ methodology ไหนได้รับความนิยมสูงสุด ตลอดกาล คลาสสิก เจอแน่ๆ
  13. Develop RFPกระบวนการรวบรวมสิ่งที่อยากได้ทั้งหมดเขียนเป็น Request For Proposal, Present Proposal โชว์ว่าทำได้ทุกอย่าง compile หมดทุกข้อเข้ากระบวนการจัดซื้อ ต่อรองราคา(เพิ่งโม้ไปเยอะว่าทำได้), Analysis ลงไปรับ requirement จากลูกค้า พบว่าโอวจอร์จ เก็บ Gap จะถอนใจได้เอกสารมาอีกกองDesign ได้เอกสารมาอีกกอง Implement เริ่มเครียด เวลาเหลือน้อยเมื่อเทียบกันสิ่งที่ต้องทำIntegration Testing โอวบั๊กเยอะมาก
  14. Develop RFPกระบวนการรวบรวมสิ่งที่อยากได้ทั้งหมดเขียนเป็น Request For Proposal, Present Proposal โชว์ว่าทำได้ทุกอย่าง compile หมดทุกข้อเข้ากระบวนการจัดซื้อ ต่อรองราคา(เพิ่งโม้ไปเยอะว่าทำได้), Analysis ลงไปรับ requirement จากลูกค้า พบว่าโอวจอร์จ เก็บ Gap จะถอนใจได้เอกสารมาอีกกองDesign ได้เอกสารมาอีกกอง Implement เริ่มเครียด เวลาเหลือน้อยเมื่อเทียบกันสิ่งที่ต้องทำIntegration Testing โอวบั๊กเยอะมาก
  15. มีหน้าที่ที่ชัดเจน เชี่ยวชาญงานที่ทำมากๆ มีการกำหนด KPI และตัววัดที่ชัดเจนได้ง่าย แต่ Hop มันจะเยอะหน่อย
  16. เอา Waterfall มากลับด้านใหม่เราจะไม่แยกทุกอย่างออกจากกันเป็นphase ของการทำงานแต่จะเป็น phase ของ features แทน ? แล้วเราเอากระบวนที่เราทำใน waterfall มา repeat ทุกๆ phase ดังนั้นเราจะเห็นว่า team ของ Agile จะไม่สามารถแบ่งเป็น role ได้ เพราะทุกๆ phase หรือ iteration นั้นจะต้องทำทุกอย่างใหม่เกือบหมดลูกค้าเลือก feature ที่ต้องการเห็นก่อน(ไม่ใช่ แผนงามๆ) Analyst-&gt;Design-&gt;Code(Test TestTest)-&gt;Test-&gt;Integration-&gt;Deployดังนั้น Software ที่ถุกสร้างภายให้ Agile Methodology จะต้องมีความยืดหยุ่นสูงมาก ทนต่อการเปลี่ยนแปลง
  17. Three simple truths ที่เราต้องทำใจยอมรับก่อนเข้าลัทธิ Agile คือ
  18. ได้ผลออกมาทั้งคู่ แต่ Waterfall จะเหนื่อยกว่านิดนึงตรงที่กระบวนการทำงานไม่เปิดโอกาสให้ user ได้เข้ามาเห็นผลงานจนกว่าจะเสร็จแล้วซึ่งบางทีเพี้ยนไปมาก แต่ agile เองก็ยังไม่เป็นที่ยอมรับขององค์กร ดังนั้น อย่ารอ เราจึงเอาส่วนที่ทำได้มาทำก่อนแต่การจะได้มาซึ่งสิ่งนั้น Programmer ต้องมีวินัยสูงมากๆ สูงยังไงมาดูหรือถ้าทำ
  19. บางคนถอดใจไม่เข้าใจ ไม่ทำงาน เซ็ง ติสต์แตก
  20. แทนที่เราจะนั่งเสียหัวกับเรื่องเอกสารเรื่อง requirementไม่นิ่ง ยิ่งเราพยายามทำให้มันนิ่งมันยิ่งดิ้น ดังนั้นเราหันกลับด้านมาทำซอฟท์แวร์ให้ maintain ได้ง่านเพื่อให้มันดิ้นได้ทัน requirement จะดีกว่าไหม7-11 จะออกมาดี ช่างต้องมี skill ที่ดีด้วย
  21. Codingสมัยใหม่อาจไม่ใช่สมการทางคณิตศาสตร์แล้ว ก่อนหน้านี้เราอาจมีข้อจำกัดเรื่อง Hardware: Memory, CPU หรือ Storage แต่ปัจจุบันเราผ่านพ้นเรื่องเหล่านั้นมาไกลแล้ว Hardware ราคาไม่แพงแล้วแต่ที่แพงกว่าคือค่าดูแลรักษา Software ดังนั้นเราควรจะเปลี่ยนมุมมองการเขียน Code เสียใหม่ให้เป็นเหมือนกับการเขียน “นิยาย”
  22. แบบนี้อ่านง่ายและเข้าใจมากกว่าไหม ครับดังนั้นการเขียน Software มันคือการเรียบเรียงความคิดและเขียน นิยาย ยาวๆออกมาหนึ่งเรื่อง ดังนั้นในโลกแห่งความเป็นจริงการสร้างSoftware คือการจำลอง Business Process ของลูกค้าลงมาให้เป็นภาษา programming มันคือการเขียนเอกสารเป็นการ represent ออกมาด้วยภาษาอื่นๆนั่นเอง ดังนั้นเป็นโปรแกรมเมอร์เองก็ต้องเล่าเรื่องให้เป็น ให้คนเข้าใจ ไปหัดเขียนจดหมายรักจีบสาวก็จะดี
  23. Comment เป็นเรื่องที่ดี แต่ comment ไม่ได้ตามตัวแปรไปทุกที่นะครับ
  24. มันทำอะไร?
  25. Meaningful Name, Pronounceable Name
  26. ประมาณ15-20 นาที
  27. พฤติกรรมของ Developer หน้าใหม่ไร้สิวคือ เขียนไปเรื่อยๆ ทับไปเรื่อยๆ แล้วก็หาที่กลับไม่เจอCode อยู่ไหน ของใครถูกใครเขียนทับผมไม่ได้ทำเมื่อวานwork นี่ไม่ใช่ code ผมทำไม copy มาไม่ครบไอ้ที่ copy มานี่ถูกแล้วหรอ
  28. ของใช้ส่วนตัวของโปรแกรมเมอร์ที่เราต้องมีไว้ใช้งานเสมอ
  29. For example, an alarm clock program which causes a bell to ring at a certain time might get the current time from the outside world. To test this, the test must wait until the alarm time to know whether it has rung the bell correctly. If a mock object is used in place of the real object, it can be programmed to provide the bell-ringing time (whether it is actually that time or not) so that the alarm clock program can be tested in isolation.
  30. เอา code ของทุกคนมาแล้ว execute รวมหมด