무의식적으로 프로그래머가되는 방법 : 올바르게하는 방법? [닫은]


21

내 배경은 전기 공학, DSP가 더 정확합니다. 내가 현재 일하는 회사는 주로 아날로그 하드웨어를 구축하는 다양한 프로젝트를 수행합니다. 나는 주변의 다른 사람들보다 컴퓨터에 더 가깝기 때문에 임베디드 장치 (완전히 괜찮은 곳)와 Windows 또는 Linux OS 모두에 대한 코드를 작성하는 경우가 많습니다. 나에게 외국 영토는 후자이다.

코딩이 가능하고 몇 가지 언어 (C / C ++, Java, 일부 VB.NET)를 알고 있지만 신호 및 이미지 처리, 신경망 및 기타 유사한 응용 프로그램의 알고리즘 시뮬레이션에만 사용했습니다. 저에게 프로그래밍은 다른 어떤 것보다 계산 도구였습니다. 그러나, 나는 본격적인 소프트웨어를 작성해야하는 점점 더 많은 프로젝트를 겪어 왔으며, 그럴 필요가 없었기 때문에 어떻게해야하는지 전혀 몰랐으며, 실제로는 전혀 관심이 없었습니다. 나는 직업 요구로 인해 어느 정도의 코더로 변환 된 엔지니어를 많이 보았으며 대부분의 엔지니어는 자신이 한 일에 그리 훌륭하지 않았습니다. 많은 사람들이 같은 경험을했다고 확신합니다.

좋은 사용자 인터페이스, 우수한 내부 아키텍처 등을 갖춘 적절한 소프트웨어 작성을 배우려면 어떻게해야합니까? 우리에게는 좋은 습관과 무엇이 아닌지 말해 줄 수있는 사람이 없습니다. 단어의 가장 순수한 의미로 코드 를 작성할 수 있다는 것을 감안할 때 , 좋은 소프트웨어를 작성하는 방법과 내가 직접 얻는 방법은 무엇입니까?


당신이 우리에게 당신이 사용하는 언어를 알려 주면, 우리는 당신에게 더 깊이있는 답변을 줄 수 있습니다. 다시 말하지만, 그것은 일반적인 대답의 요점을 부정합니다.
Sardathrion-복원 모니카

2
공식적인 교육이나 멘토와의 직접적인 업무 경험이 없다면 Right Way ™ 는 현실적이지 않습니다. 당신은 배우고 있습니다. 컴퓨터 공학과 공학이 전기 공학과 분리되는 이유가 있습니다. 제정신 회사는 소프트웨어 엔지니어를 고용하여 응용 프로그램 인터페이스, 응용 프로그램 드라이버 및 펌웨어를 작성합니다. 품질을 원하고 올바르게 수행하고 유지 관리하기를 원하기 때문입니다. 나는 당신이하고있는 일이 당신의 전문 지식의 범위를 약간 넘어서고 이러한 작업은 소프트웨어 엔지니어에게 맡겨야한다고 설명합니다.
maple_shaft

4
... 제목에 언급 한 것처럼 귀하의 상황이 "무의식적"이라고 생각하지 않도록 추가하고 싶습니다. 당신은 동료들이 컴퓨터를 사용하는 방법조차 모른다고 스스로에게 말했지만, 비자발적으로 소프트웨어 엔지니어가되어야합니까? 그다지 공정하지 않은 것 같습니다. 나는 당신이 통과 할 수있는 소프트웨어를 작성하는 능력과 올바른 방법으로 배우고 일하고자하는 당신의 욕구를 칭찬하지만, 어떤 것이 당신의 능력에 있지 않다는 것을 상사 나 자신에게 인정하는 것은 부끄러운 일이 아닙니다. 그들이 당신을이 역할에 배치하는 것에 대해 진지한 경우, 당신을 위해 훈련에 지출하도록 요청하십시오.
maple_shaft

@maple_shaft 나는 당신이 말하는 대부분의 것에 동의합니다; 그러나 나는 동료들이 컴퓨터를 사용하는 방법을 모른다고 말한 적이 없다. 그들 중 누구도 나를 침식시킬 수있는 소프트웨어 엔지니어는 아니지만 컴퓨터를 능숙하게 다룰 수는 없습니다. 나는 코딩을하는 데 아무런 문제가없고, 새로운 것을 배우는 것을 좋아하며, 그것을하는 데 실제로 문제가 없습니다.
Phonon

