Tags:
Node Thumbnail

Erich Gamma หนึ่งในผู้นำทีมพัฒนา Visual Studio Code เล่าความหลัง 10 ปีว่าความสำเร็จของ VS Code ที่เราเห็นในปัจจุบัน เกิดจากความล้มเหลวของโครงการก่อนหน้านี้คือ Visual Studio Online ที่เป็น code editor บนเบราว์เซอร์

ตัวของ Gamma เองเป็นหนึ่งในผู้เขียนหนังสือ Design Patterns เคยเป็นพนักงานของ IBM ที่ดูแลโครงการ Eclipse ก่อนย้ายมาอยู่ไมโครซอฟท์ในปี 2011 เขาเล่าว่าเป้าหมายตอนแรกคือสร้าง code editor บนเว็บเบราว์เซอร์ในชื่อโค้ดเนม "Monaco" เพื่อเป็นส่วนหนึ่งของเครื่องมือชื่อ Visual Studio Online ที่เปิดตัวในปี 2013 (ปัจจุบันถูกรีแบรนด์เป็น Azure DevOps)

ภาพการเปิดตัว VS Code ต่อสาธารณะครั้งแรกในปี 2015

ไอเดียที่น่าสนใจและกลายมาเป็นจุดเด่นของ VS Code ในภายหลังคือ Monaco เลือกไม่ใช้ UI Framework ใดๆ เลย เขียนเองทั้งหมด ด้วยเหตุผลว่าเน้นประสิทธิภาพมาตั้งแต่ต้น จึงต้องการกำหนดชีวิตเอง ไม่พึ่งพา UI Framework เพราะควบคุมประสิทธิภาพโดยตรงไม่ได้

Visual Studio Online ประสบความสำเร็จในระดับหนึ่ง มีผู้ใช้ต่อเดือนจำนวนหลายพันคน แต่ตัวเลขแค่นี้ถือว่าน้อยมากสำหรับบริษัทขนาดไมโครซอฟท์ ที่ต้องการยอดผู้ใช้เยอะกว่านี้ระดับ 10 เท่าตัว

No Description

ในปี 2014 ทางทีมของ Gamma จึงปรับทิศทางโครงการใหม่ (pivot) มาเป็น Project Ticino (โค้ดเนมในตอนนั้น) เป็นเครื่องมือพัฒนาแบบข้ามแพลตฟอร์ม ทำงานบน OSX และ Linux ได้ เน้นการแก้โค้ด Node.js และ .NET เป็นสำคัญ

VS Code ถูกวางตัวอยู่ตรงกลางระหว่าง editor แบบดั้งเดิม และ IDE เต็มรูปแบบ ช่วงนั้นมีกระแส Electron เกิดขึ้นพอดี การที่ Monaco เขียนขึ้นเป็นเว็บอยู่แล้ว นำมารันบน Electron ได้ไม่ยาก

ทีมของ Gamma ใช้เวลาประมาณหนึ่งปี พัฒนา Monaco มาเป็น Ticino และเปิดตัวในงาน Build 2015 โดยโชว์เดโมการเขียน .NET บนลินุกซ์ เรียกเสียงฮือฮาอย่างมากในตอนนั้น

No Description

No Description

ก้าวถัดมาของ VS Code เกิดขึ้นในช่วงครึ่งหลังของปี 2015 มีตั้งแต่การโอเพนซอร์สบน GitHub และการรองรับส่วนขยาย (extension)

Gamma เล่าว่าเขามีประสบการณ์จาก Eclipse ที่มีส่วนขยายจำนวนมาก แต่แนวคิดของ VS Code คือ "้ต้องเซฟงานได้เสมอ" ถ้าส่วนขยายมีผลต่อโปรแกรมหลักจนแครช เสียงานที่ยังไม่ได้เซฟไป ก็ถือว่าไม่ดี ดังนั้น VS Code จึงออกแบบส่วนขยายให้รันคนละโพรเซสกับโปรแกรมหลัก และคุยกันผ่าน RPC แทน

No Description

อีกปัจจัยที่ทำให้ VS Code ประสบความสำเร็จคือโครงการ TypeScript ที่ไมโครซอฟท์เริ่มพัฒนาในช่วงไล่เลี่ยกัน (เริ่มปี 2010) ทำให้การพัฒนา VS Code ง่ายขึ้นมาก ช่วงแรก VS Code ยังสร้างด้วย JavaScript เป็นหลัก แต่พอถึงปี 2013 โค้ดทั้งหมดกลายเป็น TypeScript เรียบร้อยแล้ว

No Description

