Vô tình trở thành một lập trình viên: làm thế nào để làm điều đó đúng? [đóng cửa]


21

Nền tảng của tôi là kỹ thuật điện, DSP để chính xác hơn. Công ty tôi hiện đang làm việc cho rất nhiều dự án đa dạng, chủ yếu là xây dựng phần cứng tương tự. Gần gũi với máy tính hơn mọi người khác ở đây Tôi thường là một mã viết cho cả hai thiết bị nhúng (mà tôi hoàn toàn ổn) và Windows hoặc Linux OS. Nó là lãnh thổ nước ngoài đối với tôi.

Tôi có thể viết mã và tôi biết một vài ngôn ngữ (C / C ++, Java, một số VB.NET), nhưng tôi chỉ sử dụng chúng để mô phỏng thuật toán trong xử lý tín hiệu và hình ảnh, mạng thần kinh và các ứng dụng tương tự khác. Đối với tôi lập trình đã là một công cụ tính toán hơn bất cứ thứ gì khác. Tuy nhiên, tôi nhận được ngày càng nhiều dự án mà tôi phải viết phần mềm đầy đủ thích hợp và tôi thực sự không biết làm thế nào vì tôi không bao giờ phải làm điều đó và tôi chưa bao giờ thực sự quan tâm. Bản thân tôi đã thấy khá nhiều kỹ sư đã chuyển đổi thành lập trình viên ở một mức độ nhất định vì nhu cầu công việc, và hầu hết trong số họ không tuyệt vời với những gì họ đã làm. Tôi chắc chắn nhiều người đã gặp phải điều tương tự.

Nếu tôi học viết phần mềm phù hợp với giao diện người dùng tốt, kiến ​​trúc nội bộ tốt, v.v., tôi phải làm thế nào? Chúng tôi không có ai làm việc có thể cho tôi biết thực hành tốt và những gì không. Cho rằng tôi có thể viết theo nghĩa tiếng Tây Ban Nha của từ này, còn gì khác để biết về việc viết phần mềm tốt và làm thế nào để tôi tự mình đến đó?


Nếu bạn đã cho chúng tôi biết ngôn ngữ mà bạn đang sử dụng, chúng tôi có thể cung cấp cho bạn câu trả lời sâu hơn. Sau đó, một lần nữa, điều đó sẽ phủ nhận quan điểm của một câu trả lời chung chung.
Sardathrion - Phục hồi Monica

2
Nếu không có đào tạo chính thức hoặc kinh nghiệm làm việc trực tiếp với một người cố vấn thì việc thực hiện Right Way ™ sẽ không thực tế. Bạn đang học. Có một lý do tại sao khoa học máy tính và kỹ thuật phân nhánh từ kỹ thuật điện. Một công ty lành mạnh sẽ thuê các kỹ sư phần mềm viết giao diện ứng dụng, trình điều khiển ứng dụng và thậm chí phần sụn vì họ muốn chất lượng và muốn nó được thực hiện ngay và có thể duy trì được. Tôi sẽ giải thích với sếp của bạn rằng những gì bạn đang làm vượt xa chuyên môn của bạn và những nhiệm vụ này nên để lại cho một kỹ sư phần mềm.
maple_shaft

4
... Tôi cũng muốn nói thêm rằng tôi không nghĩ tình huống của bạn là "không tự nguyện" như bạn nêu trong tiêu đề. Bạn tự nhủ rằng đồng nghiệp của bạn thậm chí không biết sử dụng máy tính, nhưng bạn có bắt buộc phải là một kỹ sư phần mềm không tự nguyện? Điều đó dường như không công bằng. Tôi khen ngợi khả năng của bạn để viết phần mềm có thể vượt qua và mong muốn học hỏi và làm mọi thứ đúng cách, tuy nhiên không có gì xấu hổ khi thừa nhận với sếp và chính bạn rằng một số điều không nằm trong khả năng của bạn. Nếu họ nghiêm túc về việc đặt bạn vào vai trò này, hãy yêu cầu họ dành cho việc đào tạo cho bạn.
maple_shaft

@maple_shaft Tôi đồng ý với hầu hết những điều bạn đang nói; tuy nhiên, tôi không bao giờ nói rằng các đồng nghiệp của tôi không biết cách sử dụng máy tính. Không ai trong số họ là một kỹ sư phần mềm có thể làm tôi say mê, nhưng tất cả họ đều rất thành thạo máy tính. Tôi không có vấn đề gì với việc phải viết mã, tôi thích học những điều mới và tôi thực sự không có vấn đề gì với việc làm nó.
Phonon

