코딩과 진로에 대해서

코딤맨의 이미지

1. 풀그램 코딩을 하면서 늘 생각합니다. 내가 정석으로 하고 있는가?

먼저 정석을 배우고 자기만의 응용을 하는게 좋다고 생각합니다.

코딩할때 지침이 되는 정석같은 책(원서포함 - 코딩할때 짜파게티 코딩에 빠지지 않도록 코딩하는 방법등, 코딩을 전문적으로 다루는 책을 찾고 있습니다
) 정보공유 부탁드립니다.(C언어, C++)
if 없다면 잘 짜여진 코딩을 보고 습관화 시켜야 되냐여?

2. 전 소프트웨어, 하드웨어쪽 계열에 깊이 공부하고 싶습니다.

하드웨어를 공부하기 위해서는 어떤 것들을 공부해야 되나여?

제 생각에는 C, 어셈, 반도체등이 있다고 생각하는데 고수님들께 가르침 부탁드립니다.

(책과 사이트 위주로 가르침을 주시길 부탁드립니다.)

3. 보안 프로그래머가 되고 싶습니다.

보안쪽에서 일하시는 분들 있으시면 한 수 가르침을 부탁드립니다.

어떤 공부를 해야하며, 자격증 및 이 계통에 진출하기 위해서는 어떻게 해야 되나여?

4. 실무에 계신 분들은 소프트웨어 공학에 입각해서 요구사항명세서, 상태변화도 등 각종 문서를 만들고 설계, 및 구현(코딩), 유지,보수를 하나여?

질문이 너무 광범위 하다고 생각되지만, 실력있으신 고수분들의 한 수 가르침 부탁드립니다.

errai의 이미지

1.
너무 많은 좋은 책들이 있어서 어떤 책부터 권해야 할 지 모르겟습니다.
간단하게 검색만 해봐도 무수히 쏳아 집니다.

2.
소프트웨어 쪽 하드웨어쪽 하면.. IT계열 전부 다를 이야기 하는 건가요? ^^
지금 어떤 일을 하고 계신지 모르겠지만, 너무 광범위 해서 대답하기가
어렵습니다.

3.
보안프로그래머라고 해서 일반 프로그래머와 다른 것은 없습니다.
네트워크보안에 관련된 프로그램을 짜려면 네트워크를 잘 알아야 겠지요.
TCP/IP 등등. 시스템보안 관련이라면 여러 OS등을 접해야 할 것이구요.
암호학 쪽으로 들어가면 또 광범위 해 집니다. 딱히 어떤 공부만 하면 된다는
것도 없습니다.

4.
예. 그렇습니다. 문서화 라는게 무척 필요하고 중요하다고 생각됩니다.
설계하고 기본 문서작성하는데만 2개월이상 걸린적도 있습니다.

seed의 이미지

1.
자신있게 코딩하세요.
처음부터 잘 할순 없죠.
틀리면 어때요?
여러번의 시행착오끝에 자신만의 스타일이 나오고...
다른사람코드보면서 하나하나 새로운 깨달음을 얻고...
다 그런거죠..뭐...
:wink:

지리즈의 이미지

정석을 원하시면 학원에 다니십시오...

전에 학원 출신 프로그래머의 코드를 보았는데(여성분),
교과서(좋은 의미로)그 자체더군요...

주석이 하나도 필요가 없었습니다.
코드 자체로 주석이더군요..
너무나도 간결하고 가독성이 뛰어난 코드...

불필요하게 복잡해질 알고리듬을 일차에 고민도 없이
간결하게 해석해 놓은 그 구문들...
또한 코드 전반에 흐르는 완벽한 일관성....

학원에서 창조적인 면을 가르쳐 주지는 않겠지만(이건 90%개인역량),
체계적인 코딩을 위한 기반은 확실히 닦아주는 것 같더군요...

스파게티 코드를 피하려면, 이런 기반과 함께...
분석과 디자인에 대한 안목도 필요합니다만,
이 둘은 공부만으로는 해결안되지 않나 봅니다.
물론 좋은 책들이 지침이 되기는 하지만, 경험이 필수불가결...
항상 고민하는 자세로... 쉽게 쉽게가 아니라,
함수 인자결정에도 10분이상을 고민할 수 있는 자세가 필요하지 않는가 봅니다.

그리고 리눅스 커널 소스 분석 만큼 하드웨어, 보안, 일관성있는 코딩에 대한
노하후 축적에 좋은 것은 드물다고 봅니다.

커널 소스를 처음부터 어려운 것 부터 보지 않고,
쉬운 것 부터 접근해 가세요... 물론 방대한 양이지만,
한 반년정도 투자해서 하루에 서너시간씩 읽어볼 가치가 있는 내용들입니다.
문서들도 많구요...(다 영어기는 하지만...)

There is no spoon. Neo from the Matrix 1999.

ihavnoid의 이미지

1. 사실 코딩의 정석은 잘 모르겠고요...
저같은 경우에는 다른 사람들이 짠 코드에서 많이 배웁니다.
가령, linux 커널코드라던지, 등등....

코드가 항상 깔끔한것은 아니지만... 대체로 많이 배우게 됩니다...
사실 performance와 readibility가 조화되는 것은 참 힘들다고 하더군요.. -_-;; 저도 잘은 모르지만....

어느정도 OS에 관한 기본지식이 있으시다면, linux kernel도 괜찮습니다.
linux kernel 코드가 너무 크다고 생각되시면, 일단 작은 코드부터 읽어 보시기 바랍니다.