ปี 2016 เป็นจุดเริ่มต้นของฟีเจอร์สำคัญอีกอย่างคือ Language Server Protocol (LSP) ที่ช่วยให้ VS Code รองรับภาษาโปรแกรมได้เป็นจำนวนมาก ผ่านการสร้าง Language Server โดยชุมชน ไมโครซอฟท์ไม่ต้องทำเองทั้งหมด แค่ดีไซน์ตัวโพรโทคอล LSP ขึ้นมาให้เป็นมาตรฐานเท่านั้น

No Description

ทีมของ Gamma ที่เริ่มพัฒนา VS Code อยู่ที่เมืองซูริกในสวิตเซอร์แลนด์ แต่เมื่อกระแส VS Code เริ่มจุดติดในปี 2016 ไมโครซอฟท์ก็เพิ่มอีกทีมที่สำนักงานใหญ่ใน Redmond โดยผลงานแรกของทีมนี้คือการสร้าง terminal ขึ้นมาภายในตัว VS Code เอง (xterm.js)

ช่วงปี 2017-2019 เป็นความพยายามผลักดัน VS Code ให้ทำงานได้ทุกที่ เริ่มมีแนวคิดของการทำงานรีโมทเข้ามา (เขียนบนเครื่อง รันบนอีกเครื่อง) แนวคิดนี้เริ่มได้รับความนิยมเมื่อเกิดกระแส container และไมโครซอฟท์เองมีลินุกซ์ WSL รันอยู่ในวินโดวส์

No Description

No Description

ปี 2020 เป็นการนำ VS Code กลับมาสู่รากเหง้าคือเว็บอีกครั้ง เป้าหมายคือการใช้งานกับ GitHub Codespaces ที่สามารถกดแก้โค้ดได้จากหน้าเว็บ GitHub แล้วสั่งคอมไพล์ได้เลย

Gamma เล่าว่าการที่ VS Code รันบน Electron อยู่ก่อน ต่างจากเบราว์เซอร์อยู่บ้าง จึงต้องปรับโค้ดข้างใต้ใหม่ให้เป็นเวอร์ชันเดียวที่รันได้ทั้งบน Electron และเบราว์เซอร์

No Description

No Description

ปัจจุบัน VS Code มีผู้ใช้ 14 ล้านคนต่อเดือน ส่วนขยาย 28,000 ตัว, รองรับ LSP 138 ตัว และมี Debug Adaptor Protocol (DAP) สำหรับเชื่อมต่อ debugger ลักษณะเดียวกับการเปิด LSP ให้เชื่อมต่อภาษาด้วย

No Description

แนวทางการพัฒนา VS Code คือออกรุ่นใหม่ทุกเดือน ประกาศแผนต่อสาธารณะบน GitHub การออกรุ่นใหม่ทุกเดือนทำให้ทีมงานต้องขยันปรับแก้โค้ดให้ดี ช่วยลดหนี้ทางเทคนิค (technical debt) ลงได้ตลอดเวลา ฟังเสียงของผู้ใช้ และยังคงแนวคิดดั้งเดิม "โฟกัสที่ประสิทธิภาพ"

No Description

แผนการในอนาคตของ VS Code จะทำ 3 เรื่องคือ

  • testing หลังจากรองรับ debugging แล้ว ขั้นต่อไปคือรองรับการรันเทสต์ในตัว (หน้าจอตามภาพ)
  • รองรับ Jupyter Notebooks ในตัว editor ของ VS Code
  • ปรับปรุงการทำงานบน Codespaces ต่อไป

แผนการทั้งหมดสามารถดูได้จาก Roadmap บน GitHub

No Description

No Description

Gamme สรุปบทเรียนความสำเร็จของ VS Code ว่าต้องอดทน สม่ำเสมอ พร้อมที่จะปรับเปลี่ยน

No Description

ใครเป็นผู้ใช้ VS Code แนะนำให้ชมคลิปเต็ม ความยาวประมาณ 30 นาที (แต่ Gamma พูดเร็ว เข้าประเด็น ไม่ยืดเยื้อ)

ที่มา - The Register

Get latest news from Blognone

Comments

By: btoy
ContributorAndroidWindows
on 1 February 2021 - 08:43 #1197133
btoy's picture

เป็น Code Editor ที่ลงตัว ใช้แล้วชอบมากๆ ล่าสุดเพิ่งได้ใช้ฟีเจอร์ Remote ผ่าน SSH ไปเขียนโปรแกรมบน Linux เพื่่อช่วยทดสอบงานบางอย่าง โห ช่างสะดวกจริงๆ

