TOUCH Technologies Back-end Internship Review

รีวิวฝึกงาน Back-end ที่บริษัท TOUCH Technologies!!

Gunn
Touch Technologies
7 min readJul 7, 2021

--

Hello everyone! Welcome to my internship review. My name is Gunn, on the day I write this article, I am going to be a third-year Computer Innovation engineering (CIE) student at King Mongkut’s Institute of Technologies Ladkrabang (KMITL).

สวัสดีครับทุกคน ยินดีต้อนรับทุกคนเข้าสู่รีวิวฝึกงานของผมนะครับ ผมชื่อกัน ขณะนี้กำลังจะขึ้นปีสามในสาขา วิศวกรรมนวัตกรรมคอมพิวเตอร์ (นานาชาติ)ที่สถาบันเทคโนโลยีพระจอมเกล้าเจ้าคุณทหารลาดกระบังครับ😓

Before the review begins, let me promote my major first😂 . The following links are the official CIE’s social-media. Do not forget to check it out!!!

ก่อนจะเริ่มรีวิวนะครับขออณุญาตขายสาขาตัวเองก่อนนะครับ5555555555 ข้างล่างนี้คือช่องทางการติดต่อและติดตามข่าวสารของภาคนะครับ ฝากติดตามด้วยนะครับ😁

Official Website Facebook Instagram

Get to know more about TOUCH Technologies

(Picture Credit TOUCH Technologies)

TOUCH Technologies is a software house company, where they develop application and services to meet clients’ requirements. Here, is also a home to IOT, Network Engineering, and Creative design.

TOUCH Technologies เป็นบริษัท software house ที่พัฒนาระบบซอฟต์แวร์ แอพลิเคชัน เพื่อตอบสนองความต้องการของลูกค้า ที่นี่ยังมีการพัฒนาในด้าน IOT Network Engineering และ Creative design อีกด้วย

Finally The REVIEW!!!!

Sorry for the long tedious introduction lol, I finally get to start the review!!! I got to intern at TOUCH during the summer break for 2 months (Jun-July 2021) together with my classmates Proud (Kittapa S) and Pond (NARAWICH KITTIJIRAYU). And yeah, we are here during the pandemic🥲

หลังจากอารัมภบทมานานในที่สุดก็ได้เริ่มต้นรีวิวซะที555555555555 เริ่มต้นที่ผมได้มาฝึกงานภาคฤดูร้อนที่ TOUCH เป็นระยะเวลาสองเดือน (มิย-กค 64) กับเพื่อนร่วมภาคอีกสองคน นั่นก็คือพราว และ ปอน นั่นเองง ซึ่งใช่แล้วพวกเรามาฝึกงานในช่วงโควิดนั่นเอง🥲

Proud on the left/ Pond on the Right

On the first day, we were introduced to TOUCH technologies. We were explained on what developers are doing here and what are their projects so far. At first I was terrified, since this is the first time I was in the actual working environment but everyone here are so nice and welcomed.

ในวันแรกของการฝึกงานที่ TOUCH เราจะได้ทำความรู้จักกับบริษัทก่อนว่าที่นี่ทำเกี่ยวกับอะไร มีแผนกอะไรบ้าง และยังได้ชมผลงานของบริษัทที่ผ่านมาอีกด้วย ในตอนแรกผมรู้สึกตื่นเต้นมากเพราะนี่เป็นครั้งแรกที่ได้เข้ามาอยู่ในบรรยากาศของการทำงานจริงๆ แต่พอมาถึงแล้วพี่ๆทุกคนน่ารัก และใจดีมากๆครับ

We got to choose which department we would like to intern in. After a discussion, we chose back-end development as our internship program. Here, at TOUCH, back-end developers are using Go language to develop the software. Fortunately, we did use Go language to do our project for the last semester. So we started our learning process pretty fast.

แล้วเราก็ได้เลือกว่าเราอยากที่จะไปฝึกงานทางด้านไหน ซึ่งหลังจากที่พวกเราสามคนได้คุยกันแล้ว พวกเราก็เลือกที่จะฝึกงานในส่วนของ Back-end Development ซึ่งที่ TOUCH จะใช้ Go language ในการพัฒนาซอฟต์แวร์ และเป็นโชคดีของพวกเราสามคนที่โปรเจคในเทอมที่แล้วนั้น พวกเราได้มีโอกาสเขียน Go language ซึ่งทำให้เราสามารถเริ่มที่จะเรียนรู้งานที่นี่ได้ไว

