Category: Developer

  • เมื่อผมกลับไปเป็นนักพัฒนาอีกครั้ง (6 วัน ที่วอดวาย)

    อาทิตย์นี้มีโอกาสได้ไปนั่งเรียน Certified Scrum Developer ของ บริษัท  Odd-e  รู้สึกตัวเองได้เรียนรู้อะไรมากทีเดียว

    หลักสูตรทั้งหมดเรียนทั้งหมดหกวัน วันนี้เป็นวันที่สาม แต่เริ่มได้อารมณ์ตกผลึกจากการทำงานร่วมกันของคอร์สนี้

    อาจงงว่า ไปเรียนไม่ใช่หรือ ทำไมไปทำงาน?

    หลักการของคอร์สนี้คือเอาผู้เรียนเป็นศูนย์กลางสลับกับการสอน ปนกันไป สิ่งที่ได้เรียนรู้อย่างมากนอกจากเนื้อหาที่ดีแล้ว คือ

    1. ความวุ่นวาย เป็นสิ่งที่ดี แต่ถ้ามีข้อตกลงที่ชัดแล้ว งานเดินได้
    2. นักพัฒนาควรจะได้รับการฝึกฝนเรื่องของการใช้  Editor ให้คล่องเพราะว่ามันประหยัดเวลาไปเยอะมาก
    3. เขียนเทสก่อนเสมอดูเหมือนเสียเวลามาก แต่มันทำให้โค๊ดกากๆของเราทำงาน และกลายเป็นโค๊ดที่ใช้งานได้ในที่สุด
    4. จำไว้เสมอว่า เวลาพัฒนาโปรแกรมให้ทำงานให้ออกมาก่อน แล้วดีไซน์ทีดีจะค่อยๆมาเอง (อย่าลืมทำเทสก่อนด้วย)
    5. จำนวนสมองที่คิดอย่างเป็นระบบ มีประโยชน์กว่าจำนวนมือที่อยู่บนคีย์บอร์ด
    6. ใช้  Mock เยอะเกินไปทำให้เราด้อยประสิทธิภาพในการเขียนเทส
    7. โค๊ดที่ดีไม่มีจริง (เพราะว่านักพัฒนามีความชอบและสไตล์ไม่เหมือนกัน  มีแต่โค๊ดที่ไม่มีกลิ่นเหม็น (smell) ไม่เหม็นยังไง จะมาเล่าให้ฟังวันหลัง
    8. การได้กินของว่าง และฟังเพลง ระหว่างเขียนโค๊ดนั้นเเพิ่ม ประสิทธิภาพมาก
    9. การทำให้  Continuous Integration  พูดได้นั้นทำให้ทำงานสนุกมากเพราะว่าเวลาใครทำโค๊ดใครพัง มันชัดมาก (ใส่เสียง South Park ให้ด่าได้ด้วย)
    10. การสลับคู่ทำงานไปเรื่อยๆ ไม่ค่อยดี จะดีกว่าถ้ามีคนที่ทำงานเดิมยืนพื้น

    มีอีกเยอะ ถ้าอยากรู้เพิ่มแนะนำให้ไปเรียน Certified Scrum Developer ของ Odd-e (ติดต่อ roof@odd-e.com) ซึ่งไม่รู้ว่าจะจัดอีกครั้งเมื่อไหร่

     

     

  • Individual interaction over process and tools …but the tools that fit, no harm

    Dell29

     

    One of the Agile Manifesto is individual interaction over process and tool. The manifesto is clearly not suggesting that processes and tools are bad but we need to know that it can’t replace our interaction with our friends.

    To me, a better processes and tools for me is it should help me working with others easier, more productive. Just like having a bigger screen (29″) that I can now pair programming with my peer easier.

    With the hardware/ software cost these days, I can buy a better editor and huge screen that help me enjoy my work as well as entertainment during my tea time.

    Have you thought about what tools and processes can give your more happiness…(it doesn’t have to be geeky tools like this)

     

  • I have QA team (others but not me)

    One of the interesting observation when working with many team in my coaching career is how people would react to my questions about quality, product testing, A/B Testing, regression test, etc.

    We have done the unit testing, and we are waiting for QA team to do it.

    QA did it better. We just can’t do it like them.

    Our server won’t be able to do it, sorry.

    It will be very bias if we do the testing so it’s better QA/ Somebody else do it.

    What! you expect the actual business flow to be tested in development environment, that’s just too expensive!

    We don’t have enough time if we do more testing. Can we have more QA to do it?

    Our developers are the expert in this field and they hardly made any mistake (from the records)

    There are plenty more creative reason why quality can’t be done at the first line of code or test first along the first line of development.

    I’m one of those people who stuck at the activities I have to do daily and ignore the value that I have to give as part of my daily activities. I just hope that people don’t repeat the same thing. How? I guess if we put our creativity on how to perform such tasks so we don’t have to spend time to defense why we need others to do quality work.

    What’s your take?

  • 3 ข้อที่จะทำให้คุณเป็นนักพัฒนาที่ใครก็อยากได้ไปทำงานด้วย

    gotw

    หลายวันก่อนมีคนถามผมว่าอะไรที่เค้าควรจะใช้เป็นแนวทางในการหานักพัฒนาที่ยอดเยี่มมเข้าสู่ทีมงาน

    เลยมีโอกาสได้นั่งคิดตอนอยู่บนเครื่องบินหลังจากกลับจากงาน อไจล์สิงคโปร์ ความยากคือเค้าไม่ต้องการนักพัฒนาธรรมดาแต่ต้องการนักพัฒนาที่ยอดเยี่ยม

    นอกเหนือจากคุณลักษณะพื้นฐานที่นักพัฒนาทุกคนควรมี โดยน้อง Weerasak

    ในฐานะที่ต้องสัมภาษณ์พี่ๆน้องๆ และเพื่อนๆที่ทำงานด้วยกัน เลยอยากแบ่งปันซักสามข้อที่จะทำให้เป็นนักพัฒนาที่ใครก็อยากให้ไปทำงานด้วย

    1. ทำงานเป็นทีมได้ ฟังดูเหมือนง่าย แต่การทำงานเป็นทีม คือการยอมรับข้อแตกต่างของทีมให้ได้ และยอมที่สละจุดยืนของตัวเองบ้างเพื่อให้เพื่อนๆได้มีโอกาสนำเสนอผลงานที่ทกคนสามารถยอมรับได้ ในโลกทุกวันนี้หมดยุคของโคดที่ดีที่สุดเพราะเหตุว่า ความเร็วของฮาร์ดแวร์ที่ทำให้โคดที่เร็วและเจ๋งที่สุด ไม่ได้เร็วไปกว่าโคดที่ทุกคนในทีมยอมรับได้ และทำงานต่อเนื่องกันอย่างคล่องแคล่ว

    2. มีความสามารถในการเขียนโคดได้หลากหลาย จากประสบการณ์ตรงนักพัฒนาที่ดีมีอาวุธที่ใครๆอาจมองไปเรื่องของความเก่งกาจ แต่หากแท้จริงในการแก้ปัญหาของนักพัฒนานั้น ต้องสามารถเขียนโคดได้หลากหลาย เพื่อตอบสนองความต้องการที่แตกต่างกัน ความหลากหลายในที่นี้คือ ควรจะเขียนรูปแบบของภาษาได้อย่างน้อยสามรูปแบบ ได้แก่

     

    • ภาษาที่ต้อง Compile ให้ความเร็วสูง และสามารถสเกลได้ง่าย เช่น C/C++, C#, Java  ภาษาเหล่านี้จะทำคุณขยายขอบเขตความสามารถของ Application แบบก้าวกระโดดได้
    • ภาษาไดนามิค/ฟังชัน หรือ Scripting เช่น  PHP, Pearl, Python, Ruby ภาษาเหล่านี้เป็นภาษาที่เขียนได้เร็ว ใช้งานได้ง่าย และทำการทดลองไอเดียได้แบบกระดิกนิ้ว และภาษาเหล่านี้แหล่ะทีจะตอบสนอนตัณหาของ business เวลาที่เค้าอยากเป็นอะไรแบบไวๆ
    • ภาษา SQL หรือ ภาษาที่ใช้ในการทำงานบนฐานข้อมูล หลายคนอาจมองว่าแค่ Query ธรรมดาใครๆก็น่าจะทำได้ แต่ในความเป็นจริงแล้วการใช้ภาษาบนฐานข้อมูลต้องมีความสามารถในเรื่องการ Tuning Query ให้ทำงานได้เร็วและ ดูแลได้ง่ายอีกด้วย
    • ภาษา ที่ใช้ในการคิด Artificial Intelligence หรือภาษาที่เราใช้ในการเขียนอัลกอริทึ่มในการหาทางเดินของตัวละครในเกม หรือ การควานหาลักษณะเหมือนของสินค้าเพื่อแนะนำสินค้าที่เกี่ยวข้อง ภาษานี้ส่วนใหญ่เรียนแล้วโยนทิ้งเพราะว่าพอทำงานจริงไม่ค่อยได้ใช้ แต่หากเราจะเป็นนักพัฒนาที่ยอดเยี่ยม ภาษาเหล่านี้จะประหยัดเวลาเรามากเวลาที่ใช้ในการพิสูจน์ ภาษาเหล่านี้เช่น Lips, Prolog
    • ภาษาเวป เช่น  HTML, JavaScript, ASP  เป็นต้น (อันนี้คงไม่ต้องยกตัวอย่างเพราะว่าชัดมาก)

    3. นักพัฒนาที่ดีต้องโยนตัวเองให้ไปมองภาพรวมได้ว่าเราทำไปแล้วลูกค้าได้ประโยชน์อะไร หรือ เป็นคนที่ตะเกียกตะกายหาเหตุผลว่าทำไมทีมเราต้องทำมันด้วย