Thế nào là một Full-stack Developer?

Mời bạn cùng xem qua một số khái niệm về Full-stack developer nhé:

Full-stack developer (FSD) là người có thể làm các công việc liên quan tới databases, servers, systems engineering và client work. Họ có thể là một FSD về di động (mobile stack), web (web stack) hoặc phần mềm (native applications).

Full stack developer

Full-stack Developer = Mr. Do It All!

Anh chàng FSD quen thuộc với tất cả các mảng trong quá trình phát triển phần mềm. Anh ta có kiến thức bao quát về Mạng, CSDL, User Interface, API, Security, … Một FSD không nhất thiết phải thông thạo mọi công nghệ của Front-end và back-end nhưng có thể học và ứng dụng vào dự án một cách nhanh chóng khi họ cần. Các công ty và start-up với nguồn lực giới hạn luôn tìm kiếm những “super hero” như thế này. Tuy nhiên, cơ hội tìm được họ là rất thấp.

Full stack developer

Nói một cách cụ thể hơn, một FSD có thể đảm nhiệm các công việc liên quan đến:

  • Máy chủ, mạng, và hosting. Họ hiểu biết về các yêu cầu về phần cứng, hệ điều hành, thiết lập môi trường hệ thống để triển khai ứng dụng.
  • CSDL. Họ có thể phân tích và thiết kế CSDL, sử dụng các hệ quản trị CSDL (MySQL, SQLServer, NoSQL, …) và viết được các câu truy vấn.
  • **API/ Back-end code. **Họ có thể sử dụng một hay nhiều ngôn ngữ server-side như Ruby, Python, PHP, Java, … để viết các ứng dụng, dịch vụ web (web service).
  • **Front-end code. **HTML5, CSS3, Javascript và các frameworks như Bootstraps, Jquery, AngualarJS, …
  • **UI/UX. **
  • **Client work. **Họ có thể giao tiếp và lấy yêu cầu (requirement) từ khách hàng. Họ viết ra các tài liệu kĩ thuật (technical specs, architecture documents) và documentation.

Nếu bạn muốn tìm kiểu về khái niệm FSD một cách đầy đủ và hệ thống hơn, bạn có thể xem các bài viết sau:

Bạn muốn trở thành một Full-stack Developer?

Nếu bạn muốn bước chân trên con đường để trở thành một FSD thì chúc mừng bạn vì bạn đang bước đi trên con đường gian nan, tiêu tốn nhiều****thời gian nhưng kết quả thì rất khả quan đấy ^^.

Trước hết, bạn hãy bắt đầu học về các ngôn ngữ lập trình phía Front-end. bao gồm HTML5, CSS3, và Javascript. Mục tiêu bạn cần đặt ra là có thể tạo được một website tĩnh.

Sau đó, bạn hãy bắt đầu học một ngôn ngữ lập trình phía Back-end. Vì bản thân mình là một PHP Developer và mình thấy rằng PHP là một ngôn ngữ dễ học nên mình sẽ hướng các bạn học và làm việc với PHP. Khi đã nắm vững được một ngôn ngữ lập trình rồi thì bạn có thể học các ngôn ngữ mới dễ dàng hơn. Kết hợp với kiến thức phía Front-end, lúc này bạn đã có thể xây dựng được một website giống như GeekBoy rồi đấy!

Trong quá trình phát triển, bạn cũng cần có các công cụ để quản lý code của mình. Có khá nhiều công cụ phục cho việc này như Git, SVN, Mercury. Mình khuyên các bạn nên học sử dụng Git.

Tiếp theo đó, bạn hãy học về CSDL để có thể lưu trữ nội dung cho website của mình.

Khi đã xây dựng xong website bên dưới máy của bạn rồi, điều bạn cần làm tiếp theo là học các kiến thức về tên miền cho website, hosting hoặc server để chứa source-code. Nếu bạn có server riêng (hoặc VPS), bạn cần học các kiến thức về quản trị server, bao gồm cài đặt hệ điều hành, cài đặt web server, …

Xong các bước ở trên rồi, bạn cũng cần phải nghiên cứu làm sao cho website của mình được người dùng tìm thấy qua Google, Bing, Yahoo. Quá trình được gọi là Tối ưu hóa công cụ tìm kiếm (Search Engine Optimization, SEO).

Và còn nhiều điều nữa bạn cần phải học lắm!

Mình xin trích dẫn đoạn trích bài viết của anh Bùi Hải An, là người sáng lập start-up công nghệ SSS:

Để một bạn dev ở SSS có thể được gọi là 1 Full Stack Developer thì cần: Kiên trìDũng cảm. Còn về kỹ năng, tất cả đều có thể tự học được!

Kiên trì để liên tục đẩy bản thân mình không ngừng nghỉ. Với tất cả những bạn học IT tốt nghiệp ra đi làm, hầu hết các bạn đều có đủ kiến thức cơ bản. Tuy nhiên giống như 1 self-timer vậy. Kiến thức này expire và obsolete cực nhanh. Do đó bạn phải kiên trì liên tục học cái mới. Mỗi tuần bạn không biết thêm và làm thêm 1 cái gì mới coi như bạn đang đi thụt lùi.

Kiên trì cho 1 chuyên môn, 1 ngôn ngữ nhất định thì dễ (như PHP, Ruby, Android, Python, iOS, …). Bạn cứ làm, cứ nghiên cứu thì cũng là tiến bộ rồi. Nhưng bạn có đủ kiên trì để học 2-3 ngôn ngữ, tìm hiểu 2-3 nền tảng cùng 1 lúc không? Bạn có đủ kiên trì để trải qua những cung bậc cảm xúc khi bắt đầu lại từ đầu với 1 ngôn ngữ mới không?

Kiên trì tìm cho mình cơ hội. Cơ hội để được làm, được thực hành. Ngồi đọc 10 bài trên StackOverflow, Reddit, HackerNews mà không bắt tay vào làm thử thì cũng vô dụng. Do đó, tìm cho mình mọi cơ hội để được làm, để được thử. Bạn có thể tự làm project của mình,  hoặc xin sếp cho làm thêm 1 project, tìm project freelance,… Bạn có đủ kiên trì làm như vậy trong suốt 2-3 năm trời không?

Dũng cảm để chọn con đường hơi khác người. Bạn có đủ dũng cảm và tự tin để sale bản thân mình với 1 bộ skillset không giống lắm với những bạn bè của mình.

Dũng cảm để có thể bỏ toàn bộ code làm 5-6 tháng trời để nâng cấp lên một ngôn ngữ mới. Dũng cảm để không dùng Code generator mà tự code để hiểu được architecture và nền tảng chuyên sâu bên dưới.

Dũng cảm để trở thành lại 1 newbie trong khi mình đang là hardcore khi nhảy từ 1 nền tảng ruột (Android), sang 1 nên tảng lạ hoắc (iOS). Và phải đi tầm sự học đạo 1 bạn junior vì bạn đó giỏi hơn mình (trong cái mới này).

Tóm lại, về chuyên môn thì ai cũng có thể trở thành 1 Full Stack Developer được hết (ít ra là tự cho mình là vậy). Nhưng về thái độ và bản lĩnh, chưa chắc nhiều bạn sẽ dám dấn thân và thử thách bản thân mình đâu.

Nói túm lại, còn bạn thì sao? Bạn đã sẵn sàng để trở thành một Full-stack Developer?

Nguồn: http://geekboy.in