 Saya James, juga dari PNW. Saya dari Tanzu Labs. Saya dari Tanzu Labs. Di mana program ekstrim adalah salah satu kata-kata kita. Oh, tunggu. Saya perlu bercakap. Ya, hari ini, yang kita akan beri adalah program ekstrim. Saya tidak tahu sebabnya semua orang yang pernah dengar, mungkin anda pernah cuba sebelumnya, mungkin anda pun mencari XP. Walaupun di mana anda berada, anda akan mencari sesuatu yang berguna untuk dibuat dari hari ini. Jadi, mungkin hanya sebuah kata-kata. Berapa banyak anda pernah dengar program ekstrim sebelumnya? Ya, tidak. Bagus. Jadi, saya melihat beberapa. Pada pertanyaan tersebut, bagi anda yang pernah dengar program ekstrim sebelumnya, bagaimana anda mempunyai? Jika saya beritahu anda program ekstrim, bagaimana dengan perkara pertama yang datang ke dalam fikiran anda? Pertanyaan tersebut. Pertanyaan tersebut. Ada apa-apa lagi idea? Pertanyaan tersebut. Saya rasa itu adalah perkara tersebut yang segera datang ke dalam fikiran saya. Kita akan bercakap tentang program ekstrim, perkara yang kita sebenarnya lakukan dan mempunyai sebagai program ekstrim. Pertanyaan kita. Jadi, apa yang kita mahu bercakap tentang hari ini sedikit di bawah perjalanan bagi apa yang kita lakukan sebagai program ekstrim yang mempunyai perkara tersebut. Jadi, apa yang kita mahu bercakap tentang XP? XP adalah metodologi yang mempunyai mempunyai sebuah timur untuk membuat software dalam masa yang panjang dan cepat mengubah sebuah metodologi yang dibutuhkan oleh Ken Back ketika dia bekerja sebuah projek untuk Chrysler pada tahun 1994. Dia membuat sebuah metodologi yang dibutuhkan pada projek dan kemudian saya rasa membuat sebuah buku tentangnya yang datang pada tahun 1999. Ini adalah pilihan pertama sebuah buku. Kenapa sebuah program ekstrim? Sebuah program ekstrim kerana ia mengambil beberapa praktis yang baik yang selalu memperkenalkan praktis yang baik pada program dan mengambil mereka pada program ekstrim. Jadi, bagaimanapun, kita rasa pengajaran penting. Jadi, sebab dengan pengajaran, kita boleh menjelaskan software yang kita mempunyai dan mengambil mereka pada program ekstrim. Untuk mengambil mereka pada program ekstrim, kita berkata, mereka adalah pengajaran penting. Jadi, itu bukan hanya mengambil mereka sepanjang masa. Kita juga mengambil mereka dulu. Jadi, kita takkan mengambil pengajaran pertama sebuah program ekstrim untuk aplikasi anda sehingga kita mempunyai pengajaran. Dan kita juga melihat bahawa sebuah pengajaran yang penting. Bagaimanapun kita mengambil pengajaran? Kita mengambil pengajaran sepanjang masa. Jadi, kemudian, pengajaran mengambil pengajaran. Apabila kita mempunyai dua orang bekerja pada sebuah kode, sebuah komputer, dua jenis muka, dan kemudian, pengajaran kode akan berlaku sepanjang masa semasa pengajaran terdapat. Jadi, pengajaran pengajaran dan pengajaran pengajaran adalah dua jenis pengajaran yang paling berharga untuk pengajaran pengajaran. Sebuah pengajaran untuk XP adalah sebuah pengajaran yang paling berharga adalah pengajaran. Mereka biasanya hanya melihat itu. Kenapa kita membuat pengajaran? Kenapa kita membuat pengajaran yang sebenarnya membuat pengajaran pengajaran XP. Pengajaran yang kita mahu membuat yang akan membantu membuat pengajaran untuk mempunyai kualiti yang tinggi dan dapat bergerak sepanjang masa. Sebelum pengajaran dan pengajaran, itu adalah prinsipa seperti berubah dan berubah. Itu adalah pengajaran antara pengajaran dan pengajaran. Terima kasih. Bagus. Mungkin kita bercakap tentang pengajaran pengajaran ekstrem. Sebenarnya, saya tak mahu menunjukkan ini. Sebelum membuat pengajaran itu, saya rasa jika anda mempunyai sebuah kumpulan yang mungkin dapat membantu sebuah pengajaran untuk membuat pengajaran kualiti yang berharga, saya rasa biasanya yang anda fikirkan bahawa kita mempunyai kualiti atau kita mempunyai pengajaran yang tinggi, pengajaran yang berharga. Jadi, anda mungkin akan menyebabkan bahawa apabila anda bercakap tentang pengajaran pengajaran ekstrem, banyak orang ini tidak mempunyai pengajaran yang berharga atau tidak mempunyai pengajaran teknikal. Mereka mempunyai untuk membuat pengajaran yang berharga bersama. Jadi, ia membawa kita ke komunikasi yang pertama. Jadi, ia susah untuk dapat membuat pengajaran dan membuat pengajaran bersama tanpa komunikasi yang berharga. Komunikasi adalah bagaimana anda menemukan apa yang perlu dibina. Ia adalah bagaimana anda mempunyai pengajaran yang berharga dengan idea dan desain dan membuat mereka membuat sesuatu. Jadi, pengajaran yang pertama yang kita mempunyai adalah komunikasi. Dan jika anda kembali kepada banyak pengajaran pengajaran, anda bercakap tentang pengajaran pengajaran mungkin bekerja di tempat pengaruh fungsi, semua ini adalah perkara untuk mempromosikan dan memperkenalkan komunikasi antara orang yang berharga dalam aktiviti pengajaran. Yang kedua, kita mempunyai simpliciti. Jadi, ini mungkin yang paling teknikal, jika anda menyebabkan. Jadi, bagaimana simpliciti? Saya akan kata pertama, simpliciti tidak membuat apa yang lebih mudah. Ada perubahan antara apa yang mudah untuk dibuat dan apa yang mudah. Apabila saya katakan mudah, ia bukan solusi kompleks, ia sangat mudah untuk memahami. Dan ini biasanya dengan kerja di tangan. Jadi, mari kita kata mengenai masalah. Ada banyak solusi yang boleh saya kata. Apa yang kita mempunyai adalah solusi yang lebih mudah kerana itu sesuatu yang akan menjadi mendapat dalam langkah yang lama. Ia akan lebih mudah untuk orang lain untuk memahami nanti dan bahkan kita sendiri pada masa depan apabila kita kembali ke tempat ini, kita telah menerima. Dan itu tidak sepatutnya yang paling mudah untuk dibuat. Ia mungkin sangat mudah untuk cepat keluar dengan solusi pertama yang datang yang mungkin lebih kompleks. Ia juga boleh dibuat untuk cuba membangun solusi yang mempunyai banyak kes yang mungkin atau mungkin tidak berlaku. Dan itu menunjukkan kompleksan yang tidak sepatutnya untuk menjadi sistem kita. Jadi, vali kedua adalah untuk mencari kota kita mudah untuk kata kita. Untuk kata orang lain yang kita bekerja dengan dan hanya sejujurnya untuk memanamkan kata. Jadi, membangun kota yang baik membutuhkan kembali pada banyak keadaan. Jadi, ia boleh berlaku dalam sebuah kata juga di luar sebuah kata. Dan beberapa contoh kembali. Mungkin hari ini saya bekerja dengan James pada masa depan. Dan saya rasa mungkin saya boleh minta James kembali pada bagaimana saya bekerja bersama dia. Jadi, mungkin perkara seperti, bagaimana anda mencari kata? Itu yang saya katakan. Seperti itu. Jadi, kami boleh mengubah kembali pada kembali. Dalam kata, ia mungkin antara keadaan yang berlaku. Kita selalu bekerja dengan desainer dan pengalaman produk. Kadang-kadang, ia mungkin membantu seorang desainer untuk melihat bahawa keadaan yang tidak begitu mudah untuk memanamkan. Dan itu mungkin lebih baik. Jadi, kita selalu memberikan kembali ke seorang desainer kita. Dalam pengalaman produk yang lebih baik. Dan kemudian kembali yang kita ada adalah di luar timur dengan seorang desainer kita, atau seorang desainer kita dan seorang desainer kita. Tiada siapa yang ingin membangun software yang tidak berlaku. Biasanya, kita mahu pastikan kita membangun kembali dari seorang desainer untuk menemukan, apa yang kita membangun, bagaimana kita menunggu mereka untuk membangun. Bagaimana prosesnya untuk mereka? Jadi, itu sebuah kembali kembali di luar timur. Dan ia sangat penting untuk kita. Jika kita cuba membangun kembali kembali, kita membangun kembali kembali. Kerana ia sangat susah untuk kita membangun kembali ke depan, apa yang kita perlu membangun. Biasanya, membangun kembali kembali kembali kembali kembali, dan membangun kembali kembali kembali kembali kembali. Jadi, kembali kembali sangat penting untuk cara kita membangun dalam program ekstrem. Kemudian, kembali kembali kembali adalah lebih berlaku dengan perkara peribadi. Jadi, pertama kali kita akan mempercayai. Jadi, secara terutamanya, kita akan bekerja dengan banyak orang yang berbeza. Mungkin orang-orang dari kawasan yang berbeza, pelajar, desainer, orang-orang dari pengalaman atau pengalaman. Jadi, sebabnya, kembali kembali sangat penting adalah kerana kita mahu pastikan kita dapat bekerja dengan orang-orang yang berbeza, walaupun mereka tidak perlu fikir sama-sama seperti kita. Jadi, mempercayai orang-orang yang berbeza, bermaksud mendengar idea orang lain dan tidak hanya mengenali mereka. Maksudnya, mungkin membantu mereka membangun lebih baik dan mempercayai mereka. Itu bukan perkara yang mudah untuk dibuat, tetapi, saya rasa ia sesuatu yang penting dan pilihan untuk dapat bekerja bersama sebagai pembantu. Dan, yang terakhir kita mempunyai adalah pengalaman. Jadi, apa yang pengalaman perlu kita lakukan dengan perkembangan software? Ia boleh berubah dalam banyak situasi yang berbeza. Jadi, pasti, jika saya seorang pengalaman dengan orang lain, itu boleh mengambil pengalaman. Kadang-kadang, saya rasa, orang lain yang saya bekerja bersama dapat melihat semua pembentangan saya, pembentangan saya yang saya membuat. Itu bukan perkara yang mudah. Ia mungkin disebabkan pengalaman produk anda atau pengalaman anda yang mungkin sesuatu yang mereka inginkan pada masa yang tiba-tiba tidak dapat dibuat. Mungkin, kita bercakap dengan pengalaman kita dan pelanggan, bahawa pengalaman mudah yang anda fikir kita benar-benar perlukan, tiada siapa yang perlukan itu. Itu semua perkara yang mudah untuk dibuat. Dan, itu perlukan pengalaman. Jadi, satu perkara yang perlu dikatakan adalah bahawa semua pembentangan ini, mereka memperkenalkan dan menjelaskan setiap orang. Jadi, jika kita mempunyai pengalaman pada diri sendiri dan kita hanya membuat segala-galanya dengan tidak ada kebaikan, mungkin, menjelaskan kebaikan yang tidak kebaikan juga. Jadi, segala-galanya, mereka bekerja bersama, mereka memperkenalkan sama-sama. Kamu tidak mempunyai kebaikan tanpa berkomunikasi, tetapi mereka juga memperkenalkan sama-sama. Jadi, kita boleh bekerja efektifnya bersama sebagai pembentangan. Ya. Sekarang, kembali ke pembentangan XB. Jadi, pengalaman mudah, ini sudah dikatakan sedikit, tetapi, bagaimana kebaikan yang berbeza bersama, menjadikan bagaimana kita membuat pengalaman. Pengalaman pengalaman, apa yang terjadi, adalah bahawa kamu ada dua pembentangan dalam, saya rasa, satu komputer. Ada sebuah komputer yang dihidup dalam pengalaman di sana, di belakang pengalaman di sana. Jadi, mereka sebenarnya bekerja pada komputer yang sama, pada sebuah piu software yang menggunakan dua set api, kawasan dan pengalaman. Apa yang mereka lakukan dalam pengalaman, apa yang kita lakukan dalam pengalaman, adalah, kita akan melakukan pengalaman kovid-kovid, kita akan berbincang dengan idea-idea, architektur, keputusan, sebelum kita memiliki, sepanjang masa. Kadang-kadang, kita mahu melakukan pengalaman, seorang orang mungkin akan berkata, ok, ada beberapa idea yang saya mahu melakukan, saya akan perlu menjelaskan sedikit, saya mungkin tidak dapat menggantikan, saya akan menjelaskan sedikit, menjelaskan sedikit, saya akan menjelaskan sedikit, tapi sepanjang masa, orang perlu memikirkan seorang orang, mereka perlu tahu apa yang berlaku, apa yang berlaku, apa yang berlaku, apa yang berlaku, dan bersama, mereka bekerja pada sebuah piu software yang sama. Dan, tentu saja, itu bermaksud, komunikasi sangat penting. Jika kita berdua berdua berdua bersama, satu orang berdiri di tengah, yang lain berdiri, itu bukan pengalaman. Dan, dalam sebuah feedback, ya, jadi sebuah pelajaran, saya membuat sebuah typo, saya ada sesuatu yang betul-betul salah, orang saya harus beritahu saya. Dan kemudian, untuk orang saya beritahu saya, mereka perlu melakukannya dalam sebuah menerimu, jika mereka memutuskan tentangnya, saya mungkin tidak mendengar. Jadi, itu juga tidak membuat sebuah program yang sangat produktif, dan kemudian, dalam sebuah kuasa, tentu saja, jika saya berdiri, jika saya berdiri di tengah, saya berdiri dengan sesuatu yang lebih senarai, saya mungkin sedikit takut mengalami kesilapan saya, tetapi mereka tahu sesuatu yang saya telah lakukan sebelumnya, atau sesuatu yang, untuk sesuatu yang saya tahu, tetapi saya berdiri, kerana dia berdiri sibuk, dia berdiri sibuk, dia tidak dapat melihat itu. Jadi, untuk berdiri, saya perlu mempunyai sebuah kuasa untuk menerimu. Dan sebuah simpliciti, sebenarnya. Jadi, apabila kita mempunyai dua peri, berdiri bersama, berdiri berdiri, kita selalu, dalam pengalaman kita, kita selalu, berdiri bersama dengan desain yang lebih senarai. Kerana, kadang-kadang, dalam diri anda sendiri, anda hanya, baiklah, saya mahu mengubah sebuah pengalaman, atau sebuah implementasi, setelah itu, sebelum saya tahu, sebuah tika yang tersebut, atau sebuah kisah, sebuah kisah, saya perlu melakukan ini, tetapi saya berdiri, berdiri berdiri, sesuatu yang berdiri. Itu sangat mungkin. Dan, dan tetapi, apabila kita melakukan itu, ada masalah, seperti jika kita melakukan terlainya, kita tidak mudah, kita akan melakukannya dengan desain yang lebih senarai, yang mempunyai banyak, kemungkinan kisah yang kita tidak kisah, dalam kisah itu, kita, mencukupkan diri sendiri. Jadi, sebab sesuatu yang sangat senarai, mungkin anda boleh melakukannya dengan desain yang lebih senarai, tetapi anda melakukannya dengan banyak perkara yang lebih senarai. Dan kemudian, itu mungkin berlainya dengan lebih banyak. Jadi, itu satu, perkara yang lain adalah, jika kemungkinan hanya berlainya untuk kemungkinan kecil, tetapi saya membangkirkan, banyak lagi, kemungkinan yang kita melakukannya dengan desain yang lebih senarai, adalah kemungkinan terlainya dengan desain yang lebih senarai, kemungkinan kisah yang boleh berubah, sesuatu yang perlu, kita kira kita perlu melakukannya minggu depan, mungkin tidak akan berlainya semasa minggu depan datang. Jadi, kita selalu mahu hanya fokus pada apa yang kita sekarang perlu lakukannya, yang telah dibuat oleh pengalaman produk. Dan jika kita melakukannya lebih banyak, kemudian, kita tahu, pandemi datang, saya sangat senarai untuk membuat perusahaan produk untuk banyak perusahaan, dan jika mereka telah mengenal kemungkinan itu, mereka baru membangkir banyak perkara yang teruk, sejauh masa, dan mereka tidak membuat kemungkinan dari perjalanan, kemudian, kemungkinan yang terlalu senarai sehingga jauh atau sepanjangnya. Perusahaan kemungkinan kita, adalah kemungkinan lain. Jadi, apabila kita menulis kemungkinan, ia menerima kemungkinan kemelayanan kemungkinan yang kita membuat, jadi itu kemungkinan kemungkinan. Dari perusahaan, banyak kali, apabila anda sedikit lebih memperkenalkan perusahaan, anda akan dapat menggunakan perusahaan sebagai dokumentasi. Dari perusahaan perusahaan, anda dapat tahu bahawa, apabila kita membuat perusahaan X, Y, Z, kita dapat perusahaan A, B, C, L, B, C, dan itu membantu anda memahami apa yang aplikasi kode berlaku. Dan perusahaan ini adalah sebuah lebih baik sebuah documentasi daripada dokumentasi statik, kerana perusahaan ini, apabila mereka merasa, maksudnya, mereka perlu dibuat dengan segera. Jadi, dalam kes itu, anda selalu mempunyai perusahaan sebagai dokumentasi. Dan kemudian, dengan perusahaan, ia sebenarnya beri anda kemungkinan untuk mengambil kemungkinan, kerana kadang-kadang, saya mengambil kemungkinan kemungkinan kecil ke sebuah kode komplektur. Siapa tahu apabila saya mengambil kemungkinan? Apabila anda mempunyai perusahaan, apabila anda membuat perusahaan dari hari ini, anda sekarang mempunyai perusahaan yang sangat komprehensif, apabila saya mengambil perusahaan ini, perusahaan ini, apabila mereka mengambil kemungkinan, saya tahu aplikasi saya akan mengubah sejujurnya. Jadi, apabila saya mempunyai perusahaan baru dengan TDD, perusahaan baru yang saya mengambil, saya mengambil, apabila saya mengambil perusahaan baru yang lain, apabila mereka juga mengambil, maksud saya, semua kemungkinan yang lama masih bekerja. Ya, dan saya rasa perkara yang lain, mungkin saya akan berkongsi kemungkinan sedikit juga. Jadi, seperti tadi, kami berkongsi perusahaan itu dapat membantu kita mengambil kemungkinan yang lebih mudah. Perusahaan dan perusahaan juga berkongsi sebenarnya, kerana perusahaan perusahaan baru adalah bahawa anda akan pertama menulis perusahaan yang berlaku, anda tahu apa yang anda perlu membuat, anda menulis perusahaan itu dulu. Dan kemudian, anda sebenarnya memperlukan perusahaan untuk membuat perusahaan perusahaan, dan kemudian anda mencari, oh, saya membuat perusahaan perusahaan, tapi mungkin saya dapat memperbaiki perusahaan. Kemudian, perusahaan terakhir adalah perusahaan. Jadi, perusahaan perusahaan adalah perusahaan TDD, perusahaan TDD yang kami berkongsi, dan ini bermakna apabila kami membuat perusahaan TDD dengan perusahaan TDD, kita sepatutnya, kita sepatutnya, untuk membuat perusahaan terakhir untuk memperbaiki perusahaan terakhir, lebih daripada beberapa kali setiap hari, dan kemudian, jika sebabnya, perusahaan saya sangat sulit untuk menulis, atau perusahaan TDD, atau jika saya tidak memperbaiki perusahaan TDD, saya tidak... saya tidak... saya menulis tidak membuat perusahaan TDD, itu bermaksud sesuatu yang tidak berlaku. Jika saya memiliki perusahaan TDD, yang sangat sulit untuk menulis, sangat sulit untuk menulis, mungkin saya melakukan terlalu banyak, mungkin saya perlu membuat perusahaan terakhir untuk memperbaiki perusahaan terakhir yang lebih berlaku, dan membuat perusahaan terakhir. Ya. Bagus. Ada apa-apa lagi untuk TDD? Baiklah. Jika kita membuat perusahaan TDD daripada perusahaan TDD, kita akan mempunyai banyak perusahaan. Tapi jika anda tidak memperbaiki perusahaan TDD, anda tidak memperbaiki perusahaan TDD kerana perusahaan TDD hanya berlaku apabila anda memperbaiki perusahaan TDD dan melihat perusahaan TDD, anda akan melihat perusahaan TDD dan sebagainya. Itu adalah keadaan keadaan keadaan. Apabila kita mempunyai perusahaan TDD dan mempunyai banyak perusahaan TDD berlaku pada kode yang sama, semua orang menambah perusahaan. Apabila kita memperbaiki perusahaan TDD dan memperbaiki perusahaan TDD dan memperbaiki perusahaan TDD dan memperbaiki perusahaan TDD, kita akan mempunyai perusahaan CICD. Jika anda lihat di sini, itu adalah perusahaan KONQUORSE yang adalah perusahaan CICD yang sama dengan sebuah jenkins dan GitHub. Sehingga, untuknya, untuk memperbaiki perusahaan KONQUORSE kita juga memperbaiki perusahaan KONQUORSE yang bermakna untuk membaikkan keadaan sebagainya, ia boleh membaikkan keadaan keadaan atau membaikkan keadaan keadaan seperti yg di sekitar keadaan, prosesnya benar-benar mempunyai setiap organisasi bagaimana mereka mahu menyebabkan proses penggemaran ke produsional. Kemudian, terutamanya, kita boleh bercakap sedikit tentang pasukan fungsi tersebut. Pasukan fungsi tersebut adalah hal yang penting untuk penggemaran tersebut. Apabila kita kata pasukan fungsi tersebut, meskipun penyelidiki yang terkenal adalah penggemaran penyebab, produsional dan pengemaran produsional. Apa yang kita percaya teruk adalah bahawa mempunyai pembantu yang perlu berfungsi bersama dan percaya-caya itu perlu dikumpulkan sebab apabila penggemaran dapat menghubungi penggambaran lebih baik. So for example as engineers I'm not developing something that is super ugly that is you know I could be coding according to mock up but then somehow I read the mock up wrong and then ended up not being correct or like I get the product requirements from my product manager but then misread something and then I don't want to send the email to us because sometimes in the traditional model you could be doing outsourcing, you could have emails that goes through and you know it could be different time zones, it could be different regions when you have long communication path barriers there the features get become slower to develop and when miscommunication happens then there will be bugs in the future Alright and now we're going to talk about something that you can probably you can try if you have some time so these are some small experiments with XP we would like to challenge you to pair with another engineer on your team for a day What that means is that you will be using the same computer developing a feature together and then you can take turns writing and reviewing codes on the fly so taking turns meaning at some point you're the one that is taking control of the keyboard and mouse, you're typing most of the time continuously for a little bit and then your pair will be the one that's reviewing your code and giving you real time code review feedback and then after a bit you rotate and that's something that you can try to get a sense of what pair programming is like Next is to explore unit testing framework for your favorite programming language I would say at this point all programming languages have some kind of unit testing framework at least most of the more popular programming languages and I'll challenge you to try and think of when you work on new features on the project that you're working on Before you write that first piece of code to think about what test you want to write what are the test cases and try to use that testing framework to write those tests and lastly, I'll challenge you to exchange feedback because feedback is very important for XP really all the practices link back to feedback and so when you're working with someone we challenge you to exchange feedback with that someone that you're working with and one of the key framework that we follow will be the task framework which is a timely, actionable, specific and kind feedback so what that means is that we want to give feedback on a timely basis it's not like 2-3 months from now or half a year from now the feedback needs to be actionable it's not like I'm just complaining but ideally if I can have something that I can suggest for someone to do you need to be specific about what you're giving feedback on and of course remind you to be kind so when we give feedback, we want to help each other grow and if you don't give feedback in a way people can listen then you're just fanting and it's not really that productive cool so congrats on making it to the end in conclusion, what we do as engineers that's dictated by what we value as engineers what we value as engineering teams and what we get from XP we shared a set of values and practices these are not by any means the only things that are available in the whole world or the only practices that can be conducive to good software development but we do find that it's a good starting point and a set of values and practices that help to reinforce each other to help us get better at it so why bother understanding the XP values maybe I can pair program, maybe I can do TDD but I think what you don't really what you maybe miss if you don't understand the values behind XP is how do you try to convince someone to adopt these values or even sometimes context changes so let's say pandemic comes one day we can't pair program like we used to in the office understanding XP values helps us to modify and adapt these practices to different context that helps us to do it in a way without compromising on the values so maybe now that we are remote or working hybrid it can be harder to pair all the time so what are the other things that we can do to make sure that we are still getting the communication that we need or the feedback we need understanding the XP values helps us to make sure that we are getting what we need, out of what we do as a team so if you are interested in learning more about XP these are a couple of books maybe you can look to so I think there is one of the left extreme program may explain just now James shared showed that the first edition this is the second edition which probably you can find on Amazon like everywhere and then there is another book so the second one is more about test driven development so I think it is called a mindset shift so maybe it is something they can work through by example to get a sense of so both books that I can back we don't earn commission from selling his books but at least I don't okay cool so we try to keep some time at the end for some questions and answers I don't know do we have time for that and even if you don't have a question it will be helpful to us if you could help to scan the QR code and fill in the very quick and short feedback survey question how can you repair programming from being like an incubation dump when there are two engineers of different knowledge, domain knowledge and skill ability because I'll give you an example it's like someone was carrying on the devil's task who's never done devil's so how do you prevent just being one sided to maintain the interest so the one with the disparity will still be engaged what kind of strategy who okay so just to repeat the question let's say if a situation where there are two people of different skill level pairing together how do you make sure it's not just information dump and keep it interactive I think probably there are things that both people can do but if I'm the one in the junior position probably I want to think about what questions I can be asking to learn what I need to learn so it's not just like passive I'm waiting for someone to feed me or I just watch what they're doing so I think if you're the person in that position maybe you can think about what kind of questions you can be asking your pet to actually learn and then I think if you're the other one with more knowledge then I think I think you're probably like sometimes some patients is needed because the other person they are pairing with may not know everything that you already do probably one thing I try to do is to give the other person chances to drive so it may slow things down a bit but I think that would be more effective for the other person to learn so not just like I'm telling everything but maybe like step by step I could be like maybe breaking things down so that the other person can try one thing and then maybe I can we try to take turns we don't want it to just be one person driving all the time so maybe you could let the junior like drive on simpler things and then maybe take over and make it even more complex but still provide the kind of explanation enough for them to get the job done it depends right so I think sometimes I mean different people maybe some people will be able to figure out if you give them a few pointers other people if they are completely new to the area they may just need and guidance so I think you probably got to figure out where your pet is at also and as you work with them see what's the most effective way of working with them I think the context of this is very important so one is that is this pairing temporary arrangement because sometimes it might happen two people have different slightly different context when you pair them together you can solve a very important task we're pairing and then in that case we need to keep the party in mind we provide enough context so that the more senior person provide enough context so that the two people can work together to resolve the problem ahead and then after that we can do web boarding session and there are different ways we can try to explain the information but if it is a long term pairing that we have someone new that's switching into the team and I think the more senior person or if they're more than one senior person on the team together we can see what is the most important thing to focus on first we don't want to do like information done sometimes is required but if you do that much information for someone new they're not going to learn so you're going to need to repeat that anyway so in that case maybe we just walk through the architecture do a web boarding session and ask a hand as well we do believe pair programming is still at the end of the pair programming so then you've got to program it's not about talking hours and hours and not really doing anything and in terms of what now we tell the people to do what they do I think it depends on how people learn because sometimes people say I learn by doing please tell me what to type and then we can do it that way sometimes we do actually do more things and then where the senior person can explain but then the execution is what mostly the newer person to try so that's how they learn you do by learning but sometimes people don't learn that way that's fine too that's for the pair to design it's like feedback so if something doesn't work try something else communication talk about that's my learning style any other the question is so not all the logic and the context is always in one piece of software or a framework or a code base like in current systems there are different teams and different geographies it's not always possible to handle all the context in your code like you can write this for your code but for example even in a system you admit something how the downstream server because of your changes is also your responsibility to some extent like you cannot just admit something with breaks the other system for TDD I understand that part where it's related to the context of your code your code is documented well to your test but how about this way where some of your event or some of your data the context is actually distributed to other services so that part is never tested extreme programming and TDD that is this behavior when context is stored and distributed through multiple services I see so let me see if I understand your question so I'm going to say also for the recording so you're thinking of a situation where there is a larger scale application where there are a lot of different components micro-services or applications and then the business logic or logic in general are spread out across multiple and then in this case maybe as an application team we're doing TDD our code is tested but it's the whole system together that's providing value for the user and how do we provide quality assurance or how do we test for that they're definitely first of all there are different types of tests we can have so then even as a team that say you it could be a situation where let's say I'm doing TDD I'm actually as a team or as multiple teams I always do TDD but I do have that same situation you're in where I have one application does something else together provides the holistic value for the user in that case you could have unit test you could have integration test for your application service test for your application beyond that you could have multiple system integration test I forgot what the name is contract test maybe that's at the boundary but then you could have a complete black box test from the user perspective does certain action that requires both systems to pitching then that's kind of test you want to write them it's probably using Selenium assuming there's UI and then you just emulate what the user would do you click something, you type something and then something should be displayed and then in that way you can truly test that as a user I'm able to perform the action so that's what we can do so that's assuming it's like a team or a multiple teams that all do TDD but in the case of you're the only team that does test, the other team doesn't I think that gets a bit more complex because you can still write that black box Selenium test from the user perspective but then I don't think it should be your team's responsibility to say that thing break but it's beyond my control can you fix it organizationally speaking it might make sense to talk to the product director or the other product managers to figure out what is the best practice in that situation to address that maybe involve introducing testing parts of the application in that case you could also probably approach it from a integration test perspective because although when we talk about black box test you sort of know as a system what this system supposed to behave or what this application supposed to behave so then you can write integration test from the perspective of an API you say I'm making a post call and request and body and then I expect certain response and then that kind of test is easy to get started with then to look at what kind of unit test you can write for a code base that doesn't have any test at all I guess it's the end I probably just hand it back to Michael