Dấu ấn của một lập trình viên PHP chuyên nghiệp [đã đóng]


8

Tôi là một sinh viên 19 tuổi, người thực sự THỰC SỰ thích lập trình, và tôi hy vọng sẽ lượm lặt được từ những năm kinh nghiệm của bạn ở đây. Hiện tại, tôi đang học PHP mọi cơ hội tôi có được, và đã được khoảng 3 năm, mặc dù tôi chưa bao giờ tham gia bất kỳ lớp học chính thức nào. Tôi muốn một ngày nào đó trở thành một lập trình viên toàn thời gian và tạo nên sự nghiệp tốt cho nó.

Câu hỏi của tôi cho bạn là: Bạn nghĩ gì về đặc điểm hay đặc điểm của một lập trình viên chuyên nghiệp? Chủ yếu trong lĩnh vực PHP, nhưng các bằng cấp khác, khái quát hơn cũng được chào đón nhiều hơn, vì tôi nghĩ PHP là ngôn ngữ của sở thích và có thể không phải là ngôn ngữ được lựa chọn trong mắt các nhà tuyển dụng tiềm năng. Vui long sửa cho tôi nêu tôi sai. Trên hết, tôi không muốn lãng phí thời gian vào thứ gì đó không đáng.

Tôi hiện đang cảm thấy khá tự tin về kiến ​​thức về ngôn ngữ PHP của mình và tôi biết rằng tôi có thể xây dựng bất cứ thứ gì tôi cần và có "công việc", nhưng tôi cảm thấy thiếu các khái niệm thiết kế và cấu trúc mã. Tôi thậm chí có thể viết mã hướng đối tượng, nhưng theo ý kiến ​​cá nhân của tôi, điều đó không đáng để có một ngọn đậu nếu nó không được tổ chức tốt. Vì lý do này, tôi đã mua cuốn sách "Các đối tượng, mô hình và thực hành PHP" của Matt Zandstra và đã đọc nó mỗi ngày một ít.

Dù sao, tôi đang bắt đầu lạc đề một chút ở đây, vì vậy hãy quay lại câu hỏi ban đầu. Bạn có lời khuyên nào cho một lập trình viên đầy tham vọng muốn tạo ảnh hưởng trong lĩnh vực này?

Ngoài ra, trên một lưu ý phụ, tôi đã làm việc trong một dự án với một người bạn của tôi, điều đó sẽ cho một ý tưởng khá tốt về nơi tôi đang viết mã thông minh. Tôi sẽ cung cấp một liên kết, tôi không muốn bất cứ ai cảm thấy như thể tôi đang đẩy hoặc spam ở đây, vì vậy đừng nhấp vào nó nếu bạn không muốn. Nhưng nếu bạn quan tâm đến việc đưa ra một số phản hồi ở đó, bạn có thể xem mã trên github. Tôi được gọi là The Craw there.

https://github.com/PureChat/PureChat--Beta-/tree/


2
"Tôi được gọi là The Craw there." - có lẽ chúng ta nên nói về những móng vuốt của một nhà phát triển PHP chuyên nghiệp ... :-)
Stephen C

Dấu móng vuốt .. Tôi thích điều đó! Nghe có vẻ hung dữ hơn ... hoặc một cái gì đó. Heh.
Scotty C.

2
Tôi muốn nói rằng các dấu hiệu của một nhà phát triển PHP chuyên nghiệp không khác gì một nhà phát triển sử dụng bất kỳ ngôn ngữ nào khác
HorusKol

Tôi sẽ +1 nếu chỉ vì tôi thích từ "dấu chân" trong câu hỏi này dường như đã làm bối rối rất nhiều người. :)
haylem

Đối với một điều, biết khi nào stripslashes()được yêu cầu ;)
phant0m

Câu trả lời:


13

1. Mã chất lượng cao

Viết mã dễ, nhưng viết mã sạch, khó hơn nhiều. Và tốt, ý tôi là mã có thể đọc phù hợp với một kiểu cụ thể, được nhận xét đủ nhưng không quá nhiều, có các phương thức ngắn, tự ghi lại tên của các biến, v.v.

2. Kiến thức rộng

