Thứ Hai, 6 tháng 5, 2013

Khoa học máy tính

Ngành khoa học máy tính đào tạo kỹ sư ngành khoa học máy tính nắm vững kiến thức cơ bản và chuyên môn sâu về khoa học máy tính, trong đó chú ý đến các lĩnh vực tiên tiến về CNTT như: các hệ thống điều khiển thông minh, các hệ thống đa truyền thông, các hệ thống khai thác xử lý tri thức, xử lý ngôn ngữ tự nhiên...

Lấy ví dụ về công việc của những làm trong ngành khoa học máy tính:
- Thuật toán để google có thể đưa ra kết quả tìm kiếm trên hàng tỉ dữ liệu, chỉ trong xấp xỉ 0.3s
- Điều khiển robot hoạt động
- Hệ thống trả lời khách hàng tự động
- Hệ thống nhận diện người qua vân tay, mắt, hoặc giọng nói,...
- ...

Để theo ngành này, bạn cần
- toán
- vật lý (đ.v những hệ thống liên quan đến phần cứng).

Ngành này hợp với bạn nào thích theo nghiên cứu và giảng dạy. Tuy nhiên, kĩ sư ngành khoa học máy tính cũng làm việc rất nhiều trong các công ty ở các phòng nghiên cứu, hoặc làm các công việc liên quan như lập trình, thiết kế phần mềm, robot, v.v...

Thứ Hai, 8 tháng 4, 2013

Một công ty truyền thông trẻ ở Việt Nam

Một công ty truyền thông trẻ ở Việt Nam

Hôm nay ngồi nói chuyện với một bạn tên Hân, đang là đồng sáng lập của một công ty truyền thông, một công ty rất trẻ - mới thành lập được chưa đầy một năm. Rio, tên của công ty, chuyên cung cấp dịch vụ truyền thông cho các đối tác. Đây là trang facebook, có thể hiểu qua về một công ty truyền thông, họ làm những gì: http://www.facebook.com/Riocreative.vn/info

Sau khi đọc trang facebook của công ty Rio, bạn có thể hình dung dịch vụ truyền thông rồi nhỉ. Nếu tìm hiểu kĩ hơn, trên trang facebook này còn chứa khá nhiều những bài viết liên quan đến truyền thông và quảng cáo nói chung.

Truyền thông - quảng cáo thực ra là một công cụ cực kì lợi hại trong chiến lược marketing. Như đã thấy ở VN, sản phẩm nước rửa chén Sunlight (Unilever) đã đánh bại Mỹ Hảo ngay trên thị trường Việt Nam, nhờ có chiến lược quảng cáo tốt cho dòng sản phẩm "KHÔNG HẠI DA TAY". Bạn cũng từng thấy những clip quảng cáo rất ý nghĩa của Omo, Cocacola. Đó chính là truyền thông.

Dưới đây là một số thành viên và công việc của họ trong công ty quảng cáo của bạn mình nhé:

Các thành viên cần có trong công ty
1. Thiết kế số: rất cần. Họ làm những công việc liên quan đến thiết kế số, ví dụ như: thiết kế tờ rơi, tranh quảng cáo, poster, banner cho trang web...
Một công việc mang tính sáng tạo cao, đòi hỏi khả năng mỹ thuật nữa.

2. Thiết kế nội dung:
Công việc của họ sẽ là viết nội dung quảng cáo, nội dung cho trang web. Hóa ra nội dung trên các trang web quảng cáo về công ty nào đó, lại thường do những người bên truyền thông, quảng cáo viết, chứ không hẳn phải là ai đó trong công ty.
Đây cũng là một công việc đòi hỏi tính sáng tạo. Nhiều khi chỉ là nghĩ là thông điệp nào đó đi cùng sản phẩm thôi, cũng cần sự độc đáo, ý tưởng lạ lạ một tí mới thu hút.