음.. 사실 아는바가 별루 없어서 1번정도밖에 얘기를 못 해 드리겠군요-0-

Consider the ravens: for they neither sow nor reap; which neither have storehouse nor barn; and God feedeth them: how much more are ye better than the fowls?
Luke 12:24

eyefree의 이미지

1. 제 생각에는 자료구조/알고리즘 책을 보는 것이 가장 좋다고 생각합니다.

커널소스는 좋기는 한데, 커널의 메커니즘도 알아야 하고, 매크로나 최적화된 소스를 봐야 하는 반면,

알고리즘이나 자료구조는 설명이 잘된 책들도 많고, 코드 자체도 세련되게 나오는 경우가 많아서

공부하는데 좋다고 생각합니다. (하지만 커널 소스 분석은 참 좋은 경험이죠. ^^)

추천하고 싶은 책으로는...

1) Data Structures via C++ (C++로 자료구조를 구현하고 template로 일반화)

2) C로 배우는 알고리즘 상/하 (C로 자료구조/알고리즘 구현, 한국인 저자(이재규)가 쓴 책으로 이해가 쉬움)

정도가 됩니다.

2. 컴퓨터 아키텍처 쪽을 보심이 좋을 듯 하네요. CPU위에서 돌아가는 걸 파악하게 되면,

어셈이든 C든지간에 이해가 훨씬 쉬우리라 생각이 듭니다.

3. 흠... 보안은 저도.. ^^;;

4. 음... 저뿐만 아니라 대개 그런 문서를 만들지는 않는 듯 하구요. ^^;; 그냥 나름대로 백지 위에 구상하고, 조금 정성들이면 비지오로

그림그리고, 정말 부지런하면 래셔널 로즈로 UML 다이어그램 그리고 분석하는 정도인듯 하네요.

저는 그냥 종이위에 구상하고, 문서는 doxygen으로 자동생성하는 편이랍니니다. 나중에 docbook으로 웹 문서 만들고, latex으로 pdf문서

만들기도 하구요. (이렇게 하는 경우는 별로 없더군요. ^^;;)

... Do It Now!!!

김충길의 이미지

3. 보안은 시스템 보안, 네트웍 보안으로 나눠 볼 수 있고요. 암호쪽은 별개로
볼 수 있습니다. 암호는 독립적으로 쓰이기 보다는 시스템 보안, 네트웍 보안의
기반(infra)형태로 말입니다. 그래서 각각 독립적으로 아는건 크게 도움이 되지
않은거 같습니다(제 주관입니다).

시스템 보안은 운영체제나, 프로그램밍언어 대한 높은 지식이 요구되고요
네트웍 보안은 네트웍 프로토콜에 대한 많은 지식이 요구됩니다.
암호쪽은 두가지 부류로 나뉘는거 같습니다. 단지 암호를 이용하는 부류와
그 이용하는 부류를 위해 알고리즘을 만드는 부류. 첫번째 경우 약간의
암호학적 지식만 요구하고 두번째 부류는 수학적인 지식(주로 정수론)이
상당히 요구됩니다.

일단 원하는 분야가 어떤 쪽인지를 쉽게 판단할 수 있는 방법으로
만약 보안OS나 백신쪽에 관심이 있다면 시스템보안에 가깝습니다.
IDS, IPS, 방화벽쪽이라면 네트웍 보안쪽.
PKI쪽이라면 암호쪽 분야라고 보시면 됩니다.

진출경로는 요즘은 보안쪽으로 학과가 있습니다. 정보보호대학원.
저기가면 왠만한건 다 배우는거 같습니다. 학부과정에서
하는게 있는지는 잘 모르겠네요.

유명한 자격증으로는 CISA, CISSP등이 있는데 이것들은 경력이
많이 요구되는 자격증입니다. 그리고 대부분 관리자쪽이라고 보면
됩니다. 저거 따고 프로그래머로 남을 사람이 있을지.. 그리고 저거
따는데 프로그래밍적인 지식은 필요없고요 IT쪽 지식만.. 이 두 자격증은
경력이 5-6년된 분들이 많이 따는거 같습니다. 그리고 과장급 이상들이
도전을 많이 한다는...

이쪽으로 가신다면 정보보호대학원을 생각해보시는게 좋을겁니다.
보안업체쪽에서 필요로하는 인력은 좀 약간 다른듯 한데요..
아직까진 우리나라에서는 프로그래밍 능력을 더 우선시 하는거
같습니다.

도움이 되었나 모르겠군요.. 횡설수설한거 같은 느낌..

screen + vim + ctags 좋아요~

sandro의 이미지

위에 분들의 말씀처럼 하시면서 다음 처럼 해보세요

1번 : C++를 잘하시려면 C++의 master들의 article을 읽으시면서
테크닉을 공부합니다. 그 다음 기존의 자신의 코딩 스타일에 접목 시킵니다. 그러면 자신의 코딩 스타일이 변할겁니다.

책들로는 Addison Wesley의 C++ In-Depth를 추천합니다.

2번 : 저도 잘 답변을 못하겠네요.

3번 : 보안도 분류하면 종류가 많습니다. 먼저 자신이 관심있어하는 보안 분야를 결정하시면 그것에 맞는 공부할 꺼리들이 생기지 않을까요?

4번 : 솔직히 말해 그런 곳은 거의 못봤습니다. 제가 다니는 회사도 그런 시도를 많이 하지만 솔직하게 말하면 그런 시간 있으면 내 여가시간을 갖겠다는 생각만 합니다. --

無心