ขอบคุณนักพัฒนาทุกๆท่านครับผม


..: เรื่อยไป

By: hisoft
ContributorWindows PhoneWindows
on 1 February 2021 - 11:48 #1197166 Reply to:1197133
hisoft's picture

ปลายปี 2019 ผมต้อง dev โค้ดชุดนึงให้ Raspberry Pi พบว่าฟีเจอร์ SSH remote นี่คือสุดยอดมากจริงๆ ครับ แถมต่อเข้าไปง่ายจนแบบ อะไรจะง่ายได้ขนาดนั้นน่ะ

By: btoy
ContributorAndroidWindows
on 1 February 2021 - 12:08 #1197174 Reply to:1197166
btoy's picture

เนอะ มันเจ๋งมากเลย โดยกับเฉพาะกับงานบางอย่างที่อาจจะแค่รัน script เล็กๆ สามารถ Dev หรือแก้ไขโค๊ดระยะไกลได้เลย


..: เรื่อยไป

By: hisoft
ContributorWindows PhoneWindows
on 1 February 2021 - 13:54 #1197195 Reply to:1197174
hisoft's picture

แก้โค้ดได้ รัน shell ได้ ก็อปไฟล์ข้ามไปมาได้ แล้วยัง debug โค้ดใส่ breakpoint ได้ด้วย ว้าวไปตลอดจนงานเสร็จเลยครับ 😊

By: เอี้ยก้วย ณ แอนฟิลด์ on 1 February 2021 - 19:44 #1197254 Reply to:1197133

อยากจะบอกว่ามี SSH ก็ใช้ได้ทุก IDE,Editor แหละ ผ่าน SSHFS

By: Be1con
ContributorWindows PhoneWindowsIn Love
on 1 February 2021 - 21:24 #1197263 Reply to:1197254
Be1con's picture

แต่ประเด็นที่เขาจะสื่อคือมัน integrated เข้ากับตัวซอฟต์แวร์ไปเลยครับ ไม่ต้องลงเพิ่ม


Coder | Designer | Thinker | Blogger

By: hisoft
ContributorWindows PhoneWindows
on 2 February 2021 - 00:05 #1197277 Reply to:1197254
hisoft's picture

ความสะดวกมันคนละเรื่องกันเลยครับ สำหรับผมน่ะนะ

By: pipat1995 on 1 February 2021 - 08:48 #1197136

แค่อ่าน ก็เหนื่อยแทนแล้วครับ

By: jaideejung007
ContributorWindows PhoneWindows
on 1 February 2021 - 09:23 #1197142
jaideejung007's picture

กำลังเพิ่มเริ่มหัดเล่นโปรแกรมนี้ บอกตามตรงว่า มีหลายอย่างที่ยังงงๆ

เช่นปรับตั้งค่าของ Extension ไม่รู้จะปรับยังไง

By: rattananen
AndroidWindows
on 1 February 2021 - 09:37 #1197147

คนใช้ตั้งแต่ version 1.0 ก็ต้องอดทนเหมือนกัน

By: illuminator
ContributorAndroidUbuntuWindows
on 1 February 2021 - 09:45 #1197148
illuminator's picture

สมัยแรกๆผมเริ่มจาก Atom ใช้ไปซักพักเริ่มไม่ไหว โคตรช้า อืดมาก
พอได้มาใช้ VSCode ทีติดใจใช้ยาว


The softest water wears down the hardest rock.

By: Architec
ContributorWindows PhoneAndroidWindows
on 1 February 2021 - 09:55 #1197151

ตอนออกใหม่ ๆ ผมยี้เลย กลับไปใช้ VS Community เหมือนเดิม พอผ่านมาห้าปีก็ดีขึ้นมาก พอเปิด WSL env ได้ก็ยิ่งชอบเข้าไปอีก

แต่อยากจะบอกว่า Arduino Extension ยังห่วยเหมือนเดิม

By: hisoft
ContributorWindows PhoneWindows
on 1 February 2021 - 11:50 #1197167 Reply to:1197151
hisoft's picture

ผมกระโจนจาก VS มาตั้งแต่ต้นเลยครับ 😅 พอดีตอนนั้นเริ่มย้ายมาทำ web app แล้ว แต่ถ้ามีงานแก้ C# ตอนนั้นก็ยังใช้ VS เหมือนเดิม

By: modernelf on 1 February 2021 - 10:03 #1197152

ผมใช้เขียนเว็บแบบก๊อกๆแก๊กๆ รู้สึกว่ามันเบาเครื่องมาก จากที่ตอนแรกใช้มาหลายตัว netbeans , eclispe , vs studio