3. Liên hệ viên
Tên này là do mình tự nghĩ ra nhé. Đây là người sẽ liên hệ đăng quảng cáo trên truyền hình, đài, báo,... túm lại là các phương tiện thông tin truyền thông, để có thể quảng cáo rộng rãi thương hiệu của khách hàng.

4. Lập trình web
Thường thì họ thuê người làm web ở bên ngoài. Nếu công ty ở quy mô lớn hơn, thì có thể có người chuyên lập trình web, chứ ko thuê bên ngoài làm. Không chỉ tạo ra trang web theo yêu cầu của khách hàng, họ thường quản trị và bảo trì trang web cho khách hàng luôn.

5. Chụp ảnh
Cũng ko biết chụp ảnh để làm gì nữa, có thể là chụp ảnh sản phẩm :) Nhưng dù sao thì các bạn cũng biết chụp ảnh thì sẽ làm gì rồi đúng ko? Chỉ cần đồ nghề là máy ảnh, thêm con mắt nghệ thuật nữa là bạn có thể có được những bức ảnh đẹp lung linh rồi. Những bức ảnh đấy sẽ dùng làm hình ảnh quảng bá thương hiệu đấy. Cũng oách chứ nhỉ ;)

Thứ Bảy, 30 tháng 3, 2013

Ngành Công nghệ phần mềm (Software Engineering)

Đây là ngành mình theo học tại đai học, nên muốn chia sẻ đầu tiên với các bạn. Mình học ở đại học FPT - nên cũng có nhiều cái bị ảnh hưởng dẫn đến góc nhìn bị thu hẹp chỉ ở FPT Software. Hơn nữa, mình cũng mới ra trường, chưa hiểu hết được chân tơ kẽ tóc về ngành. Cho nên nếu có gì không đúng, hoặc bạn thấy cần bổ sung, đừng ngần ngại comment.

Công nghệ phần mềm (SE) là gì?
SE là một ngành kĩ thuật trong đó người ta áp dụng các phương pháp, qui trình kĩ thuật để tạo ra phần mềm hoặc bảo trì phần mềm (bảo trì tức là nâng cấp, sửa chữa) - bao gồm toàn bộ các công việc liên quan đến vòng đời của một phần mềm.
Thế phần mềm là gì? Phần mềm (software) là những ứng dụng, hệ thống chạy trên máy tính, điện thoại, máy in, máy photo... (nói chung là chạy trên các thiết bị điện tử). Ví dụ Microsoft Word (để soạn thảo văn bản), Viber để chat chit trên iPhone, các trang website, nhiều lắm ;)
Tại sao phải có ngành này? 
- Thông thường, một sản phẩm phần mềm có thể được viết ra bởi một hoặc nhiều người. Nếu sản phẩm "nhỏ", một người có thể viết tốt. Nếu sản phẩm "lớn" thì một người vẫn có thể làm được, nhưng sẽ mất rất nhiều thời gian. Vậy cần nhiều người để cùng làm. Khi nhiều người cùng làm thì cần phải có cơ chế để mọi người làm việc ăn khớp với nhau. Cơ chế này là một phần cơ bản của ngành SE.
- Một sản phẩm tốt là sản phẩm đáp ứng tốt nhu cầu của người dùng. Vậy việc một phần mềm như thế nào là tốt? Đấy cũng là công việc của SE: làm phần mềm đáp ứng nhu cầu người dùng - đấy cũng là bước đầu tiên trong qui trình làm phần mềm.
- Một lí do khá vui: Các sản phẩm phần cứng (thiết bị điện tử) ngày càng xuất hiện nhiều. Thế nên việc làm phần mềm là một thị trường lớn để người ta nhảy vào. Có cầu thì có cung mà.

Có những nghề gì trong SE