Người ta khó có thể được gọi là nhà phát triển chuyên nghiệp nếu anh ta chỉ biết một ngôn ngữ lập trình. Hiểu các mô hình khác nhau (như hướng đối tượng, chức năng hoặc phản xạ) là điều bắt buộc phải có.

Ngoài ra, là một nhà phát triển web, người ta nên biết HTTP, JavaScript, SQL, REST và quá nhiều thứ được liệt kê ở đây. Một nhà phát triển web chuyên nghiệp sẽ có thể làm một trang web quy mô trung bình một mình, ngoại trừ thiết kế trực quan và đồ họa. Nó không nên tốt như một trang web được tạo bởi một nhóm những người có chuyên môn cao, nhưng vẫn nên được chấp nhận.

Biết các công cụ của bạn là một yêu cầu quá. Bạn nên làm quen với kiểm soát phiên bản, IDE, v.v.

3. Kinh nghiệm vững chắc

Bạn không được chuyên nghiệp sau hai năm đại học. Ai đó có mười năm kinh nghiệm chuyên môn có thể sẽ có nhiều cơ hội được gọi là nhà phát triển chuyên nghiệp.

Tất nhiên, có nhiều loại kinh nghiệm khác nhau. Làm việc trong một công ty nhỏ nơi không ai quan tâm đến chất lượng sản phẩm không có giá trị lắm.

Một kinh nghiệm trong một dự án quy mô lớn cũng tốt. Xây dựng một trang web nhỏ khá dễ dàng, nhưng khó hơn nhiều để có được nó ngay khi nói đến một trang web nên được triển khai trên một loạt các máy chủ, phụ thuộc nhiều vào bộ nhớ đệm, v.v.

4. Động lực cá nhân

Nếu một người thực sự bị thúc đẩy bởi sự phát triển phần mềm, cô ấy sẽ có thể thể hiện điều đó. Khi tôi phỏng vấn một người tuyên bố đam mê lập trình và có 15 năm kinh nghiệm phát triển phần mềm, nhưng không thể trả lời câu hỏi đơn giản: "Hãy nói với tôi về dự án cá nhân cuối cùng của bạn liên quan đến lập trình", tôi biết rằng có điều gì đó không đúng với ứng cử viên này.

Có các dự án nguồn mở với mã nguồn có sẵn để tải xuống. Có một blog. Tham gia trao đổi ngăn xếp. Tất cả những điều đó đều có giá trị khi thể hiện mình là một nhà phát triển chuyên nghiệp.


1
+1. Tôi muốn thêm công việc nhóm. Phát triển trong một nhóm / cửa hàng nhỏ không giống như phát triển trong một nhóm / cửa hàng lớn, ngay cả khi bạn ở trong một nhóm nhỏ trong nhóm / cửa hàng lớn đó.
Marjan Venema

Đây là công cụ tuyệt vời, cảm ơn! Tôi sẽ đánh dấu trang này và đề cập đến nó thường xuyên. Tôi cũng sẽ xem xét REST, như bạn đề xuất. :)
Scotty C.

Câu trả lời tốt. Nhưng với tôi, mã tốt bao gồm chính xác :)
marktani

9

Tôi đã phát triển với PHP được 8 năm rồi - kể từ khi tôi 16 tuổi. Tôi gặp mọi người ở mọi lứa tuổi, hình dạng và kích cỡ và nền tảng. Tôi đồng ý với hầu hết các điểm của MainMa, nhưng hãy để tôi thêm một số điểm nhấn và một vài điểm của riêng tôi.

Đam mê & Động lực

Đây là điều quan trọng nhất cho đến nay. Phấn đấu là tốt nhất (bạn có thể), và cuối cùng bạn sẽ làm được. Nó có niềm đam mê thực sự để giải quyết vấn đề và mài giũa nghề của bạn. Bạn có thể nói trong 5 giây nếu ai đó đam mê. Khi bạn hỏi họ một câu hỏi, họ có tham gia ngay lập tức không, hoặc họ có đưa ra câu trả lời hai từ không? Nếu bạn đề nghị một cái gì đó, họ có quay lại và nói với bạn về nó sau?

Tận tâm