By: deaknaew on 1 February 2021 - 10:30 #1197156

ลำบาก shortcut มาก คนละตัวกับ Visual studio

By: osmiumwo1f
ContributorWindows PhoneWindows
on 1 February 2021 - 10:55 #1197160 Reply to:1197156
By: hisoft
ContributorWindows PhoneWindows
on 1 February 2021 - 11:51 #1197169 Reply to:1197156
hisoft's picture

ตัวนี้ช่วยได้มั้ยครับ? Official Visual Studio Keymap Extension

By: deaknaew on 1 February 2021 - 13:01 #1197181 Reply to:1197169

ดีงามมม

By: hisoft
ContributorWindows PhoneWindows
on 1 February 2021 - 13:54 #1197196 Reply to:1197181
hisoft's picture

😊

By: mr_tawan
ContributoriPhoneAndroidWindows
on 1 February 2021 - 15:17 #1197214 Reply to:1197156
mr_tawan's picture

ผมพออยู่ร่วมกับมันได้

แต่อันที่แบบตอนแรกงงสุด ๆ คือ Ctrl+P ตอนนั้นกำลังจะพิมพ์โค๊ดออกมาทำอะไรสักอย่าง แล้วมันสลับไฟล์เฉยเลย ก็เลยรู้ที่หลังว่าโปรแกรมนี้สั่งพิมพ์ไม่ได้ (ต้องไปเปิด Notepad++ ขึ้นมาแทน)


  • 9tawan.net บล็อกส่วนตัวฮับ
By: 7elven
ContributoriPhoneWindows PhoneAndroid
on 1 February 2021 - 11:01 #1197162

ใช้ atom มาก่อน จากนั้นพอ 2015 vscode มาก็ย้ายมาเลย ที่ย้ายถ้าจำไม่ผิด เพราะตอนนั้นทำเว็บเป็นหลัก แล้วมันจัด format code ดีกว่า รองรับภาษาไทยดีกว่า ก็ย้ายเลย แล้วก็ชวนคนอื่นๆ มาใช้เรื่อยๆ

By: tg-thaigamer
ContributoriPhoneAndroidBlackberry
on 1 February 2021 - 13:07 #1197183
tg-thaigamer's picture

ตอนแรกก็ใช้ atom ได้ 1-2 ปี เริ่มจริงจัง vs code พอมันเปิดตัว รู้สึกมันเบาและฟรีอีกด้วย


มือใหม่!! ใหม่จริงๆนะ

By: boyphongsakorn on 1 February 2021 - 16:31 #1197207
boyphongsakorn's picture

ผมรู้สึกว้าวกับ Electron มากกว่า
เพราะมันทำอะไรได้หลายอย่างจริงๆ
ผมใช้ Electron ทำโปรแกรมฟังเพลง JOOX ในคอม
จนมีคน Fork งานไป
จนหลังจากนั้นไม่นาน JOOX ก็ทำโปรแกรมจริงๆสักที 555

By: K_AViar
Windows PhoneUbuntuWindowsIn Love
on 1 February 2021 - 21:40 #1197267

มีใครยังใช้ Sublime อยู่ไหมครับ

By: tg-thaigamer
ContributoriPhoneAndroidBlackberry
on 1 February 2021 - 22:56 #1197278 Reply to:1197267
tg-thaigamer's picture

ใช้ครับ ไว้เปิดไฟล์ด่วนๆ ไวดี


มือใหม่!! ใหม่จริงๆนะ

By: bellpocket on 2 February 2021 - 00:31 #1197284 Reply to:1197267

Like!

By: infinity
iPhoneAndroid
on 3 February 2021 - 01:39 #1197483 Reply to:1197267

ผมเกือบซื้อคอมใหม่เพราะ sublime นี่แหละครับ โปรเจคมีขนาดใหญ่(4GB) ผมแอดเข้า workspace ทำงานตามปกติ จากนั้นคอมมีอาการอืดๆ ทีแรกนึกว่าเปิดโครมแท็ปเยอะเกินไป เคลียร์ถังขยะเคลียร์พื้นที่อะไรก็แล้วก็ยังอืดเหมือนเดิม ไม่ได้เอะใจเลยว่าเป็นที่ sublime พอหาสาเหตุเจอเลยลองเปลี่ยน editor ดู ผมก็เลือก vscode ตามเทรนด์ ปรากฏว่าไม่มีปัญหาครับ ใช้ยาวๆไป แต่ถ้าเปิดแก้ไฟล์เล็กๆ จุ๊กๆจิ๊กๆ sublime ก็เบาสบายดีครับ