Developers here are working on the third floor at TOUCH building. And this is my working place for the next 2 months! We work from 9AM to 6PM on Monday-Friday.

แผนกที่เราได้มาฝึกงานอยู่ที่ชั้น3ของตึก TOUCH ซึ่งจะเป็นสถานที่ที่เราใช้ฝึกงานไปอีก2เดือน งานของเราเริ่มตั้งแต่ 9 โมงไปจนถึง 6 โมงเย็น จันทร์-ศุกร์

On the first day, we were introduced to DDD (Domain Driven Design). DDD is a system design strategy that promote system availability and partition tolerance. You can read more on this topic at DDD (Domain Driven Design)

ในวันแรกเราได้เรียนรู้เกี่ยวกับ DDD (Domain Driven Design) หรือการออกแบบระบบการทำงานที่ช่วยส่งเสริม Availabily และ Partition Tolerance เพื่อนๆสามารถอ่านเพิ่มเติมเกี่ยวกับ DDD ได้ที่ลิ้งนี้เลยครับ DDD (Domain Driven Design)

Next we had learned about Microservices and how could we implement the structure into our work. But before we get to create our application, we first learned how to use git and practiced git flow. Git facilitates our working process and significantly help reduce code conflicts.

และในวันต่อมา เราก็ได้เรียนรู้เกี่ยวกับ Microservices และเราจะนำมาใช้ในงานของเราได้ยังไง แต่ว่าก่อนที่เราจะเริ่มลงมือทำงาน เราได้เรียนรู้การใช้งาน git รวมไปถึงได้เข้าใจหลักการของ git flow ที่จะช่วยให้การทำงานของเราสะดวกมากขึ้น และลดปัญหาในการทำงานลง

First task of creating simple Microservice

We are given the basic task to make a simple Microservice. We have to create a RESTful API (gin framework) system connecting to MongoDB storing superheroes information. Also, this need a synchronous update to Elasticsearch DB in another service. So we need to also implement Message broker (Kafka) to connect 2 services together.

งานแรกที่เราได้รับมอบหมายคือการสร้าง Microservice แบบง่ายๆ โดยที่เราต้องสร้างระบบ RESTful API ขึ้นมาโดยใช้ gin framework ซึ่งเชื่อมต่อไปยัง MongoDB เพื่อเก็บข้อมูลเกี่ยวกับ Superheroes และเรายังต้องทำการเชื่อมต่อไปยัง service ที่สองที่ทำหน้าที่อัปเดตข้อมูลใน Elasticsearch DB และเนื่องจากเป็นการเชื่อมต่อกันระหว่าง service ที่เราไม่อยากให้มีรีเควสตกหล่นหรือหาย เราจึงต้องใช้ Message broker อย่าง Kafka มาเชื่อม 2 service นี้เข้าด้วยกัน

Before we begin working on system, we are introduced to docker!!

Docker เป็น Software Container ตัวหนึ่งที่ถูกพัฒนาขึ้นมาเพื่อใช้ในการ Run Service และเพื่อใช้ควบคุมการทำงานของ Container เพื่อใช้จำลองสภาพแวดล้อมขึ้นมา ให้ซอฟต์แวร์ทำงานได้โดยไม่กวนกับซอฟต์แวร์ตัวอื่น Docker มีการทำงานที่คล้ายคลึงกับ Virtual Machine

Docker is basically a software container similar to virtual machine. It help running and controlling the service. We have to learn more about docker, Docker file, and Docker compose. If you are interested to know more please check this out!!

