รู้สิ่งใดไม่สู้...รู้งี้

Preview:

Citation preview

ศุภเสฏฐ์ ชูชัยศรี

เรื่องที่ผมอยากย้อนกลับไปแนะแนวตัวเองสมัยเรียน

รู้สิ่งใดไม่สู้....รู้วิชางี้...

รู้จักกันก่อน

ศุภเสฏฐ์ ชูชัยศรี (ปิง)

ตรี-โท-เอก วิศวฯคอม จุฬา

Co-founder

• บจ. ลานเกียร์ เทคโนโลยี

• บจ. สตรีมมิ่ง

supasate.c@gmail.com

github.com/supasate

stackoverflow.com/users/491267/supasate

twitter: @kaizerwing

facebook.com/kaizerwing

วันนี้มาเล่าอะไร

• สายงานคนจบ Computer Science / Engineer

• สิ่งที่ควรรู้ในการทำงานสายพัฒนาซอฟต์แวร์

• Mindset

ขอถามก่อน

ใครอยากเรียนต่อ?

ใครอยากทำงาน?

ใครอยากเปิดบริษัท?

ใครอยากย้ายสาย?

สายงาน(บางที่อาจมองไม่เหมือนกัน)

Programmer

• เขียนโปรแกรม

• (อาจจะออกแบบไม่เป็น แต่เขียนโปรแกรมตามที่ออกแบบได้)

• (หรืออาจจะออกแบบเป็นก็ได้)

• ความหมายค่อนข้างกว้าง

Software Engineer

• ออกแบบและเขียนโปรแกรม

• วิเคราะห์หาสาเหตุของปัญหา

• แก้ปัญหาอย่างมีประสิทธิภาพ

• เลือกเทคโนโลยีที่เหมาะสม

(Web) Front-end Engineer

• เขียนฝั่ง Client

• HTML / CSS / JavaScript

• CSS Framework - Bootstrap, Foundation

• JavaScript Framework - jQuery, Angular, Backbone, Knockout, Ember, React, GWT

(Web) Back-end Engineer• เขียนฝั่ง Server

• Java / PHP / Node.js / .NET / Python / Ruby / Go

• Web Framework - Laravel, Ruby on Rails, Express

• Database - MySQL, Maria DB, MS SQL, Oracle, MongoDB, Redis, Cassandra, OrientDB

• Web Server - Apache, Nginx, IIS, Node.js

Fullstack Developer

• ทำได้ทั้ง Front-end และ Back-end

Tester / QA (Quality Assurance)

• ทดสอบระบบ

• ออกแบบ Unit Test / Functional Test / Regression Test / Acceptance Test

• เขียน script เพื่อทดสอบอัตโนมัติ

• (Test-Driven Development คนเขียน Test เป็น Software Engineer เลย)

System Administrator

• คอนฟิกและดูแลระบบ เซิร์ฟเวอร์ เครือข่ายเบื้องต้น

• ความปลอดภัยของระบบ

• เขียน script ทำงานอัตโนมัติ

• แก้ไขปัญหาให้ระบบกลับมาได้เร็วที่สุด

DevOps

https://en.wikipedia.org/wiki/DevOps

System Analyst (SA)

• วิเคราะห์และออกแบบระบบจากความต้องการทางธุรกิจ

• ออกแบบและตรวจสอบ การแปลงข้อมูลที่มีเข้าสู่ระบบ

• ออกแบบและตรวจสอบ ลำดับการทำงานของระบบ

• (อาจจะไม่ได้เขียนโปรแกรมโดยตรง)

• (แต่ควรเขียนโปรแกรมได้ดี)

System Programmer

• ออกแบบและเขียนโปรแกรมในระดับ low-level

• เช่น

• เขียน Driver

• เขียนโปรแกรมเชื่อมต่อ Network

• เขียน Firmware

https://github.com/docker/swarm/blob/master/MAINTAINERS

Embedded System Programmer

• เขียนโปรแกรมบนระบบฝังตัว / รถยนต์ / หุ่นยนต์ / IoT (Internet of Things) ฯลฯ

• รู้กลไกการทำงานของฮาร์ดแวร์

• เชื่อมต่อซอฟต์แวร์เข้ากับฮาร์ดแวร์

• ทรัพยากรจำกัด (CPU / Memory / Storage)

Drivebot.io

http://www.tesa.or.th/tesa/mod/forum/discuss.php?d=1076

Mobile App Developer (iOS / Android / Windows Phone)

• รองรับปัญหาหน้าจอหลายขนาด (Fragmentation Problem)

• เลือกพัฒนาแบบ Native หรือ Web อย่างเหมาะสม

• รู้จัก Life-Cycle ของ App ในแต่ละ OS และการจัดการ Memory

• การเรียกใช้งาน GPS / Sensors / Wi-Fi / อื่นๆ

GDE (Google Developer Expert)

Network Engineer

• ออกแบบการติดตั้งและขยายเครือข่าย