6
@Phonon Tuyệt vời, đó là một thái độ tốt, nhưng hãy chắc chắn rằng công ty của bạn mua cho bạn sách, các khóa đào tạo và cho bạn thời gian để học nếu họ muốn bạn đóng vai trò đó. Đó là tất cả những gì tôi đang nói. Vì vậy, nhiều công ty sẽ cố gắng lừa dối bạn bằng cách thuyết phục bạn rằng bạn có trách nhiệm mua những thứ này cho mình.
maple_shaft

Câu trả lời:


11

Có một vài cuốn sách sẽ giúp bạn rất nhiều. Tôi đề nghị luôn luôn bên cạnh bạn Mã hoàn thành . Nó là một tài liệu tham khảo vô giá. Trong một công ty trước đây nơi tôi làm việc, đây cũng là cuốn sách chúng tôi đã tặng cho mọi lập trình viên cơ sở sau khi được thuê.

Lập trình viên thực dụng cũng là một tài nguyên thực sự hữu ích và nó khá ngắn, nhưng tôi khuyên bạn nên đọc nó sau khi hoàn thành Code.

Những cuốn sách này sẽ giúp bạn bắt đầu, sau đó mã, mã, mã và mã nhiều hơn ... nhưng biết khi nào dừng, phần mềm của bạn sẽ không bao giờ hoàn hảo.


6

Công ty của tôi làm điều này mọi lúc ... và nó khiến tôi phát điên.

"Tôi là một nhà phát triển phần mềm, làm thế nào để tôi trở thành EE?"

Vâng, tôi nghĩ rằng câu trả lời là khá rõ ràng. Phải mất rất nhiều thời gian và công sức. Và tất nhiên, các tài liệu học tập đúng. Nền tảng Kỹ thuật giúp, tại trường đại học của tôi, CS và các trường kỹ thuật ở trong cùng một tòa nhà với rất nhiều sự chồng chéo. Các thuật toán và nền tảng toán học là ở đó.

Một sai lầm tôi thấy hầu hết những người mới mắc phải là cắn nhiều hơn những gì họ có thể nhai. Tài liệu học tập trên UI, kiến ​​trúc, mã chất lượng ... đó là rất nhiều nền tảng . Một cái gì đó mất nhiều năm thực sự và thường được thực hiện bởi các nhóm chuyên gia khác nhau tại các công ty phần mềm.

Không phải nói rằng bạn không thể tự mình khá tốt, nếu bạn đặt thời gian. Chỉ cần nhận ra độ lớn của các tài liệu để bạn không áp đảo bản thân và A. Thoát hoặc B. Xây dựng khoản nợ kỹ thuật lớn vào các ứng dụng của bạn bằng cách sử dụng các phím tắt chính trong quá trình học tập của bạn.

Bởi vì tất cả những điều này, không có "bắt tất cả" trở thành một nhà phát triển tuyệt vời với cuốn sách này ngoài kia. Tôi khuyên bạn nên bắt đầu bằng cách chọn một cuốn sách được đánh giá tốt về ngôn ngữ được sử dụng nhiều nhất của bạn và cũng tham gia vào cộng đồng Stack đặc biệt là để đánh giá mã.

Hãy thử Amazon.com, họ có đánh giá cuốn sách tốt.


3

Sách : Điều chính là đọc những cuốn sách (tốt) về ngôn ngữ bạn chọn. Khi bạn biết ngôn ngữ của mình, bạn có thể nhận được " X hiệu quả hơn " hoặc "Thực tiễn tốt nhất của Y", v.v. Tôi thấy sách dạy nấu ăn rất giỏi trong việc thu hẹp khoảng cách bạn có thể có. Vì vậy, tôi đoán rằng có ít nhất ba cuốn sách bạn cần để có được. Một điều: làm bài tập và mã kata để cải thiện sự hiểu biết của bạn về ngôn ngữ. Tất nhiên, bạn cần một mẫu xUnit tốt .

Các thuật toán là đặc biệt quan trọng và bạn nên chọn một cuốn sách chi tiết về chúng - một lần nữa, bằng ngôn ngữ bạn chọn. Các mẫu thiết kế và các mẫu chống có giá trị trong khi biết về bất kỳ ngôn ngữ nào.

Tóm lại: cần có thời gian. Đừng vội vàng.


+1, nhưng luôn lưu ý rằng chỉ có một quy tắc không có ngoại lệ: tất cả các quy tắc đều có ngoại lệ.
Jan Hudec

@JanHudec: Bạn đã nghĩ đến cái nào ở đây?
Sardathrion - Phục hồi Monica

3

Bạn hút mã hóa. Vâng.

Nhưng - điều này không có nghĩa là bạn không thể cung cấp phần mềm, điều đó khiến mọi người hài lòng;)