ก่อนที่เราจะเริ่มลงมือทำตัวระบบ เราก็ได้มาเรียนรู้เกี่ยวกับ docker ก่อน Docker คือ Software container ที่มีการทำงานคล้ายๆ virtual machine เรานำ docker มาใช้เพื่อ รัน service และควบคุมการทำงาน นอกจากนี้เราต้องฝึกที่จะเขียน docker file และ docker compose อีกด้วย ถ้าเพื่อนสนใจที่จะเรียนรู้เพิ่เติมสามารถเข้าไปอ่านต่อที่นี่ได้เลยครับ เกรงว่าอธิบายทุกอย่างแล้วบทความนี้จะยาวมากๆ5555555555555

Restaurant that is closet to the TOUCH Buildings

And I would like to cut off the seriousness of the article with the food review. During the lunch we have the restaurant on the opposite side of the street. There, they serve chicken noodles along with other Thai food. If you go there late, you will not easily find the table to sit😂

ผมขอขัดการรีวิวด้านการทำงานที่เคร่งเครียดด้วยการรีวิวร้านอาหารนะครับ ในตอนเที่ยงนั้นมีร้านอาหารตามสั่ง ร้านข้าวแกงและก๋วยเตี๋ยวตั้งอยู่ตรงข้ามตึก TOUCH อีกฟากนึงของถนนครับ ร้านนี้ถ้าไปช้าก็จะไม่ค่อยมีที่นั่งครับ 😂

Okay, let’s get back to our business. After we finished praticing docker, we begin doing the given task. Along the way we have learned a lot. we get to learn nosql (MongoDB, Elasticsearch DB) and how to work with it , Domain design, API design and naming convention, Validation, HTTP statuses, Clean Architecture, Interface, Data type, Database indexing, Database naming convention and many more!

เรากลับมาเข้าเรื่องงานกันต่อดีกว่าครับ หลังจากที่เราได้ฝึกทำ docker เสร็จแล้วนั้นเราก็ได้ลงมือทำงานที่เราได้รับมอบหมายแล้วครับ ระหว่างที่เราได้ลงมือทำนั้น เราก็ได้เรียนรู้อะไรหลายอๆอย่างไปควบคู่กัน ทั้ง nosql (MongoDB, Elasticsearch DB) และการใช้งานผ่าน driver , Domain design, API design และ naming convention, Validation, HTTP statuses, Clean Architecture, Interface, Data type, Database indexing, Database naming convention และอีกมากมายเลยครับ (สมองไหลแล้วตอนนี้) 😂

That sounds like a lot of things to work on, yeah it is tired but the working environment here is fun. It help reduce the stress, staffs here are friendly, they often talk to us, encourage us, and always play jokes (LOL). But that kind of help keep me sane.

ทำงานเหนื่อย แต่บรรยากาศในการทำงานที่นี่ทำให้มีรู้สึกเหนื่อยน้อยลงมากครับ พี่ๆทุกคนคอยพูดคุยกับพวกเรา ให้กำลังใจ เล่นมุกกันโบ๊ะบ๊ะ มีเสียงหัวเราะตลอดการทำงาน ทำให้พวกผมรู้สึกเครียดน้อยลงด้วยครับ55555555555

After we done with the simple Microservice, it is time for us to receive a huge new task 🤯. That is to build a POS system along with the authentication and authorization. This POS system also capable of doing different types of sale reports.

หลังจากที่เราได้ลองทำ Microservice แบบง่ายๆแล้วนั้น เราก็ได้รับมอบหมายงานใหม่ที่ใหญ่ขึ้นกว่าเดิม! นั่นก็คือเราต้องทำระบบ POS ขึ้นมาที่สามารถทำรายงานประจำปีได้ด้วย นอกจากนั้นเรายังต้องทำในส่วนของ Authentication และ Authorization.

POS system
Authentication and Authorization system

POS system is pretty similar to the system we have previously done. So it is not that hard to do it again but the tough part of this task is oauth. Oauth is the flow of how user can grant access to the path in our system. You can try to comprehend it via this slides, and you can learn how to design your oauth system here.

ตัว POS ก็คล้ายๆกับสิ่งที่เราได้ลองทำไปแล้วครับ การทำใหม่ครั้งนี้จึงง่ายขึ้นกว่าครั้งแรก แต่สิ่งที่อยากนั่นก็คือ oauth นั่นเอง oauth เป็น flow ของการที่ user จะ grant access เข้าถึง path ต่างๆในระบบของเรา เพื่อนๆสามารถทำความเข้าใจ oauth ได้ที่สไลด์นี้เลยครับ และแนวทางการออกแบบระบบ oauth ของเราได้ที่นี่เลยครับ