6
@Phonon Great, 그것은 좋은 태도이지만, 회사가 당신에게 책, 교육 과정을 사도록하고 그들이 그 역할을하기를 원하는지 배울 시간을 주어야합니다. 그것이 내가 말하는 전부입니다. 그래서 많은 회사들이 이러한 것들을 스스로 구매하는 것이 당신의 책임임을 설득하여 당신을 속이려고 할 것입니다.
maple_shaft

답변:


11

많은 도움이 될 책이 몇 권 있습니다. 나는 항상 당신 옆에 Code Complete 를 두는 것이 좋습니다 . 귀중한 참조입니다. 내가 일했던 이전 회사에서 이것은 우리가 고용 된 후 모든 주니어 프로그래머에게 준 책이기도했습니다.

Pragmatic Programmer 는 매우 유용한 자료이며 꽤 짧지 만 Code Complete 후에 읽은 것이 좋습니다.

이 책은 시작, 코드, 코드, 코드 및 코드 등을 제공하지만 중지해야 할 시점을 알고 있으면 소프트웨어가 완벽하지 않습니다.


6

우리 회사는 항상이 일을하고 ...

"저는 소프트웨어 개발자입니다. 어떻게 EE가 되나요?"

글쎄, 나는 그 대답이 매우 분명하다고 생각합니다. 많은 시간과 노력이 필요합니다. 물론 올바른 학습 자료. 공학 배경은 우리 대학에서 CS와 공학 학교가 같은 건물에 많이 겹치는 데 도움이됩니다. 알고리즘과 수학 기초가 있습니다.

내가 대부분의 새로운 이민자들이 저지르는 실수는 그들이 씹을 수있는 것보다 더 많이 물지 않는 것입니다. A의 UI, 아키텍처, 품질 코드 ...에서 재료 학습 지상의 많은 . 실제로 몇 년이 걸리고 종종 소프트웨어 회사의 다른 전문가 팀이 수행합니다.

당신이 시간을 내면, 당신은 당신 자신에 꽤 괜찮다고 말할 수 없습니다. 자료의 크기를 인식하기 만하면 자신을 압도하지 않아도됩니다 . A. Quit 또는 B. 학습 과정에서 주요 지름길을 사용하여 앱에 주요 기술적 부채를 쌓으십시오.

이 모든 것 때문에,이 책을 가지고 "모두"가 멋진 개발자가되지는 않습니다. 가장 많이 사용하는 언어로 등급이 매겨진 책을 고르고 특히 코드 검토를 위해 스택 커뮤니티에 참여하는 것이 좋습니다.

Amazon.com을 사용해보십시오. 좋은 서평이 있습니다.


3

: 가장 중요한 것은 선택한 언어로 (좋은) 책을 읽는 것입니다. 선택한 언어를 알고 나면 " 보다 효과적인 X"또는 "Y 모범 사례"등을 얻을 수 있습니다. 나는 요리 책이 당신이 가질 수있는 격차를 해소하는 데 매우 능숙하다고 생각합니다. 그래서 나는 그것이 당신이 얻을 필요가있는 최소한 3 권의 책이라고 생각합니다. 한 가지 : 언어에 대한 이해를 높이기 위해 연습과 코드 카타를 수행하십시오. 물론 좋은 xUnit 패턴 이 필요합니다 .

알고리즘은 특히 중요하므로 선택한 언어로 다시 자세히 설명하는 책을 선택해야합니다. 디자인 패턴안티 패턴 은 어떤 언어로든 알고 있지만 가치가 있습니다.

결론 : 시간이 걸립니다. 서두르지 마.


+1이지만 항상 하나의 규칙에는 예외가 없습니다. 모든 규칙에는 예외가 있습니다.
Jan Hudec

@JanHudec : 여기 어느 것을 염두에 두셨습니까?
Sardathrion-복직 모니카

3

당신은 코딩을 빨아 먹는다. 예.

그러나-이것이 소프트웨어를 제공 할 수 없다는 것을 의미하지는 않습니다.

