Trở thành Software Developer liệu có quá khó khăn?
Hầu hết mọi người đều cho rằng việc xây dựng, phát triển phần mềm là một điều gì đó rất kỳ diệu và những developer phải sở hữu trí tuệ siêu việt đến nỗi họ có thể nhớ đến chữ số thứ 40 của số pi hay liên tục viết ra hàng loạt các phương trình toán học siêu phức tạp để hack vào một hệ thống nào đó. Nhưng thật ra, một developer không nhất thiết phải là như vậy và những suy nghĩ đó chỉ góp phần khiến chúng ta tự đánh giá thấp năng lực của mình mà thôi!
Bạn không cần phải là một người thông minh xuất chúng
Trên thực tế, một vài người trên thế giới thông minh hơn đa số chúng ta và một điển hình như Stephen Hawking. Chúng ta có thể tham gia vào tất cả các bài tập rèn luyện trí não và làm mọi thứ có thể, nhưng, sẽ không bao giờ chúng ta có khả năng mô phỏng vũ trụ bên trong bộ não và sau đó viết ra những lý thuyết phức tạp như Stephen Hawking đã làm. Khả năng tư duy của con người tồn tại một thang điểm mà khả năng của đa số chúng ta đâu đó thường nằm ở dưới mức trung bình đến trên mức trung bình.
Còn đối với các software developer, bạn nghĩ rằng vị trí nào trên thang điểm sẽ thực sự phù hợp? Phải chăng là những nghiên cứu về các lý thuyết lập trình và viết ra hàng đống code phức tạp khiến họ được đánh giá cao hơn về khả năng tư duy? Thực tế mà nói, ngoài những software developer thật sự rất thông minh, thì một số khác có lẽ cũng có khả năng tư duy tương đương với một trong số chúng ta. Nhưng, sự khác biệt giữa chúng ta và các software developer đó là lĩnh vực mà mỗi người quan tâm đến. Một lẽ đương nhiên, software developer sẽ quan tâm đến việc phát triển phần mềm nên tất nhiên là họ sẽ xuất sắc hơn bạn ở khoản đó, đúng chứ!
Bạn cần kỹ năng giao tiếp
Phần lớn software developer hiện nay làm việc dựa trên những ý tưởng mà khách hàng của họ đưa ra. Vì vậy, các developer thường sẽ làm việc cho một công ty chuyên phát triển ứng dụng, phần mềm. Trong phạm vi công ty sẽ luôn có người đóng vai trò giải thích cho các developer về ý tưởng, về những gì mà khách hàng yêu cầu.
Thế nên, kỹ năng giao tiếp là một điều không thể thiếu đối với một developer. Khi lắng nghe một người đang mô tả thứ mà khách hàng muốn, bạn cần nhận thức và đánh giá được mức độ hợp lý của những yêu cầu đó. Bởi, đôi khi bạn sẽ nhận được những yêu cầu nằm ngoài sức tưởng tưởng của bạn hoặc vô cùng phức tạp so với cái giá mà khách hàng chịu bỏ ra để mua ứng dụng. Nếu tưởng hợp đó xảy ra, bạn buộc phải giải thích cho họ hiểu ý kiến của bạn và làm rõ ràng mọi thứ bên trong những yêu cầu đưa ra từ phía khách hàng. Để cụ thể hơn chúng ta tìm hiểu ví dụ sau đây nhé:
Hãy tưởng tượng rằng các developers của chúng ta tham gia vào dự án tạo một ứng dụng có tên là “Pictures of Cats” - ứng dụng cho phép mọi người tìm kiếm các hình ảnh về mèo. Trong ứng dụng này, người dùng có thể nhấn đúp vào hình ảnh một con mèo để yêu thích, có thể tìm kiếm mèo theo giống, loại, ... Ứng dụng này nghe có vẻ đơn giản mà đúng không?
Nhưng dưới góc độ của một developer bạn không thể nào nắm bắt hết được những yêu cầu mà khách hàng cần ở ứng dụng của bạn, liệu bạn có bắt đầu và cố gắng thực hiện mọi thứ trong vô ích? Đừng, hãy bắt đầu thực hiện tìm kiếm một giới hạn cho các chức năng cần thiết bằng cách trao đổi với những người xung quanh để biết được mình cần làm gì trước và cần làm ứng dụng này trong bao lâu. Có cho mình một mục tiêu giúp các developer dễ dàng hơn trong việc xây dựng ứng dụng. Tiếp theo, các developer sẽ luôn cần feedback từ những người sử dụng, trao đổi với mọi người sẽ giúp ứng dụng của bạn ngày càng trở nên tốt hơn, hoàn thiện hơn.
Vấn đề ở đây là gì? Các bạn cần phải có kỹ năng giao tiếp.
Đừng vẽ nên một viễn cảnh trong một tầng hầm tối tăm, bạn ngồi đấy, vật vã với những dòng code, xung quanh là những hộp pizza rỗng và tách capuchino còn dang dở. Thực sự, việc tạo ra một ứng dụng là sự kết hợp giữa khả năng bạn có và tầm nhìn của công ty, nó luôn luôn tồn tại khía cạnh xã hội, bạn không cần phải là bậc thầy trong giao tiếp, bạn chỉ cần ăn mặc lịch sự và nỗ lực lắng nghe khách hàng của mình.
Thể hiện được sự thu hút
Chúng ta cần có khả năng giao tiếp để hiểu khách hàng muốn gì và cần chúng ta hỗ trợ những gì. Còn đến giai đoạn triển khai ý tưởng đó thì sao?
Như đã nói bên trên - ứng dụng để người dùng xem ảnh mèo và đánh dấu mục yêu thích. Ở một mức độ sâu hơn, chúng ta có thể bắt đầu phân tích các thành phần tạo nên ứng dụng:
Người dùng sẽ đăng ký và đăng nhập vào ứng dụng như thế nào?
Trang thông tin về mèo sẽ trông như thế nào?
Cơ chế đánh dấu mục “yêu thích” mèo sẽ hoạt động như thế nào?
Các mục yêu thích sẽ được lưu trữ ở đâu?
Chắc chắn, ai cũng có thể đủ thông minh để tìm ra cách giải quyết một trong những vấn đề nhỏ phía trên, nhưng bạn có thể đem lại một ứng dụng tốt hơn - đó là khi mà người dùng sử dụng ứng dụng của bạn mãi mà không biết chán. Ứng dụng của bạn tạo ra một sự thu hút đến kỳ lạ từ tính thẩm mỹ và tạo một cảm giác thoải mái, quen thuộc khi tương tác.
Sự thu hút của ứng dụng là một phần quan trọng nếu bạn muốn trở thành một software developer thực sự. Nếu bạn không quan tâm đến cách mọi thứ hoạt động hoặc làm thế nào để đạt được một kết quả tuyệt vời, thì bạn mãi là kẻ thất bại. Bạn cần có các ý tưởng khiến ứng dụng của mình trở nên thu hút hơn, ví dụ như “tác vụ này nên được tự động hóa”, sau đó vạch ra các bước làm và bắt tay viết một chiếc script để thực hiện nó. Hãy tạo một sự thu hút của riêng bạn và bạn sẽ hoàn thành công việc với hiệu quả cao hơn so với một người thông minh nhưng thiếu mất đi sự thẩm mỹ và am hiểu về trải nghiệm người dùng.
Đó là cả một quá trình sáng tạo
Mọi người có xu hướng nghĩ những việc như viết sách hoặc vẽ tranh là công việc mang tính nghệ thuật, được thực hiện bởi những con người sáng tạo. Nhưng thực sự mà nói, developer cũng là những người thực hiện việc sáng tạo: không đặc biệt giỏi vẽ, nhưng họ dành nhiều thời gian để thêm và điều chỉnh màu sắc trên ứng dụng sao cho hợp lý, tuy không giống như việc vẽ cảnh hoàng hôn tuyệt đẹp, nhưng nó vẫn mang một yếu tố thiết kế. Và cũng giống như vẽ, một số ứng dụng hoặc chức năng đầu tiên có thể lỗi một chút, nhưng theo thời gian chúng sẽ dần trở nên tốt hơn.
Một developer lý tưởng là người có kỹ năng xã hội tốt kèm theo sự sáng tạo và tinh ý trong các vấn đề mà họ phải giải quyết.
Giải quyết các vấn đề logic
Khi nghĩ về một ứng dụng muốn tạo ra, người ta luôn nghĩ về nó trong một viễn cảnh đã được hoàn thiện. Không ai mô tả một ứng dụng đầy các chức năng trống chưa hoàn thiện kèm theo hàng tá lỗi chính tả. Và nhờ vào các mô tả về ứng dụng mà khách hàng đặt mục tiêu này, Developer sẽ có ý tưởng và bắt tay vào việc hiện thực hóa các ý tưởng khách hàng đề ra thành một ứng dụng mà họ mong muốn.
Trở lại ví dụ, chúng ta hãy cùng tóm tắt một số thành phần sẽ có trong ứng dụng "Pictures of Cats":
Đầu tiên, chúng ta sẽ cần một cách để truy xuất danh sách hình ảnh mèo từ một nơi nào đó trực tuyến trên mạng, sau đó lưu trữ chúng vào trong ứng dụng này. Vấn đề đầu tiên xuất hiện, làm thế nào để lưu trữ siêu dữ liệu từ những hình ảnh đó, mỗi bức ảnh có bao nhiêu lượt thích và ai đã thích nó?
Tiếp theo, chúng ta có thể giải quyết bằng cách sử dụng một cơ sở dữ liệu đơn giản cho việc đó. Sau đó, việc sử dụng cơ sở dữ liệu cũng gây ra một sự phức tạp nhất định và ta sẽ sử dụng cơ sở dữ liệu NoSQL - sự xuất hiện của NoSQL khiến mọi thứ đã trở nên đơn giản hơn rất nhiều. Chưa hết, chúng ta đã có các hình ảnh về mèo để mọi người xem và tương tác và cách để lưu trữ những dữ liệu đó.
Nhưng bây giờ chúng ta có thêm một vài câu hỏi khác nữa, chẳng hạn như làm sao để người dùng đăng nhập vào ứng dụng? Cách nào để có thể chia sẻ các liên kết từ ứng dụng của bạn gửi đến bạn bè của họ?
Triển khai các giải pháp cho các vấn đề vừa được đặt ra, ứng dụng của bạn sẽ có thêm một số chức năng hữu ích.
Bắt đầu cố gắng ngay từ bây giờ
Ngày nay, việc học lập trình đã trở nên dễ dàng hơn rất nhiều. Visual Studio Community có sẵn, các framework cho phép sử dụng miễn phí như React Native, Xamarin, Flutter. Hơn nữa, việc kết nối với nhau tiện lợi hơn bao giờ hết, vô số trợ giúp và giải pháp trong các chatroom như Slack và Discord, hay một diễn đàn thần thánh như Stack Overflow.
Nếu bạn đang nghĩ đến việc bắt đầu, bây giờ chính là lúc quá thích hợp. Hãy bắt đầu với những ứng dụng nho nhỏ. Đừng thắc mắc rằng kiến thức bạn phải nhận vào kết thúc ở nội dung nào? Hãy bắt đầu và cố gắng, bạn chắc chắn có cho mình một kết thúc đẹp - trở thành một software developer!
Tác giả: LewC
Dịch bởi Devera Academy