1. Lập trình viên (thợ viết phần mềm ^^ - developper / programmer/ nôm na có thể gọi là coder):
Sao lại gọi là viết phần mềm? Vì thực ra cũng giống như soạn thảo văn bản ấy - ở đây là soạn thảo ra phần mềm. Bạn học cấu trúc câu có chủ ngữ, vị ngữ, bổ ngữ và cần sắp xếp nó hợp lí, đúng không? Để lập trình (viết) phần mềm thì bạn cần học ngôn ngữ lập trình. Nó là một dạng ngôn ngữ logic, được định nghĩa sẵn. Pascal là một ngôn ngữ lập trình mà học sinh nào cũng biết, nhưng người ta thường dùng những ngôn ngữ lập trình cao hơn (có ngữ pháp gần với ngôn ngữ tự nhiên - ngôn ngữ tự nhiên ở đây ám chỉ tiếng anh) trong SE.
Ở VN: số lượng các coder khá đông. và họ thường phải kiêm nhiệm luôn cả các công việc bên dưới nữa. Ở VN mình, qui trình cũng ko rõ ràng, nên thường một người phải làm từ A-Z các phần của mình luôn. Gọi chung là coder.
Nếu bạn yêu tư duy logic (làm thử các dạng toán logic để biết mình có khả năng và có thích tư duy logic) thì hãy chọn nó.

2. Kiểm thử phần mềm (tester)
Thông thường, những sản phẩm phần mềm đều có lỗi. Thế nào là lỗi? Ví dụ như: hiện thị sai font chữ, đang chạy thì chương trình bị tắt, thao tác nhiều thì máy tính bị treo, v.v... Người tester là người kiểm tra chất lượng phần mềm để phát hiện ra lỗi. Để phát hiện lỗi, thì người tester phải chạy chương trình phần mềm, thao tác với nó trong rất nhiều trường hợp khác nhau. Thậm chí có những trường hợp như: đang chạy chương trình, rút dây nguồn máy tính, rồi sau đó khởi động lại, kiểm tra xem dữ liệu của người dùng có bị mất do sự cố mất điện hay không.
Thường với hệ thống lớn, các trường hợp test rất nhiều. Tester phải tận dụng các công cụ, hoặc tạo ra các công cụ test (trong trường hợp con người thao tác bằng tay thì mất rất nhiều thời gian và công sức). Ví dụ như công cụ test để tạo ra lượng truy cập rất lớn vào một máy chủ để xem máy chủ có xử lí tốt trường hợp đó hay không.
Ở VN, công việc của tester thường do coder đảm nhận luôn. Nếu có tester chuyên biệt, thì ví dụ như ở FPT Software, mình thấy phần lớn tester kiểm tra các trường hợp test liên quan đến giao diện bên ngoài, ít khi liên quan đến logic bên trong.
Nghề này yêu cầu tính cẩn thận, tỉ mỉ, tư duy logic cũng phải tốt.

3. Thiết kế hệ thống (system designer)
Giống như xây nhà, hệ thống phần mềm cũng cần phải có thiết kế. Nó là một căn nhà có cấu trúc. Vì vậy, trước khi viết phần mềm, người ta thiết kế cái khung cho nó. Sau khi thiết kế xong khung to nhất, thì lại đi vào từng phần nhỏ, thiết kế khung cho từng phần nhỏ. Cứ như vậy cho đến khi nào  coder có khả năng nhìn vào đó mà viết được, thì người ta giao bản thiết kế cho coder. Mỗi coder làm 1 phần nhỏ đã được thiết kế đó (coder thực ra cũng như thợ xây căn nhà, nhưng là thợ xây ngồi văn phòng).
Trong quá trình thiết kế, nó cũng có nhiều mẫu khung, có khi người ta chọn 1 cái nào đấy, hoặc kết hợp 1 vài mẫu để tạo ra khung.
Ở VN thì cái này thường thiết kế là do coder kiêm nhiệm luôn. Cho nên chất lượng thường tệ :)) Viết xong, chỉ muốn đập đi, viết lại từ đầu =)) Các bác làm lâu năm trong nghề thì giỏi hơn, mình chưa ở mức đó nên ko biết các bác ý viết xong, có muốn đập đi không.

