마이크로 소프트에서 하는 것처럼..( 우리도 해 BoA요..ㅡㅡ^ )

shavete의 이미지

여기 계시는 대부분이 마이크로 소프트에서 나오는 그 지도모양의 분야별 진로표(?)를 보신적이 있으리라 생각됩니다.

아무것도 모를 때 그 진로표를 보면서 참 여러분야가 있구나 하는 생각과 함께 어느 정도 이러이러 한 것이 필요하구나 하는 생각을 하게 되었습니다. 이러한 각양각색의 분야가 비단 마이크로 소프트 계열 엔지니어에게만 해당된다고 생각하지 않습니다. 오히려 KLDP BBS를 즐겨오시는 분들이 속한 분야가 훨씬 넓고 다양하다고 생각됩니다. 이제 갓 공부를 시작한 사람에서부터 이미 그 분야에서 이름이 널리 알려진 분까지 말입니다.

만약 다양한 분야에 계신 분들이 자신의 분야에서 일을 하기 위해 이러이러한 공부를 했으며, 이러이러한 과정을 어찌어찌 겪었다 라는 식으로 모으다 모으다 보면 굉장한 진로표( 거슬리네..진로표..ㅎㅎ 마땅한 게 없어서..^^ )가 만들어지지 않을까요? 분명 이제 막 KLDP를 알게 된 사람은 물론이고, 오늘 밤에 리눅스 커널을 처음으로 컴파일해 본 사람들까지 큰 도움이 될 것이라 생각됩니다. 일단 제가 좀 궁금합니다. :oops: ㅎㅎㅎㅎ;;

File attachments: 
첨부파일 크기
Image icon 제목 없음.jpg1.71 MB
PDF icon net_developerroadmap.pdf306.74 KB
hey의 이미지

진로표 하나 보여주세요. :]
보면서 같이 따라 그려보면 재밌을 것 같네요. 말씀처럼 KLDP에는 다양한 분야에서 일하시는 분이 계시니, 어떤 경로로 그 일을 하게 되셨는지 그림으로 보면 좋겠네요.


----------------------------
May the F/OSS be with you..


ihavnoid의 이미지

음.... 제가 그림은 잘 못그려서 뭐라 하기는 뭣하지만....
그리고 워낙에 중구난방식으로 배워서 이게 좋은 거라고 꼭 생각하지는 않지만요...

저의 경우에는, java부터 시작했습니다. java로 메신저를 만들어보겠노라 해서, 결국 SQL을 손대고(jdbc), applet을 손대고, socket으로 통신하는 짓거리까지 해봤었습니다...

그다음에는 서블릿이었습니다... 게시판을 하나 짰었죠... web template engine 같은 것을 인터넷에서 찾아서, 그걸 이용해서 스킨을 디자인하도록 했고, 그걸 MySQL에 연동해서 돌리는 짓을 했습니다..... 나름대로 최적화한다고 자주 이용되는 쿼리(가령, 첫화면 글목록, 상위 몇개 글 등등)의 내용은 캐쉬에 저장해놓는 등, 그런 짓도 했습니다.

그담에는 엉뚱하게 C를 했습니다. 임베디드장비에 들어가는 C 코드를 짰었는데요..... 알바하던 회사가 그 사업을 접는 바람에 코드는 쓰레기가 되었지만, java에서 프로그래밍이라는 것의 개념에 대하여 파악을 하게 되니 그래도 괜찮더군요. 포인터 때문에 좀 골치를 썩어서 그렇지.

그런 식으로 계속 임베디드장비를 다뤄왔습니다. 학교 수업에서 8051이랑 ARM7이랑 다루면서 하드웨어 제어도 하고, 한 7000라인쯤 되는 애플리케이션도 짜서 올리고 뭐 그랬씁니다. 그러면서 수업시간에는 자료구조, 알고리즘, OS, 컴파일러 등등, 계속 "기본기"를 키웠고요......

요즘은 UNIX상에서 C 프로그래밍합니다. 컴파일러 비스무리한 것을 갖고 꼼지락거리는 짓을 합니다.
(네. 저 대학원생입니다.)

리눅스라는 면에서는, 처음에는 게시판과 메신저를 돌리기 위해서 레드햇6.x에 jdk랑 MySQL 올리고, tomcat 설치하는 게 가장 큰 일이었습니다. 특히 tomcat은 설치가 극악이었습니다... -_-; 요즘은 어떨라나 모르겠군요. java 프로그래밍을 해본지가 어언 3년쯤 되어서요.