Phát triển phần mềm là một nghề có thể mất nhiều thập kỷ để thành thạo. Họ nói rằng phải mất 10.000 giờ để thành thạo một cái gì đó, nhưng tôi nghĩ khi làm việc với một mục tiêu chuyển động như phát triển phần mềm, nó còn hơn thế nữa. Nếu bạn làm việc toàn thời gian, bạn sẽ đạt được điểm đó cứ sau vài năm để bạn có thể liên tục phát minh lại chính mình. Để có thể gắn bó với một cái gì đó lâu dài này đòi hỏi một sự kiên nhẫn và một lần nữa, niềm đam mê. Hãy cảnh giác với những người có 10/15 năm kinh nghiệm không thể tin được. Họ không tận tâm, và có lẽ đã mất niềm đam mê một thập kỷ trước. 15 năm kinh nghiệm không giống như 1 năm kinh nghiệm 15 lần.

Đói kiến ​​thức

Nó không ngừng học hỏi và thất bại. Sẽ là hết sức ngượng ngùng / chán nản khi nhìn vào mã từ năm trước Nếu không, thì bạn không học đủ. Tìm những người đứng đầu và học mọi thứ bạn có thể từ họ. Thông thường, đó là những người đóng góp mã nguồn mở (cho các nhà phát triển PHP: Symfony, Zend, PHPUnit / Behat / v.v.). Họ là những người đào tạo mọi người khác. Khi ai đó nói với bạn X tốt hơn Y, hãy tự nghiên cứu. Họ thường là những con cừu được kể rằng 5 năm trước và vẫn giảng về nó. Tôi thực sự trang web này là một tài nguyên tuyệt vời. Tôi tìm thấy một phạm vi nội dung rất rộng thường dẫn đến cùng những người hoặc hiệu trưởng quan trọng (Martin Fowler, chú Bob, v.v., DDD, v.v.)

Sucks PHP

Bất cứ điều gì. Nếu mọi người muốn giễu cợt bạn / PHP, đừng để nó làm bạn thất vọng. Nếu bạn tuân theo các nguyên tắc phát triển chính và thực sự xây dựng phần mềm , thì hãy tiếp tục. PHP đã đi được một chặng đường dài và nó không phải là con vịt xấu xí như trước đây. Học từ các ngôn ngữ khác, và thỉnh thoảng loay hoay với những người khác. Bạn có thể thích chúng nhiều hơn, hoặc bạn có thể không. Dù bằng cách nào, nó sẽ mở rộng kiến ​​thức của bạn và giới thiệu cho bạn các mô hình hoặc thực tiễn mới không phổ biến hoặc thậm chí có thể có trong PHP.

Mạng

Bắt đầu xây dựng thương hiệu cho chính mình. Blog. Tham dự các cuộc họp / hội nghị. Tiếp cận với những người khác trên Twitter. Tìm một cộng đồng / thích hợp để tham gia. Đóng góp cho các dự án nguồn mở. Lập trình là một công việc rất xã hội bây giờ. Đừng cô lập bản thân và làm cho công việc của bạn được biết đến. Bạn càng làm điều này sớm, bạn sẽ càng sớm xây dựng mối quan hệ với các nhà phát triển tuyệt vời, những người sẽ đưa bạn dưới quyền của họ, và bạn sẽ sớm tìm thấy những khách hàng / nhà tuyển dụng tử tế hơn là những người nhảm nhí mà mọi người khác làm việc.


1
Tôi thích bình luận của bạn về mã từ năm trước. Tôi liên tục nhắc nhở rằng tôi thực sự biết rất ít về kế hoạch lớn của mọi thứ mỗi năm, nhưng tôi có sự khao khát làm cho sự ghét bỏ của tôi đối với mã cũ ít hơn mỗi năm :)
Simon Whitehead

Gotta nói, bài viết này thực sự đã giúp đặt mọi thứ trong quan điểm cho tôi. Đặc biệt là những phần về việc đưa bản thân ra khỏi đó và tham gia vào một hoặc hai dự án tốt, được thành lập. Điều đó làm cho rất nhiều ý nghĩa. Và tôi chắc chắn sẽ cố gắng tìm một nhóm người đã làm việc này trong một thời gian dài và biết câu trả lời cho những câu hỏi khó. Ở những nơi tôi đi chơi bây giờ, nếu tôi đặt câu hỏi về mẫu tổng hợp chẳng hạn, mọi người cho tôi cái nhìn ngoài hành tinh không gian đó. xD
Scotty C.