4. Quản lý dự án (project manager - PM)
Công việc của một PM thường là (cũng là qui trình nói chung của một dự án SE):
- khi có yêu cầu khái quát (khá chung chung): phải tính toán và đưa ra con số làm cái này mất bao nhiêu nhân lực - cái này gọi là estimate cost.
- Nếu cost (chi phí) khả thi => tiến đến tìm hiểu kĩ hơn yêu cầu sản phẩm từ khách hàng, từ người dùng - sẽ đưa ra một bản mô tả về phần mềm sẽ có những chức năng gì.
- Lập đội dự án, sẽ gồm bao nhiêu người, làm trong thời gian bao lâu, phân công công việc
- Lập kế hoạch làm dự án, sẽ phải quản lý các vấn đề liên quan đến nhân lực, nhiệm vụ của từng người trong từng giai đoạn, thời gian hoàn thành, quản lý rủi ro (người nghỉ, ốm, chậm, khách hàng thay đổi yêu cầu,...)
- Tiến hành dự án: đội dự án sẽ thực hiện nhiệm vụ của mình - PM sẽ luôn quản lý để đội dự án hoạt động hiệu quả, năng suất cao, ko bị chậm, chất lượng sản phẩm tốt. Tuy nhiên, chả có mấy dự án phần mềm nào mà ko bị chậm so với kế hoạch ban đầu ;)) Và phần mềm thì bao giờ cũng có lỗi.
- Sau khi sản phẩm hoàn thành, thì bàn giao cho khách hàng
- Trong quá trình người dùng sử dụng sản phẩm, sản phẩm thường vẫn được phát triển tiếp, hoặc được sửa lỗi để chạy tốt hơn.

5. Các nghề liên quan
Trong quá trình làm phần mềm không thể không kể đến:
- GUI Designer (người thiết kế giao diện cho sản phẩm): yêu cầu có khả năng mỹ thuật, hiểu tâm lý người dùng, yêu thích các tool chỉnh sửa ảnh (cái này mình ko rõ lắm, nhưng họ dùng một số công cụ chuyên biệt nào đó như photoshop) tạo ra sản phẩm là các phần nhỏ trong giao diện người dùng. Coder sẽ có trách nhiệm đưa nó vào trong chương trình. Với người thiết kế giao diện cho website: họ cũng phải học ngôn ngữ lập trình riêng - như css, html, v.v...
- Các nhà khoa học hoặc những người nghiên cứu Computer Science: Cái này sẽ nói đến kĩ hơn khi nói về ngành Computer Science. Nêu 1 ví dụ để bạn dễ hình dung: google search engine có thể search ra kết quả trong vòng ~0.3s. Để engine làm việc nhanh như vậy, thì cần có thuật toán search engine bên dưới chạy thật khủng. Đó là công việc của những người làm Computer Science.

SE ở Việt Nam
Hiện nay, ngành này khá phát triển ở Việt Nam, đi theo con đường làm outsourcing (dịch nôm na là gia công phần mềm) của Ấn Độ và Trung Quốc. Công ty lớn nhất ở VN hiện nay làm outsourcing là Fpt Software, thuộc tập đoàn FPT: nhận làm thuê cho các dự án từ khách hàng nước ngoài. Mình đã làm ở đây một thời gian, thấy là: Fsoft có áp dụng qui trình làm phần mềm, nhưng nhiều cái rườm rà, chưa thực sự có hiệu quả.
Ngoài ra, có nhiều các công ty khác nữa làm ở phần mềm ở VN, chủ yếu là phát triển game, như VNG, Tinh vân, VTC... Hoặc cũng có nhiều công ty vốn nước ngoài, có chi nhánh tại VN, chủ yếu của Hàn, Nhật như Panasonic, Samsung,.. hoặc của Mỹ, Singapore cũng có nhưng ít hơn. Ngoài ra thì có vô số các công ty nhỏ khác làm outsourcing trong nước, hoặc tự làm sản phẩm riêng.

