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
• Q n A
• 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
Structure
Individual
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
WhyAgile?
Requirement
Analysis
Design
Implementation
Integration
Testing
Maintenance
Customers
Analyst
Architect
Labor
Labor
Tester
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

Matt carroll - "Security patching system packages is fun" said no-one ever
Matt carroll - "Security patching system packages is fun" said no-one everMatt carroll - "Security patching system packages is fun" said no-one ever
Matt carroll - "Security patching system packages is fun" said no-one ever
DevSecCon
 
Connect Ops and Security with Flexible Web App and API Protection
Connect Ops and Security with Flexible Web App and API ProtectionConnect Ops and Security with Flexible Web App and API Protection
Connect Ops and Security with Flexible Web App and API Protection
DevOps.com
 

Tendances (20)

Increasing Quality with DevOps
Increasing Quality with DevOpsIncreasing Quality with DevOps
Increasing Quality with DevOps
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
10 Things You Might Not Know: Continuous Integration
10 Things You Might Not Know: Continuous Integration10 Things You Might Not Know: Continuous Integration
10 Things You Might Not Know: Continuous Integration
 
Matt carroll - "Security patching system packages is fun" said no-one ever
Matt carroll - "Security patching system packages is fun" said no-one everMatt carroll - "Security patching system packages is fun" said no-one ever
Matt carroll - "Security patching system packages is fun" said no-one ever
 
Continuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database ObjectsContinuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database Objects
 
Migrate to microservices
Migrate to microservicesMigrate to microservices
Migrate to microservices
 
Shifting left – embedding security into the devops pipeline by Mike d. Kail
Shifting left – embedding security into the devops pipeline by Mike d. KailShifting left – embedding security into the devops pipeline by Mike d. Kail
Shifting left – embedding security into the devops pipeline by Mike d. Kail
 
Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?
 
Connect Ops and Security with Flexible Web App and API Protection
Connect Ops and Security with Flexible Web App and API ProtectionConnect Ops and Security with Flexible Web App and API Protection
Connect Ops and Security with Flexible Web App and API Protection
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
DevSecCon London 2017: Shift happens ... by Colin Domoney
DevSecCon London 2017: Shift happens ... by Colin Domoney DevSecCon London 2017: Shift happens ... by Colin Domoney
DevSecCon London 2017: Shift happens ... by Colin Domoney
 
How to Introduce Continuous Delivery
How to Introduce Continuous DeliveryHow to Introduce Continuous Delivery
How to Introduce Continuous Delivery
 
DevSecOps - It can change your life (cycle)
DevSecOps - It can change your life (cycle)DevSecOps - It can change your life (cycle)
DevSecOps - It can change your life (cycle)
 
Building Security in Using CI
Building Security in Using CIBuilding Security in Using CI
Building Security in Using CI
 
Why source control your Oracle Database?
Why source control your Oracle Database?Why source control your Oracle Database?
Why source control your Oracle Database?
 
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
Compatibility Testing of Your Web Apps - Tips and Tricks for Debugging Locall...
 
ATAGTR2017 Static and dynamic code analysis for mobile applications - Act ear...
ATAGTR2017 Static and dynamic code analysis for mobile applications - Act ear...ATAGTR2017 Static and dynamic code analysis for mobile applications - Act ear...
ATAGTR2017 Static and dynamic code analysis for mobile applications - Act ear...
 
DevSecCon Asia 2017 Ofer Maor: AppSec DevOps automation – real world cases
DevSecCon Asia 2017 Ofer Maor: AppSec DevOps automation – real world casesDevSecCon Asia 2017 Ofer Maor: AppSec DevOps automation – real world cases
DevSecCon Asia 2017 Ofer Maor: AppSec DevOps automation – real world cases
 