And after the task was given, we were entered the same loop of work again. It is tiring but I feel like I gain a lot of knowledge and experience working here. Because intern is tiring, we get hungry very often so we order a lot of deliveries. And it is during the non-dine-in enforcement from the goverment. So, by delivering a lot of food I now gain 2 more kilograms 😂 and down here is the evident lol.

และเราก็เข้าสู่ลูปการทำงานแบบเดิมครับ เหนื่อยมากแต่รู้สึกว่าได้รับความรู้และประสบการณ์เพิ่มมากขึ้นอย่างมากเลยครับ ฝึกงานที่นี่เหนื่อยแล้วก็หิวมากแล้วก็เลยสั่งอะไรมากิน ประจวบเหมาะกับช่วงที่รัฐบาลสั่งห้ามทานอาหารที่ร้านนะครับ จนตอนนี้น้ำหนักขึ้นมาสองกิโลแล้วครับ5555555555555 นี่คือหลักฐานของสองกิโลครับ555555555

Proud’s Instagram is a bonus, pond_nrw (Pond’s Instagram)

Apart from the POS system we are also introduced to the concept of Agile. Agile is briefly the work planning that would help increase the productivity. The idea is to divide works into small tasks, understand workmates condition, and keep the work moving forward. Think of the work as our responsibilities even if it is not in our part, because if the other do not finish their works that is mean that we have not finish our work too. And we bring the concept of Agile to use in this task.

นอกเหนือจากระบบ POS ที่เราได้รับมอบหมาย เรายังได้เรียนรู้เกี่ยวกับคอนเซปต์ของ Agile ซึ่งมันคือการวางแผนการทำงานที่จะช่วยเพิ่มประสิทธิภาพของงาน โดยที่ไอเดียคือการแบ่งงานออกเป็นส่วนเล็กๆ และทำงานเป็น sprint รวมไปถึงการเข้าใจเพื่อนร่วมงาน ต้องรักษาสภาพจิตใจของทุกคนในทีมให้อยู่ในสภาวะที่ดี และสิ่งสุดท้ายคือการที่ต้องตระหนักเสมอว่างานที่ถูกแบ่งออกไปแล้วไม่ได้เป็นหน้าที่ของใครคนใดคนหนึ่ง ถ้างานที่เพื่อนทำไม่เสร็จ นั่นแปลว่างานของเราก็ไม่เสร็จด้วยเช่นกัน ซึ่งเราก็ได้นำหลักการนี้มาใช้ในการทำงานชิ้นใหม่นี้ด้วย

We are now reaching the end of the review. I tried not to be too technical but I do not want to left behind those stuff as well, so I mix them all together. I hope everyone find this review helpful and do not forget to practice yourself and always be ready for the new challenges!

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

In the end, Even though there are a lot to learn and it is hard for us to understand every concept. Fortunately, all the staffs here are super nice and do not hesitate to give us a hand. They are more than welcome to answer every questions we have in mind. We are given the space to figure things out on our own but we still led to the right track under a supervision of the lovely staffs here! I am very thankful for everyone.

สุดท้ายนี้แม้ว่าจะมีหลายสิ่งที่ต้องเรียนรู้ แต่มันก็ยากที่เราจะเข้าใจทุกอย่างด้วยตัวเอง แต่นั่นไม่เป็นปัญหาเลยเพราะว่าพี่ๆที่นี่ทุกคนยินดีที่จะช่วยเหลือเราตลอด พี่ๆจะคอยตอบคำถามที่เราสงสัย พี่จะเปิดโอกาสให้เราเรียนรู้และลองผิดลองถูกด้วยตัวเอง แต่จะยังคอยพยายาม guide เราให้เราสามารถดำเนินงานไปในทางที่ถูกต้องได้ ขอบคุณพี่ๆทุกคนมากเลยนะครับ

Touch Technologies

“ เราไม่ได้ถูกต้องที่สุด แต่เราแสดงสิ่งที่เราทำ ”

--

--