Chúng tôi không thể tìm thấy kết nối internet
Đang cố gắng kết nối lại
Có lỗi xảy ra!
Hãy kiên nhẫn trong khi chúng tôi khắc phục sự cố
Làm thế nào để trở thành một Nhà phát triển Phần mềm Giỏi — Lời khuyên tốt nhất từ các Kỹ sư Hàng đầu
0:24 the topmost advice Lear
0:28 cotland that was
0:33 predictable well being a good developer
0:36 like that's a very loaded question uh it
0:39 like it starts with the definition of
0:41 good being a good programmer developer
0:43 takes several qualities um first of all
0:48 that's attention to details programming
0:50 is all about small details like things
0:53 that uh uh you in casual communication
0:58 or in text when you AIC comma or flip a
1:01 word stuff like that it doesn't really
1:04 matter in your non-development life but
1:08 in programming like like uh just one
1:13 character in your code or off by one
1:16 somewhere can uh be a difference between
1:20 code that work incorrectly and code that
1:22 doesn't work so attention to the small
1:24 details is is really what makes
1:28 professional developers different
1:30 uh and that's the quality that's needed
1:33 to become good software developer I
1:37 enjoy working with extremely good and at
1:40 the same time very Junior developers who
1:43 arguably know very little right but they
1:46 uh the way they um approach the tasks at
1:51 hand the way they learn so the way they
1:54 are curious and hungry to do things and
1:57 it's an amazing experience and I love
1:59 them as contributors and they're great
2:00 developers they're just great Junior
2:01 developers so first thing I'll say is
2:04 that the greatness in this question to
2:06 me doesn't equate with experience
2:09 necessarily especially years of
2:11 experience if I think about this um
2:15 first thing that I'll
2:16 say and again this is Guy this is my
2:19 personal opinion this is not like a
2:20 recipe but first thing I'll say is a
2:24 fundamentals like if you're using a data
2:26 structure like a library list or or a
2:28 map or something do you know how it
2:31 that's working like what kind of
2:32 algorithms are implemented there like
2:34 why is it fast do you know how memory is
2:37 managed in the runtime you're using do
2:40 you know what kind of uh things are done
2:43 under the hood to manage concurrency for
2:45 example like synchronized threads and so
2:47 on so forth do you know how things work
2:50 under the hood in general uh and looking
2:53 into that makes you a better engineer
2:55 because you learn from other engineering
2:57 decisions made made by other people it
3:00 makes you it exercises your mind in an
3:02 analytical way that you really need
3:04 working on your own code and it also
3:07 makes you just knowledgeable it's much
3:09 easier for you to figure things out and
3:11 make connections where they're unobvious
3:13 I remember a question I was interviewed
3:15 by a startup CTO some 12 years ago he
3:18 asked me a question that I then kept
3:19 asking in my own interviews that I liked
3:22 very much question is simple so for web
3:24 developers imagine you have on the web
3:26 page there's a button you click on it
3:28 next page comes
3:31 what happened between the button click
3:33 and the next page think about it for a
3:35 second right that onion can have five
3:37 layers or a thousand you can spend 5
3:40 minutes answering the question or you
3:42 can spend an hour and not be done
3:44 halfway through because of how many
3:46 things happen or can happen and
3:47 depending on what level you decide to
3:49 stop and speak about and the more layers
3:52 of that onion you can stop and talk
3:54 about
3:55 knowingly the better you understand that
3:58 system and the better web developer
4:00 you'll be right things like Network
4:02 protocols things like like database
4:05 architecture uh with so much of
4:08 software available today being open
4:10 source uh you can be kind of the hood of
4:13 pretty much any technology that you use
4:15 and you should do that and uh you should
4:17 read books and watch presentations about
4:19 how this type of software works and I
4:21 think that uh the B main benefit that
4:25 brings is that it can help you resolve
4:27 problems much more confidently and much
4:29 more quickly than just if you just poke
4:31 at things and see like if I do this does
4:34 this work no okay let me try something
4:47 else don't tie your identity to a
4:50 specific uh technology or set of
4:52 practices so I see a lot of people like
4:54 saying that I'm a cotton developer or
4:56 I'm a python developer or I'm a Android
5:00 developer and people who say that kind
5:02 of things that people who are not
5:03 Android developers or not cotland
5:04 developers are not like me and probably
5:07 sometimes I see them as kind of
5:09 competitors or enemies or something like
5:11 that I or maybe they or maybe I say that
5:14 they are stupid and don't know what they
5:15 are doing and instead they should be be
5:17 using the best language on the planet
5:19 which is
5:20 Scotland I don't think this is healthy I
5:22 don't think this is good I think that
5:23 it's much better to uh
5:27 just identify yourself as a developer
5:30 and learn the tools learn what tools
5:32 exist learn tools what can what tools
5:34 can benefit you in which cases and use
5:36 the best tool for their for the job and
5:39 uh base your identity on something else
5:42 and not on that believe me during your
5:44 career you will have to learn many
5:46 different languages and it is wonderful
5:49 each language is different each one can
5:51 teach you something new and change how
5:54 you approach programming overall for
5:57 example I wrote very different code when
6:00 I coded in Java then when I learned
6:02 Objective C it changed when I first
6:05 touch Swift it's once again changed and
6:08 uh each language placed it Mar its mark
6:11 on me so learn different programming
6:14 languages embrace them and stay open
6:17 don't be afraid to learn something
6:19 unnecessary so for example if speaking
6:21 of cotlin a very common question of
6:24 people who start to learn cotlin is do I
6:26 have to learn
6:27 Java and uh this do I have to learn I
6:30 think it's not the best way to put
6:32 things like will learning Java make you
6:34 a better cotland developer yes
6:36 definitely because you will be easier
6:38 able to understand like the apis of
6:39 different libraries that you are
6:41 probably will want to use you'll better
6:43 understand uh how this whole environment
6:46 Works uh things like that you will
6:49 better understand why some things in
6:51 Cotton are the way they are and not
6:52 something
6:53 else so don't be afraid to learn
6:56 something that isn't necessary as we
7:00 advance our careers as engineers and it
7:02 doesn't matter whether you're a
7:04 consultant engineer or a product
7:06 engineer you will be working with people
7:10 like more and more inevitably you'll be
7:13 reading the requirements their stories
7:16 their comments you'll be writing the
7:18 same thing you'll be speaking you'll be
7:20 communicating you'll be explaining
7:22 presenting you'll work with people a lot
7:26 sometimes more than you work with code
7:28 especially if you measure your time
7:29 minutes in a
7:31 day and sort of best Engineers are
7:34 also uh just great at working with
7:38 people in everything that that entails
7:41 don't stick to one career you're not
7:44 doomed to be a software developer for
7:47 your whole life take me as an example uh
7:50 I learned to be an information security
7:52 specialist then I became an Android
7:54 developer had to switch to iOS
7:57 development then I became a team lead
7:59 did some backend development then I
8:01 became an manager and then a product
8:04 manager and now I'm leading a
8:06 development of a programming language
8:08 and uh that's actually great because in
8:11 each uh role you learn different skills
8:13 that may help you in the main one if you
8:16 decide to return it for example if you
8:19 if you will become a product manager you
8:21 will be much better in understanding
8:24 what and why and for whom you are
8:26 building it will drastically help you to
8:28 become a staff plus engineer because you
8:31 will not just write code you will think
8:33 about business needs or for example if
8:35 you are becoming a team lead uh and then
8:38 decide to stop doing it it will uh teach
8:40 you other essential skills like how to
8:43 play your time and time of other people
8:47 or uh how to uh how to make decisions in
8:52 uncertainty or other things so don't
8:55 stick to one's career uh your life is
8:59 long you can try different things and
9:01 find a one that Suites you the
9:10 best when you're young you it feels like
9:13 you can work 20 hours a day or 18 hours
9:16 a day or something like that and uh it's
9:20 a lot of fun to write software you may
9:23 end up like with uh your day job and
9:25 your hobby projected like doing working
9:27 for eight hours on one thing and uh then
9:30 another eight hours on that second thing
9:32 and this is kind of fun I did a little
9:34 bit of that when I was
9:36 younger but I think it's very important
9:38 to not focus on that not close
9:41 your eyes to other things other fun ways
9:44 to spend the time other ways to take
9:46 care of your body
9:48 your your emotional state your mind uh
9:53 read things go for a walk do some
9:55 physical activities I think like uh
9:57 finding a healthy balance between all
9:59 all of these will allow you to sustain
10:01 your productivity and sustain the joy
10:03 that software development brings you for
10:04 a much longer amount of time keep
10:06 learning new things go deeper go wider
10:10 uh look at how things are done nowadays
10:12 if there is a new big Trend uh look into
10:16 it like nowadays it's generative AI look
10:19 into that it will help you stay up to
10:21 date it will help you be a better
10:23 engineer and also just aim higher in
10:25 general a lot of people underestimate
10:27 themselves and just don't try things
10:30 they could have succeeded at and uh you
10:33 should do that you should try you should
10:36 experiment with the things that you feel
10:38 are out of Rel you should apply to jobs
10:41 you think you're not good enough for and
10:44 you should prepare for those interviews
10:46 and get the job you can so that's like
10:49 top piece of advice that I can give and
10:58 C
0:24 Lời khuyên hàng đầu của Lear Kotlin mà ai cũng có thể đoán trước được. Trở thành một nhà phát triển giỏi là một câu hỏi rất phức tạp. Nó bắt đầu từ việc định nghĩa thế nào là "giỏi". Để trở thành một nhà phát triển, một lập trình viên giỏi, bạn cần nhiều phẩm chất. Đầu tiên là sự chú ý đến chi tiết. Lập trình là tất cả về những chi tiết nhỏ nhặt. Ví dụ, trong giao tiếp thông thường hoặc trong văn bản, việc bạn bỏ sót dấu phẩy hay đảo một từ không quá quan trọng. Nhưng trong lập trình, chỉ một ký tự sai lệch trong mã cũng có thể tạo ra sự khác biệt giữa mã hoạt động và mã không hoạt động.
1:22 Vì vậy, sự chú ý đến những chi tiết nhỏ thực sự là điều làm nên sự khác biệt giữa các nhà phát triển chuyên nghiệp. Đó là một phẩm chất cần thiết để trở thành một nhà phát triển phần mềm giỏi. Tôi thích làm việc với những nhà phát triển trẻ tuổi nhưng cực kỳ giỏi. Họ có thể chưa biết nhiều, nhưng cách họ tiếp cận công việc, cách họ học hỏi, sự tò mò và khao khát làm mọi thứ của họ thật tuyệt vời. Tôi đánh giá cao những đóng góp của họ, và họ là những nhà phát triển tuyệt vời, dù còn trẻ. Vì vậy, điều đầu tiên tôi muốn nói là sự "giỏi" ở đây không nhất thiết phải đi kèm với kinh nghiệm, đặc biệt là số năm kinh nghiệm.
2:15 Nếu tôi phải đưa ra lời khuyên, điều đầu tiên tôi sẽ nói, và đây là ý kiến cá nhân của tôi thôi nhé, không phải là công thức chung đâu, là hãy nắm vững những điều cơ bản. Ví dụ, nếu bạn đang sử dụng một cấu trúc dữ liệu như danh sách, bản đồ, bạn có biết nó hoạt động như thế nào không? Những thuật toán nào được sử dụng? Tại sao nó lại nhanh? Bạn có biết bộ nhớ được quản lý như thế nào trong thời gian chạy không? Bạn có biết những gì diễn ra bên dưới để quản lý đồng thời, ví dụ như các luồng được đồng bộ hóa không? Bạn có hiểu cách mọi thứ hoạt động bên trong không? Tìm hiểu về những điều đó sẽ giúp bạn trở thành một kỹ sư giỏi hơn vì bạn học được từ những quyết định kỹ thuật của người khác. Nó rèn luyện tư duy phân tích, điều mà bạn thực sự cần khi làm việc với mã của mình. Nó cũng giúp bạn có thêm kiến thức.
3:07 Bạn sẽ dễ dàng tìm ra mọi thứ và tạo ra các kết nối ở những nơi không rõ ràng. Tôi nhớ một câu hỏi mà tôi đã được CTO của một công ty khởi nghiệp phỏng vấn khoảng 12 năm trước. Sau đó, tôi đã sử dụng câu hỏi đó trong các cuộc phỏng vấn của riêng mình vì tôi rất thích nó. Câu hỏi rất đơn giản: Đối với các nhà phát triển web, hãy tưởng tượng bạn có một nút trên trang web, bạn nhấp vào nó và trang tiếp theo sẽ xuất hiện.
3:31 Điều gì đã xảy ra giữa cú nhấp chuột và trang tiếp theo? Hãy suy nghĩ một chút. Có thể có năm lớp hoặc một nghìn lớp. Bạn có thể trả lời trong 5 phút hoặc bạn có thể mất cả tiếng đồng hồ mà vẫn chưa đi được nửa đường vì có rất nhiều thứ xảy ra hoặc có thể xảy ra. Tùy thuộc vào việc bạn quyết định dừng lại ở đâu và nói về điều gì. Bạn càng có thể dừng lại và nói về nhiều lớp một cách hiểu biết, bạn càng hiểu rõ hơn về hệ thống đó và bạn sẽ là một nhà phát triển web giỏi hơn. Những thứ như giao thức mạng, kiến trúc cơ sở dữ liệu...
4:05 Ngày nay, có rất nhiều phần mềm mã nguồn mở, bạn có thể tìm hiểu "nội thất" của hầu hết mọi công nghệ bạn sử dụng, và bạn nên làm điều đó. Bạn nên đọc sách và xem các bài thuyết trình về cách các loại phần mềm này hoạt động. Lợi ích chính là nó giúp bạn giải quyết vấn đề một cách tự tin và nhanh chóng hơn nhiều so với việc chỉ thử nghiệm mọi thứ một cách mò mẫm.
4:47 Đừng gắn bó danh tính của bạn với một công nghệ cụ thể hoặc một tập hợp các thực hành. Tôi thấy nhiều người nói rằng "Tôi là một nhà phát triển Kotlin", "Tôi là một nhà phát triển Python", "Tôi là một nhà phát triển Android". Những người nói như vậy thường coi những người không phải là nhà phát triển Android hoặc Kotlin giống như họ là đối thủ cạnh tranh hoặc kẻ thù.
5:11 Tôi, hoặc có thể họ, hoặc có thể tôi nghĩ rằng họ ngu ngốc và không biết họ đang làm gì, và thay vào đó họ nên sử dụng ngôn ngữ tốt nhất trên hành tinh, đó là Kotlin. Tôi không nghĩ điều này là lành mạnh. Tôi không nghĩ điều này là tốt. Tôi nghĩ rằng tốt hơn nhiều khi chỉ xác định mình là một nhà phát triển và học các công cụ, tìm hiểu những công cụ nào tồn tại, tìm hiểu những công cụ nào có thể mang lại lợi ích cho bạn trong những trường hợp nào và sử dụng công cụ tốt nhất cho công việc của họ và dựa trên danh tính của bạn vào một cái gì đó khác chứ không phải vào điều đó. Hãy tin tôi, trong suốt sự nghiệp của bạn, bạn sẽ phải học nhiều ngôn ngữ khác nhau và điều đó thật tuyệt vời. Mỗi ngôn ngữ đều khác nhau. Mỗi ngôn ngữ có thể dạy bạn điều gì đó mới và thay đổi cách bạn tiếp cận lập trình nói chung.
5:57 Ví dụ, tôi đã viết mã rất khác khi tôi viết mã bằng Java so với khi tôi học Objective-C. Nó đã thay đổi khi tôi lần đầu tiên chạm vào Swift. Nó lại thay đổi một lần nữa và mỗi ngôn ngữ đều để lại dấu ấn của nó lên tôi. Vì vậy, hãy học các ngôn ngữ lập trình khác nhau, chấp nhận chúng và luôn cởi mở. Đừng sợ học một cái gì đó không cần thiết. Ví dụ, khi nói về Kotlin, một câu hỏi rất phổ biến của những người bắt đầu học Kotlin là: "Tôi có phải học Java không?".
6:27 Và câu hỏi "tôi có phải học" này, tôi nghĩ đó không phải là cách tốt nhất để đặt mọi thứ. Ví dụ, việc học Java có giúp bạn trở thành một nhà phát triển Kotlin giỏi hơn không? Có, chắc chắn, bởi vì bạn sẽ dễ dàng hiểu các API của các thư viện khác nhau mà bạn có thể sẽ muốn sử dụng. Bạn sẽ hiểu rõ hơn về cách toàn bộ môi trường này hoạt động. Bạn sẽ hiểu rõ hơn tại sao một số thứ trong Kotlin lại như vậy chứ không phải là một cái gì đó khác. Vì vậy, đừng sợ học một cái gì đó không cần thiết khi chúng ta tiến bộ trong sự nghiệp của mình với tư cách là kỹ sư.
7:04 Cho dù bạn là một kỹ sư tư vấn hay một kỹ sư sản phẩm, bạn sẽ làm việc với mọi người ngày càng nhiều hơn. Chắc chắn, bạn sẽ đọc các yêu cầu, câu chuyện của họ, nhận xét của họ. Bạn sẽ viết những điều tương tự. Bạn sẽ nói, bạn sẽ giao tiếp, bạn sẽ giải thích, trình bày. Bạn sẽ làm việc với mọi người rất nhiều, đôi khi nhiều hơn bạn làm việc với mã, đặc biệt nếu bạn đo thời gian của mình bằng phút trong một ngày. Các kỹ sư giỏi nhất cũng giỏi làm việc với mọi người trong mọi thứ mà điều đó đòi hỏi.
7:41 Đừng bó buộc mình vào một sự nghiệp. Bạn không nhất thiết phải là một nhà phát triển phần mềm trong cả cuộc đời. Hãy lấy tôi làm ví dụ. Tôi đã học để trở thành một chuyên gia bảo mật thông tin, sau đó tôi trở thành một nhà phát triển Android, sau đó chuyển sang phát triển iOS, sau đó tôi trở thành trưởng nhóm, đã làm một số phát triển phụ trợ, sau đó tôi trở thành một người quản lý và sau đó là một người quản lý sản phẩm, và bây giờ tôi đang dẫn đầu việc phát triển một ngôn ngữ lập trình. Điều đó thực sự tuyệt vời vì trong mỗi vai trò, bạn học được những kỹ năng khác nhau có thể giúp bạn trong vai trò chính nếu bạn quyết định quay lại. Ví dụ, nếu bạn trở thành một người quản lý sản phẩm, bạn sẽ hiểu rõ hơn về những gì, tại sao và cho ai bạn đang xây dựng. Nó sẽ giúp bạn rất nhiều để trở thành một kỹ sư cấp cao hơn vì bạn sẽ không chỉ viết mã, bạn sẽ nghĩ về nhu cầu kinh doanh.
8:33 Ví dụ, nếu bạn trở thành trưởng nhóm rồi quyết định không làm nữa, nó sẽ dạy bạn những kỹ năng quan trọng khác như cách quản lý thời gian của mình và của người khác, hoặc cách đưa ra quyết định trong tình huống không chắc chắn. Vì vậy, đừng bó buộc mình vào một sự nghiệp. Cuộc đời còn dài. Bạn có thể thử những điều khác nhau và tìm ra điều gì phù hợp nhất với mình.
9:10 Khi còn trẻ, bạn cảm thấy mình có thể làm việc 20 tiếng một ngày, hoặc 18 tiếng một ngày, và viết phần mềm rất thú vị. Bạn có thể làm việc cả ngày và vẫn có dự án riêng, làm tám tiếng cho việc này rồi tám tiếng nữa cho việc kia. Tôi đã từng làm như vậy khi còn trẻ, nhưng tôi nghĩ điều quan trọng là không nên chỉ tập trung vào công việc, không nên bỏ qua những điều khác, những cách thú vị khác để dành thời gian, những cách khác để chăm sóc cơ thể, cảm xúc và tâm trí của bạn.
9:53 Hãy đọc sách, đi dạo, tham gia các hoạt động thể chất. Tôi nghĩ rằng việc tìm kiếm sự cân bằng lành mạnh giữa tất cả những điều này sẽ giúp bạn duy trì năng suất và niềm vui mà việc phát triển phần mềm mang lại trong một thời gian dài hơn. Hãy tiếp tục học hỏi những điều mới, đi sâu hơn, mở rộng hơn. Xem cách mọi thứ được thực hiện ngày nay. Nếu có một xu hướng lớn mới, hãy tìm hiểu về nó. Ví dụ, ngày nay đó là AI tạo sinh, hãy tìm hiểu về nó. Nó sẽ giúp bạn luôn cập nhật, trở thành một kỹ sư giỏi hơn và nói chung là đặt mục tiêu cao hơn. Rất nhiều người đánh giá thấp bản thân và không dám thử những điều mà họ có thể đã thành công. Bạn nên thử. Bạn nên thử nghiệm với những điều mà bạn cảm thấy là không thể đạt được. Bạn nên nộp đơn vào những công việc mà bạn nghĩ rằng mình không đủ giỏi và bạn nên chuẩn bị cho những cuộc phỏng vấn đó và có thể bạn sẽ nhận được công việc đó. Đó là những lời khuyên hàng đầu mà tôi có thể đưa ra.
Dịch Vào Lúc: 2025-03-07T14:10:47Z
Phiên bản Dịch: 3.1 Improved translation step with full context