3

Ngoài những gì mà Adrian SchneiderMainMa đã viết (cả hai đều tốt), tôi nghĩ rằng một đặc điểm của một lập trình viên chuyên nghiệp, bất kể ngôn ngữ, là nhận ra rằng mã có thời gian bán hủy cực kỳ dài - lâu hơn chúng ta thường nhận ra hoặc cho vấn đề đó mong đợi khi viết nó.

Có, có những trường hợp cực đoan của các hệ thống có niên đại 50 năm vẫn đang được sử dụng (các ứng dụng quan trọng trong kinh doanh được viết bằng COBOL từ những năm 1960 đến 1970 vẫn được sử dụng), nhưng nó không cần phải cực kỳ như vậy. Tất nhiên ở một thái cực khác là mã ad-hoc được viết để chỉ được thực thi một lần. Một trong những ứng dụng tôi làm việc về cơ bản là một ứng dụng CRUD dựa trên web. Rất nhiều lượt xem bảng, một số khung nhìn chuyên biệt, một số báo cáo, một vài tỷ lệ cược xung quanh và kết thúc. Thực sự, không có gì rất lạ mắt trong sơ đồ lớn của mọi thứ. Với một số lớp lõi và mã cơ sở dữ liệu có niên đại hơn 10 nămHiện tại, tôi tin rằng nó khá phù hợp với trung bình. Ngôn ngữ và khung (C # .NET, trong trường hợp cụ thể này) tất nhiên đã phát triển theo thời gian đó và những người liên quan đã có kinh nghiệm sử dụng nó, nhưng mã cũ vẫn tồn tại vì nó hoạt động và hoạt động đủ tốt, nhìn thấy nhỏ thay đổi ngay bây giờ nhưng sau đó thường chỉ cung cấp nền tảng mà toàn bộ hệ thống dựa vào. Việc làm của tôi trước đó tập trung vào việc thay thế một hệ thống lão hóa được thiết kế chỉ cho một người dùng và với các bộ phận được viết hơn 15 năm trước với một cái gì đó hiện đại hơn một chút. Hãy để tôi nói lại rằng. Một số phần quan trọng nhất của hệ thống tôi được giao nhiệm vụ thay thế Windows 3.0 đã có trước.

Một lập trình viên chuyên nghiệp sẽ, khi viết mã không rõ ràng được thiết kế để giải quyết vấn đề chỉ có một lần rất cụ thể, hãy xem xét thực tế rằng mã mà anh ta viết hôm nay có thể sẽ tồn tại ở dạng nào đó trong nhiều năm. Nếu nó là một phần cốt lõi của phần mềm, nó có khả năng tồn tại một phần đáng kể trong vòng đời của sản phẩm. Nó có khả năng cần bảo trì xuống đường bởi một lập trình viên không liên quan gì đến nhóm phát triển ban đầu. Heck, nó thậm chí có thể cần bảo trì bởi các lập trình viên ban đầu đã viết nó! (Nếu bạn không hiểu điều đó, hãy xem xét câu nói mà mã bạn đã viết sáu tháng trước cũng có thể đã được viết bởi người khác - sau đó thử sáu năm thay vì sáu tháng.)

Từ đó nhận ra rằng mã cần phải dễ đọc và dễ hiểu , dễ sửa đổidễ mở rộng để phù hợp với việc sử dụng mới hoặc đáp ứng các yêu cầu thay đổi. Nó cũng cần phải dễ dàng để gỡ lỗi , cũng như dễ dàng theo dõi mà không cần chạy nó thông qua một trình gỡ lỗi tương tác.


+1. Nếu bạn tự do hoặc tự xây dựng sản phẩm thì điều này đặc biệt đúng. Bạn chịu trách nhiệm cá nhân . Mặc dù không quá 50 năm, tôi vẫn có những khách hàng / khách hàng cũ quay lại với tôi từ 5-8 năm trước muốn cập nhật cho các sản phẩm tôi đã xây dựng. Vị trí của tôi bây giờ? Nếu bạn tốt, bạn sẽ muốn được thay thế. Những người thường không lạm dụng khách hàng của họ với các hợp đồng bảo trì dài. (kinh doanh là kinh doanh, tôi đoán vậy)
Adrian Schneider
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.