• คอนฟิก Router, Switch, Hub, Server, อุปกรณ์เครือข่ายแบบซับซ้อน

• เขียน Script เพื่อทำงานอัตโนมัติ

• งานบางส่วนอาจเหมือน Network Administrator

Network Administrator

• ติดตั้งและดูแลเครือข่าย

• เลือกใช้เครื่องมือในการติดตั้งและดูแล

• คอนฟิก Router, Switch, Hub, Server, อุปกรณ์เครือข่ายเบื้องต้น

• งานบางส่วนอาจเหมือน Network Engineer

https://en.wikipedia.org/wiki/Cisco_certifications

Database Administrator (DBA)

• ออกแบบและดูแลฐานข้อมูล

• ปรับปรุงประสิทธิภาพฐานข้อมูล

• วางแผน Backup & Restore

• ประสานกับนักพัฒนาโปรแกรมให้ใช้ข้อมูลได้มีประสิทธิภาพ

Security Specialist / Consultant

• ตรวจสอบหาช่องโหว่ของระบบ (Penetration Test)

• สร้าง PoC (Proof of Concept) ทดสอบช่องโหว่

• อุดรอยรั่ว (Hardening)

• ติดตามช่องโหว่ CVE (Common Vulnerabilities and Exposure)

UI (User Interface) / UX (User Experience) Designer

credit: http://blog.falkayn.com/

Game Developer / Designer

• ออกแบบวิธีการเล่นเกม จำลองฉาก

• เขียนโปรแกรมจำลอง Effect (มักใช้ความรู้ฟิสิกส์และคณิตศาสตร์)

• เขียน A.I. ฝั่งคอมพิวเตอร์

• เขียนระบบออนไลน์

https://www.youtube.com/watch?v=1xJOWXedK08

https://www.blognone.com/node/69237

https://www.blognone.com/node/70044

Technical Consultant

• วิเคราะห์ปัญหา

• นำเสนอทางแก้

• รู้ลึก รู้รอบ

• รู้ Business Domain

Computer Scientist / Researcher

• วิจัยพัฒนาสิ่งใหม่

• สร้างองค์ความรู้ใหม่

• ค้นคว้าหาวิธีการใหม่

คิดค้น TCP/IP Protocol“Father of the Internet”

ประดิษฐ์ World Wide Web

สร้างระบบปฏิบัติการ UNIXDennis Ritchie สร้างภาษา C

สร้างภาษา Ruby

MapReduce, BigTable, SpannerGoogle Brain, AdSense, Google Translate, etc.

Larry Page & Sergey Brin“Page Rank Algorithm”

Data Scientist

https://www.blognone.com/node/70257

มีอื่นๆอีกเพียบ

ตัวอย่างบริษัทในเมืองไทย

Big Name

Big Name (Thai)

เฉพาะทาง (การเงิน ประกันภัย)

Startup

อื่นๆ อีกมากมาย

สิ่งที่ควรรู้... ก่อนเข้าทำงานสายพัฒนาซอฟต์แวร์

รู้... จักใช้ Version Controlgit, svn

รู้...ความสวยของโค้ด

source: http://www.smashingmagazine.com/2008/11/12-principles-for-keeping-your-code-clean/

รู้...จักอ่าน Error Message

รู้...จักค้นคำตอบ

รู้...ทันเทคโนโลยี

Blognoneblognone.com

Siam HTMLsiamhtml.com

Hacker Newsnews.ycombinator.com

Toptalhttp://www.toptal.com/blog

Alltophttp://software-development.alltop.com/

รู้...จักฝึกอ่านโค้ดชาวบ้าน

github.comfork

รู้...จักเข้าร่วมงานต่างๆ

เครือข่ายโปรแกรมเมอร์ไทย และกลุ่มต่างๆCode Mania, โค้ดชิวๆ, JavaScript Day, PHP Meetup, Python Meetup, AWS Meetup, JavaBootcamp ฯลฯ

รู้...Data Structure & Algorithm

(ถ้าอยากทำงานบริษัทระดับโลก)

Google Code Jam Facebook Hacker Cup

Career Cup HackerRank

programming.in.th

รู้...ภาษาอังกฤษ

รู้....Soft Skill

ทำงานเป็นทีม

การสื่อสาร / นำเสนองาน

ต้ังคำถาม

ความเป็นผู้นำ

ความรับผิดชอบ

รู้...ตัวว่าชอบอะไรรู้...ตัวว่าไม่ชอบอะไร

เรียนต่อ ทำงาน

เปิดบริษัท ย้ายสาย

ตอบตัวเอง

“ทำไม”

“เพื่ออะไร”

Mindset

http://championshipbasketballschool.com/wp-content/uploads/2013/09/mindset-animation.png

คุยกันได้SUPASATE CHOOCHAISRI (Ping)

supasate.c@gmail.com

github.com/supasate

stackoverflow.com/users/491267/supasate

twitter: @kaizerwing

facebook.com/kaizerwing

จบแล้วคำถาม?