Khiêm tốn. Viết logic "kinh doanh"bạn cần. Sử dụng mã thư viện cho mọi thứ khác. Không cố gắng viết các thuật toán cơ bản (như sắp xếp mảng ), không sử dụng bất kỳ "thủ thuật ưa thích" nào, tuân theo một số quy ước mã hà khắc .

Sử dụng IDE tốt. Điều này rất cần thiết, vì nó sẽ giúp bạn định dạng mã và theo dõi lỗi chính tả / lỗi đơn giản.

Đọc những cuốn sách như " Hoàn thành mã " và " Lập trình viên thực dụng ", cố gắng ép buộc bản thân và học OOP (đơn giản và sẽ giúp bạn giữ mã của mình dễ bảo trì hơn).

Sử dụng SVN , cam kết thường xuyên, - vì vậy bạn sẽ có thể hoàn nguyên các thay đổi của mình (khi bạn sẽ phá hỏng thứ gì đó).

Tìm ai đó, một lập trình viên thực sự , với nền tảng học vấn, nếu có thể. Vì vậy, bạn sẽ có thể nói chuyện với anh ấy chia sẻ các vấn đề về người mới của bạn và nhận được câu trả lời khai sáng.

Và, tất nhiên, điều quan trọng nhất là cũng giữ mã hóa, mã hóa, mã hóa .


ps: nếu bạn có thể viết mã C ++ hoạt động và bạn viết các mạng thần kinh (!) - thì bộ não của bạn rất phù hợp để lập trình;) Chúc may mắn!


2

Có câu trả lời tốt ở đây.

Một vòng quay lớn có lợi cho bạn là thực tế đơn giản mà bạn muốn biết.

Dĩ nhiên, phần lớn công nghệ phần mềm (mà bạn nên thực hiện với sự hoài nghi lành mạnh) là về cách thực hiện theo cách mà bạn sẽ không hối hận về sau. Một ví dụ là việc sử dụng hệ thống kiểm soát phiên bản mã nguồn. Một cách khác là chia mã thành các tệp để dễ dàng làm việc trên nó hơn. Một cách khác là trở nên kiên định về sự ngăn nắp - định dạng mã và quy ước đặt tên. Các quy ước chính xác không quan trọng bằng việc nhất quán về nó.

Theo cách đó, khi bạn quay lại mã trong một năm hoặc hơn, bạn sẽ không nghĩ "Ai đã tạo ra mớ hỗn độn này?" Bạn sẽ có thể tìm thấy mọi thứ và thay đổi chúng mà không có quá nhiều nguy cơ bị vỡ. **

Một cách tốt để bắt đầu là tìm các chương trình ví dụ khác nhau và thực hiện chúng. Sau đó, bạn có thể thích ứng chúng với nhu cầu của bạn.

** Một trong những vấn đề đau đầu nhất của tôi là cố gắng làm việc với mã được viết bởi những người không nghĩ định dạng hoặc đặt tên là vấn đề.


1

Mặc dù có rất nhiều tài nguyên tốt về cách làm và không làm mọi thứ, nhưng cuối cùng, điều quan trọng nhất là nhìn thấy rất nhiều mã và làm việc với nó và xem việc duy trì nó dễ dàng hay phức tạp như thế nào.

Một cách tốt để học là có ai đó có kinh nghiệm để thực hiện thiết kế ban đầu và hơn là xem lại mã của bạn và cho bạn thấy các kỹ thuật hữu ích khi bạn sử dụng chúng. Vì vậy, nếu bạn có cơ hội thuyết phục sếp thuê ít nhất một kỹ sư phần mềm có kinh nghiệm trong các dự án phần mềm (nhỏ) và thiết kế phần mềm để lãnh đạo các dự án, tôi nghĩ đó sẽ là lựa chọn tốt nhất.

Nếu bạn không thể khiến bất cứ ai phải vùi dập bạn, thì ngày nay, phong trào nguồn mở mạnh mẽ. Có lẽ bạn sử dụng một số công cụ nguồn mở trong công việc của mình, vì vậy hãy cố gắng sửa các lỗi trong chúng hoặc thêm các tính năng đơn giản mà bạn đã sử dụng và thảo luận về cách thực hiện những điều đó với cộng đồng tương ứng. Đây là một bài tập học thực hành vô bổ để học cách áp dụng bất kỳ quy tắc chung nào bạn sẽ tìm thấy trong sách về các vấn đề thực tế thực tế.


0

Một điều tôi thực sự muốn giới thiệu cho việc học các mối quan tâm về mã hóa và kiến ​​trúc chất lượng sẽ là những lời dạy của "Chú Bob" (Robert Martin). Anh ta có một số video $ 1 có kích thước vừa phải, nếu có thể quá vô lý, cũng như một số cuốn sách hay.

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.