DevOps Testing | Continuous Testing In DevOps | DevOps Tutorial | DevOps Trai...
DevOps Testing | Continuous Testing In DevOps | DevOps Tutorial | DevOps Trai...DevOps Testing | Continuous Testing In DevOps | DevOps Tutorial | DevOps Trai...
DevOps Testing | Continuous Testing In DevOps | DevOps Tutorial | DevOps Trai...
 
The Coming Earthquake in IIS and SQL Configuration Management
The Coming Earthquake  in IIS and SQL Configuration ManagementThe Coming Earthquake  in IIS and SQL Configuration Management
The Coming Earthquake in IIS and SQL Configuration Management
 

En vedette (8)

Agile xptdd@gosoft
Agile xptdd@gosoftAgile xptdd@gosoft
Agile xptdd@gosoft
 
Agile for sipa
Agile for sipaAgile for sipa
Agile for sipa
 
Geek Academy Schedule
Geek Academy ScheduleGeek Academy Schedule
Geek Academy Schedule
 
การทำซอฟท์แวร์ภายใน 30 วัน
การทำซอฟท์แวร์ภายใน 30 วันการทำซอฟท์แวร์ภายใน 30 วัน
การทำซอฟท์แวร์ภายใน 30 วัน
 
ATDD
ATDDATDD
ATDD
 
Geeky Ademy Schedule 2nd Batch
Geeky Ademy Schedule 2nd BatchGeeky Ademy Schedule 2nd Batch
Geeky Ademy Schedule 2nd Batch
 
กระบวนการเชิงประจักษ์ (Empirical Process)
กระบวนการเชิงประจักษ์ (Empirical Process)กระบวนการเชิงประจักษ์ (Empirical Process)
กระบวนการเชิงประจักษ์ (Empirical Process)
 
Legacy Code For Management
Legacy Code For ManagementLegacy Code For Management
Legacy Code For Management
 

Similaire à Kku2011

6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices
Dynatrace
 

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)
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle Management
 
Agile, DevOps & Test
Agile, DevOps & TestAgile, DevOps & Test
Agile, DevOps & Test
 
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 Methodology
Agile MethodologyAgile Methodology
Agile Methodology
 
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
AgileAgile
Agile
 
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
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013
 
Building environment of #UserDevOps and not only DevOps
Building environment of #UserDevOps and not only DevOpsBuilding environment of #UserDevOps and not only DevOps
Building environment of #UserDevOps and not only DevOps
 
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems SoftwareLessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
 
BrainQuest-DevOps
BrainQuest-DevOpsBrainQuest-DevOps
BrainQuest-DevOps
 
6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices
 
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
 
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
 
Prashant technical practices-tdd for xebia event
Prashant   technical practices-tdd for xebia eventPrashant   technical practices-tdd for xebia event
Prashant technical practices-tdd for xebia event
 
Critical Capabilities to Shifting Left the Right Way
Critical Capabilities to Shifting Left the Right WayCritical Capabilities to Shifting Left the Right Way
Critical Capabilities to Shifting Left the Right Way
 
In (database) automation we trust
In (database) automation we trustIn (database) automation we trust
In (database) automation we trust
 
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
 
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
 
Scrum by roofimon
Scrum by roofimonScrum by roofimon
Scrum by roofimon
 
Power of pair programming
Power of pair programmingPower of pair programming
Power of pair programming
 
Introduction to Agile for SIPA
Introduction to Agile for SIPAIntroduction to Agile for SIPA
Introduction to Agile for SIPA
 
Agile Collob Tools
Agile Collob ToolsAgile Collob Tools
Agile Collob Tools
 
Mongo db taradtechtalk2012
Mongo db taradtechtalk2012Mongo db taradtechtalk2012
Mongo db taradtechtalk2012
 
Bugday bkk2012
Bugday bkk2012Bugday bkk2012
Bugday bkk2012
 
Mongo db taradtechtalk2012
Mongo db taradtechtalk2012Mongo db taradtechtalk2012
Mongo db taradtechtalk2012
 

Dernier

Dernier (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 

Kku2011

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 รวมหมด