Mở đầu - hướng nghiệp là việc rất quan trọng

Mình có đi dạy thêm cho một em học sinh hiện đang học lớp 10. Nhưng lúc nào nó cũng băn khoăn hỏi mình là em nên làm nghề gì sau này, em nên thi trường đại học nào, vân vân. Những câu hỏi như thế luôn khiến mình thấy khó trả lời. Khó hơn rất nhiều so với việc chỉ cho em ý bài toán đúng hay sai. Lí do mình cảm thấy đau đáu vấn đề này thì chính bởi vì việc hướng nghiệp cho em là việc rất quan trọng, và quan trọng hơn rất nhiều mấy bài toán cũ rích kia.

Trong khi cô bé không hình dung được mình thích cái gì, mình nên học cái gì, thì gia đình, bao gồm bố mẹ, ông bà, với hàng đống kinh nghiệm, hàng đống mối quan hệ, bắt đầu hướng em đến những ngành bởi vì sau này kiếm tiền nhiều, hoặc công việc ổn định, dễ xin việc, và đủ các thể loại lí do kiểu như vậy. Thay vì giúp em tìm đam mê hay khẳng định tài năng của em ở một lĩnh vực nào đó, thì dìm em xuống hố sâu tiền bạc, danh vọng, theo đuổi theo trào lưu của xã hội.

Thật đáng buồn: đây là tình trạng chung của rất nhiều học sinh hiện nay. Bị lạc giữa một đống áp lực học tập mà chả biết sau này sẽ dùng làm gì. Rất ít em say mê học tập, điều đó chứng tỏ phương pháp giáo dục có vấn đề. Chúng cắm đầu vào các lớp học chính, học thêm và bị bỏ quên, bị gạt đi những đam mê, những tiềm năng thực sự trong con người. Người lớn đang mắc một cái tội quá to: Dạy trẻ con tồn tại hơn là dạy trẻ con sống. Thế nên mình rất muốn giúp các em thêm thông tin về ngành nghề sau này, để có thể chọn đúng con đường mà mình nên đi.

Mình không đủ kiến thức về tâm lý, không đủ kiến thức về tất cả các ngành nghề, nên không thể có đủ lời khuyên cho bất cứ em học sinh nào là em nên học ngành gì. Thay vì đấy, mình muốn dành một chút thời gian tổng hợp lại về các ngành nghề ở Việt Nam (hoặc trên thế giới).

Trước đây có biết đến bộ sách "Nhất nghệ tinh", nhưng không thấy hữu ích cho bản thân mình lắm - không biết các em học sinh thấy thế nào. Mình có dùng google để search nhưng quả thực là phần lớn đều ko gần gũi với học sinh lắm. Đọc các thuật ngữ của ngành trong đấy là thấy quay cuồng, chả hiểu cái gì rồi. Và người ta cũng ko cất công làm hướng nghiệp cho học sinh đến nơi đến chốn, các website để quảng cáo, PR là chủ yếu.

Mình muốn thông tin chia sẻ về ngành nghề là từ chính những người đang làm trong ngành đấy, gần gũi, thân thiết với học sinh hơn là những cuốn sách, những bài viết học thuật. Bắt đầu sẽ là ngành của mình: Công nghệ phần mềm. Rồi mình sẽ cố gắng tìm sự giúp đỡ từ người thân, bạn bè. Nếu ai đã đọc bài này mà muốn chia sẻ với mình về nghề của chính bạn, hãy viết mail cho mình nhé: thamht01188@gmail.com.

Chân thành cảm ơn! Rất mong nhận được thông tin từ các bạn.