그담에는 리눅스 커널 만지기 (임베디드장비알바), root filesystem 패키징하기(역시 임베디드장비), 뭐 그런 짓들을 했습니다. 지금은 그냥 제가 작업하는 서버 어드민 하는 정도입니다. 메일서버랑 웹서버랑 뭐 그런 것들도 좀 굴리고요.

요약하면, "개발" 내지는 "언어"라고 하면, 일단은 "배우기 쉬운 언어 하나"에서 출발해야 한다고 봅니다. 많은 사람들이 python을 얘기하고(전 python은 안해봤지만...), 제 경우에는 java였지만, 어느쪽이든 출발점으로는 적당하다고 생각합니다. C를 주장하시는 분들도 꽤 되지만, 제 생각에는 C는 computer architecture에 대한 어느정도 이해가 없고서는 명쾌하게 이해가 안될꺼라 생각됩니다.

그담에는, 다른 언어로 옮겨가기보다, 그 언어에서 해볼 수 있는 뭔가를 해보는 것이 필요하다고 봅니다. language를 배우기보다, software design이라는 것을 배우는 것이 필요하다는 것이죠. 어떤 API를 이용하는지를 막론하고, 'API란 이런 것이고, documentation을 이렇게 이해해야 한다' 는 것도 깨달을 수 있게 해줘야죠. 인터페이스가 단순하고, 기본 시스템 이해가 쉬운 경우를 해보는 게 좋겠죠? 가령, 처음 하는 사람보고 EJB를 써서 뭘 해보라고 하면....화낼껍니다-_- UNIX 기본 file IO라던지, Java의 소켓 정도가 괜찮은 출발점이 아닐까 싶네요.

그다음에 언어를 하나씩 배우고, 자료구조나 알고리즘에 대한 것들을 배우고, OS에 대한 것들을 배우는 것이 필요하다고 봅니다. 여기서 OS라는 것은, 단순히 대학교 교과과정에서 배우는 그런 OS 말고, 정말 '실전에서 쓰이는 OS의 API와 시스템 구조' 를 이해하라는 것이죠.

그다음에는 computer architecture, 즉 instruction set이 어떤 식으로 구성되며, 이런 것들이 어떻게 컴퓨터상에서 이용되며, 그런 시스템이 어떤 (논리적) 구조를 갖고 있는지를 배우는 것이라 생각합니다. 어쩌면 어셈 코딩을 이 앞쪽(high level language 배우기 전)에 했었더라면 이런 과정이 생략되었을지도 모르지만, 요즘 어셈을 먼저 배우는 사람은 없는 것 같으니 나중에라도 이런 것들에 대해 배워야겠죠.

그담에는 이리저리 응용이 아닐까요. 필요한 것들이 있을때 중간중간마다 곁가지 달아놓는 것이죠.

저는 말 그대로 '필요하면 배운다' 였습니다.
Windows application을 짜야되게 되어서 MFC를 배우게 되었고, 홈페이지를 만들고 싶어져서 php와 javascript를 배우게 되었고, 원래 있던 코드가 다 legacy C인데 거기에 덧붙여서 뭘 만들어야 되어서 Unix에서 C를 이용한 프로그래밍을 배웠습니다.

리눅스도 비슷한 형태로 배웠죠. 메신저를 돌리기 위해서 MySQL서버와 그런 류의 것들을 관리하는 것을 배웠고, Linux From Scratch 같은 것들도 필요해서 하나씩 해보게 되었고, 커널 뜯어고치는 것도 돈을 벌기 위해서 배우다보니 하게 된 셈이죠.

모르겠어요. 진로표가 가능할지.
간단한, 아주 간단한 뼈대만 만들어놓고, 수많은 곁가지들을 놔둬야 하는 것이 아닐까 싶네요.

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

shavete의 이미지

마땅히 떠오르는 검색어가 없어서.. 한참이나 해멨어요..ㅡㅡ^

얼마나 안 떠올랐으믄 진로표라고 했을까? ㅎㅎㅎㅎ

앞에 그림은 젤 그림스러운 부분만 따다 올린거구요..

관련책( 결국 책 광고이긴 하지만..ㅎㅎ )들두 있고...

댓글 첨부 파일: 
첨부파일 크기
PDF icon 0바이트

a~~hahaha

Prentice의 이미지

위 그림을 256색 png로 전환하면 크기를 꽤 줄일 수 있습니다. (김프에서 dither 없이 만들면 500kb대로 줄일 수 있어요.)