겸손하라. 쓰기 "비즈니스" 있다는 논리를 당신이 필요합니다. 다른 모든 것에는 라이브러리 코드를 사용하십시오. 기본 알고리즘 ( 배열 정렬 과 같은 )을 작성하지 말고, "팬시 트릭"을 사용하지 말고, 드라코 니안 코드 컨벤션을 고수하십시오 .

좋은 IDE를 사용하십시오. 코드를 형식화하고 오타 / 간단한 실수를 추적하는 데 도움이되므로 필수입니다.

" Code Complete "및 " Prammatic Programmer "와 같은 책을 읽고 자신을 강요하고 OOP를 배우십시오 (간단하며 코드를보다 유지 관리하기 쉽게 도와줍니다).

SVN을 사용하고 자주 커밋하면 변경 사항을 되돌릴 수 있습니다 (무언가를 파기 할 때).

가능한 경우 학문적 배경을 가진 실제 프로그래머 인 사람을 찾으십시오 . 그래서 당신은 그와 함께 당신의 초보자 문제를 공유하고 깨달은 답변을 얻을 수 있습니다.

물론 가장 중요한 것은 코딩, 코딩, 코딩을 유지하는 것입니다 .


추신 : 작동하는 C ++ 코드를 작성할 수 있고 신경망 (!)을 쓰면 두뇌가 프로그래밍에 적합합니다.) 행운을 빕니다!


2

여기에 좋은 답변이 있습니다.

유리한 점은 당신이 알고 싶어하는 간단한 사실입니다.

대부분의 소프트웨어 엔지니어링 (물론 건전한 회의론을 가져야 함)은 나중에 후회하지 않을 방법으로하는 방법에 관한 것입니다. 한 가지 예는 소스 코드 버전 제어 시스템을 사용하는 것입니다. 다른 하나는 코드를 파일로 나누므로 부분적으로 작업하기가 더 쉽습니다. 또 다른 하나는 규칙 성, 코드 형식 및 명명 규칙에 대한 고집 입니다. 정확한 규칙은 일관성을 유지하는 것만 큼 중요하지 않습니다.

이런 식으로 1 년 이상 코드로 돌아 오면 "누가이 엉망을 만들었 을까?"라고 생각하지 않을 것입니다. 파손의 위험이없이 물건을 찾고 변경할 수 있습니다. **

시작하는 좋은 방법은 다양한 예제 프로그램을 찾아서 작업하는 것입니다. 그런 다음 필요에 맞게 조정할 수 있습니다.

** 가장 큰 골칫거리 중 하나는 형식이나 이름이 중요하지 않다고 생각하는 사람들이 작성한 코드로 작업하는 것입니다.


1

일을하고하지 않는 방법에 대한 많은 좋은 자료가 있지만, 결국 가장 중요한 것은 많은 코드를보고 작업하고 자신을 위해 유지하는 것이 얼마나 쉽고 복잡한지를 보는 것입니다.

배우는 좋은 방법은 누군가가 초기 디자인을 경험하고 코드를 검토하고 유용한 기술을 보여주는 것보다 경험을 쌓는 것입니다. 따라서 만약 당신이 우연히 (소규모) 소프트웨어 프로젝트와 프로젝트를 이끌 소프트웨어를 설계 한 경험이있는 최소한 한 명의 소프트웨어 엔지니어를 고용하도록 상사들을 설득 할 수 있다면 최선의 선택이라고 생각합니다.

소파에 앉을 사람이 없다면 요즘 강력한 오픈 소스 운동이 있습니다. 직장에서 일부 오픈 소스 도구를 사용하고있을 수 있으므로 버그를 수정하거나 사용하는 간단한 기능을 추가하고 각 커뮤니티에서 해당 작업을 수행하는 방법에 대해 논의하십시오. 실제 실제 문제에 관한 책에서 찾을 수있는 일반적인 규칙을 적용하는 방법을 배우는 것은 비현실적인 학습 연습입니다.


0

양질의 코딩 및 아키텍처 문제를 배우기 위해 정말로 권장하는 것은 "Uncle Bob"(Robert Martin)의 가르침입니다. 그는 너무 기발한 경우, 좋은 책뿐만 아니라 한입 크기의 1 달러짜리 비디오 를 보유 하고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.