2009년 05월 20일
내가 이래서 개발일 하기 싫어 -_-
우리나라의 컴공 교육에 대한 생각이 들게 하는 면접
나 대학때 C 아주 처참하게 낙제했었다. 물론 연애하느라고 정신없어서 클래스 다 쨌던 이유도 있긴 하지만, 시험 전날 C 의 포인터는 그야말로 난공불락 ㅅㅂ 아돈노 장벽이었다. 아직도 잘 모른다 ㅋㅋ 내가 한 언어는 파이썬, 자바, 펄 등이고, 그것도 그냥 유저 혹은 코더 레벨이지 내가 정식으로 프로그래밍 공부한 적도 없고, 까라면 까다보니 배운 거라 뭐.
저 문제 보고 나서 또 느꼈다. 내 다시 태어나면 꼭 C 제대로 공부해보리. 포인터란 말만 나오면 소름이 쭉 돋으니 살겠나.
신랑님은 개발자가 아니다. 펄을 주로 쓰긴 하지만 인프라 엔지니어가 정식 직함이고 제대로 된 개발 일 해본 적 없다. C 도 잘 모른다. 근데 저거 해보라고 시키니까 하네 ㅜㅜ (하지만 대학때 전공이 컴싸였으니까 그렇다고 넘어가자. 대학땐 C 잠깐 했었다니까.
신랑이 문제 내니까 잠깐 생각하더니 쭉 타이프 친 거:
void reverse(char* str)
{
char holder;
size_t a,b;
a=0;
b=strlen(str);
b = (b == 0) ? 0 : b-1;
while (a<b) {
holder = str[a];
str[a] = str[b];
str[b] = holder;
a++; b--;
}
}
int main()
{
char str[] = "abcde";
reverse(str);
printf("%s\n", str);
}
나 같으면 파이썬 스트링 라이브러리 찾거나, 걍 맨 끝에서부터 pop() 하면서 새로운 스트링에 집어넣는 그런 공략을 -_;;
글구 본문에서 문제 낸 거에 대한 답 보더니 (지원자가 냈다는 답) 원글 쓰신 분과 비슷한 반응을 보인다. 이건 뭐 기본적인 개념이 탑재 안 되어 있어서 어케 수습이 안 된다고, 저런 애를 어케 고용하겠냐고. 나처럼 C 잘 알지도 못하는 사람이 개념없는 거 딱 눈치챌 정도면 심각하다고.
아아. 콕콕 찔린다. 나 그런 것도 못하는데 -_; 나 그래서 개발 일 안한다고 때려친 거라고 ㅠ.ㅠ 기본도 없는 양파 아흑.
글치만, 좀 변명을 하자면 -
난 내가 할 줄 아는 언어도 사실 깊이 있는 건 모른다. 그냥 시키는 대로 이거 하라고 하면 그거 하는 정도이다. 코드 깨끗하게, 최대한 효율적으로, (내가 아는 한에서) 한다. 그러나 워낙 기초가 부족해서 모자람 참 많이 느낀다. 그렇지만, 있는 코드 보고 시스템이 어케 돌아가는 건지 이해한 다음, 지시사항 내려온 거 보고 아 일케일케일케 하면 되겠구나 계획하고 그대로 실행하는 건 그럭저럭 잘 한다. 내가 모르는 게 뭔지 잘 알기 땜에 그거 물어보고 딱 일 할 만큼 알아내어서 일 끝낸다. 내가 워낙 실력이 없다고 생각하기 때문에 (...생각하는게 아니라 사실이 글타 ㅋㅋ) 고치라고 하면 바로 고치고, 이런 저런 제안을 하면 그것도 아무런 거부감 없이 따라가는 편이다. 이건 장점이라고 생각한다. 실력 없는게 꼬장까지 부리면 어쩌겠는가.
결론: 이따구로 실력없는 나도 10년째 이 바닥에서 입에 풀칠하고 있다. 저 글 보고 뜨끔하셨던 분들, 저랑 같이 손잡고 홧팅 한번 합시다.
나 대학때 C 아주 처참하게 낙제했었다. 물론 연애하느라고 정신없어서 클래스 다 쨌던 이유도 있긴 하지만, 시험 전날 C 의 포인터는 그야말로 난공불락 ㅅㅂ 아돈노 장벽이었다. 아직도 잘 모른다 ㅋㅋ 내가 한 언어는 파이썬, 자바, 펄 등이고, 그것도 그냥 유저 혹은 코더 레벨이지 내가 정식으로 프로그래밍 공부한 적도 없고, 까라면 까다보니 배운 거라 뭐.
저 문제 보고 나서 또 느꼈다. 내 다시 태어나면 꼭 C 제대로 공부해보리. 포인터란 말만 나오면 소름이 쭉 돋으니 살겠나.
신랑님은 개발자가 아니다. 펄을 주로 쓰긴 하지만 인프라 엔지니어가 정식 직함이고 제대로 된 개발 일 해본 적 없다. C 도 잘 모른다. 근데 저거 해보라고 시키니까 하네 ㅜㅜ (하지만 대학때 전공이 컴싸였으니까 그렇다고 넘어가자. 대학땐 C 잠깐 했었다니까.
신랑이 문제 내니까 잠깐 생각하더니 쭉 타이프 친 거:
void reverse(char* str)
{
char holder;
size_t a,b;
a=0;
b=strlen(str);
b = (b == 0) ? 0 : b-1;
while (a<b) {
holder = str[a];
str[a] = str[b];
str[b] = holder;
a++; b--;
}
}
int main()
{
char str[] = "abcde";
reverse(str);
printf("%s\n", str);
}
나 같으면 파이썬 스트링 라이브러리 찾거나, 걍 맨 끝에서부터 pop() 하면서 새로운 스트링에 집어넣는 그런 공략을 -_;;
글구 본문에서 문제 낸 거에 대한 답 보더니 (지원자가 냈다는 답) 원글 쓰신 분과 비슷한 반응을 보인다. 이건 뭐 기본적인 개념이 탑재 안 되어 있어서 어케 수습이 안 된다고, 저런 애를 어케 고용하겠냐고. 나처럼 C 잘 알지도 못하는 사람이 개념없는 거 딱 눈치챌 정도면 심각하다고.
아아. 콕콕 찔린다. 나 그런 것도 못하는데 -_; 나 그래서 개발 일 안한다고 때려친 거라고 ㅠ.ㅠ 기본도 없는 양파 아흑.
글치만, 좀 변명을 하자면 -
난 내가 할 줄 아는 언어도 사실 깊이 있는 건 모른다. 그냥 시키는 대로 이거 하라고 하면 그거 하는 정도이다. 코드 깨끗하게, 최대한 효율적으로, (내가 아는 한에서) 한다. 그러나 워낙 기초가 부족해서 모자람 참 많이 느낀다. 그렇지만, 있는 코드 보고 시스템이 어케 돌아가는 건지 이해한 다음, 지시사항 내려온 거 보고 아 일케일케일케 하면 되겠구나 계획하고 그대로 실행하는 건 그럭저럭 잘 한다. 내가 모르는 게 뭔지 잘 알기 땜에 그거 물어보고 딱 일 할 만큼 알아내어서 일 끝낸다. 내가 워낙 실력이 없다고 생각하기 때문에 (...생각하는게 아니라 사실이 글타 ㅋㅋ) 고치라고 하면 바로 고치고, 이런 저런 제안을 하면 그것도 아무런 거부감 없이 따라가는 편이다. 이건 장점이라고 생각한다. 실력 없는게 꼬장까지 부리면 어쩌겠는가.
결론: 이따구로 실력없는 나도 10년째 이 바닥에서 입에 풀칠하고 있다. 저 글 보고 뜨끔하셨던 분들, 저랑 같이 손잡고 홧팅 한번 합시다.
# by | 2009/05/20 22:56 | work - IT | 트랙백(4) | 핑백(1) | 덧글(71)








☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : G사와 N사의 코딩 면접.. + 전산책들...
전세계에서 짱드시고 계신 G사. 한국의 경우에도 회사에 점심에 출장뷔페를 해주는 그 회사에 전에 면접을 본적이 있다. 사실은 그냥 아는 형님이 면접보러오라는 이야길 해서, 나도 넣어보겠어! 라는 단순한 사유였으나.. 운좋게도 제법 올라갔었다. 어차피 시험볼때 쓰는 서약서 덕분에 뭐라고 문제를 밝힐 수준은 못되지만... 면접에서 제법 많이 올라 가봤던 경험으로는.. (물론 경력은 아니고 신입이었다만..) G사에서 필요한 정도는 ACM레벨이라면 스......more
제목 : RedBaron의 생각
여기에 나오는 코드를 보는 순간 절망^2가 되었습니다....more
제목 : 아..
내가 이래서 개발일 하기 싫어 -_- 아.. 정말..나는 왜 여기에 있는건지.....more
제목 : nkokon의 생각
내가 이래서 개발일 하기 싫어 -_- ...more
... 리에 뒤집기가 있던가? 가물가물...) 저런거 다 고민하고 만들어야 할 것이다. 안 그러면 갖다 쓰는 사람만 골치 썩을테니 말이다. 그런 의미에서 양파(누)님이 올린 내가 이래서 개발일 하기 싫어 -_-에 간단히 언급한 방법이 가장 좋아보인다. 물론 C적이지 못하기에 C언어로 짜라고 했던 질문의 답은 될 수 없겠지만, 입력 문자열을 처음부터 읽으며 한 "문자" ... more
면접 보신 분이, "하... 컴공과 나왔다면서 이걸 몰라요? 이걸 모르면서 우리회사를 오려고 했어요?" 라고 하자 후배놈의 대답이 "회사가 신입을 실력을 보고 뽑습니까. 발전가능성을 봐주십시요" 라고 했더라는...
뭐 당근 떨어졌지요. 그 얘기를 무용담이라고 선배들 앞에서 하는데 뭐 저도 면접관과 같이, "하..." 가 나오더군요.
저, 근데 저도 그 '발전 가능성을 보고..' 써먹어봤는데 ㅋㅋㅋ
와, 코드가 간결하고 에러 처리도 다 하네요. 감탄스럽습니다.
(어떻게 쭉 치는데 저런 코드가 단박에 나오는지...;;)
내공이 팍팍 묻어나온다는 말을 이럴 때 하는 듯.
전 그냥 컨설팅 갈래요...(먼 달)
습관이 되어야 할텐데.. ㅠㅠ
멋지십니다 -_-b
단지 제껀 전혀 예외처리가 없다고나 할까요 ㅎㅎㅎ
아무튼 저랑 코딩스타일이 굉장히 비슷하신 분이군요.
... 라기보단 C 제대로 배우고 나면 직업전선에 에로가 꽃필거에요. ㅠ.ㅠ 일은 어려운데 같이 할 사람 수도 적고 등등.
글구 전 개발자 아니거든요 흥.
말씀이 생각납니다...
저도 언어 꽝이라 외칩니다..
-_-;;
뭐 사실 연애질 안했으면 이해 좀 했을지도 ;ㅁ;
위 문제는 C언어 책이라면 한번쯤 다루는 내용이라 기본기 테스트지요. 자주 쓰이는 테스트로는 정렬도 있구요. 이력서에 C 좀 할 줄 안다고 적어놨다면, 그리고 책 한번 봤다면 다 알만한 내용이죠. 굳이 문제를 낸다는 것은 '그정도는 풀 능력이 돼야 다른 직원들에게 민폐를 덜 끼친다'라는 의미랄까요.
다만, 구직자가 몰리는 몇몇 회사들은 엄청 복잡한 문제를 내고 IQ테스트 하는것을 즐기는 듯도 합니다만... ACM? 그런거 몰라요. 그냥 DB 쿼리 좀 알고 java 날코딩밖에 몰라도 먹고 살 곳은 있더라구요. 능력이 별볼일 없다보니 고생도 하고 돈도 많이 못 벌지만요. ^^;
일단 어플이라면 이야기가 달라지겠지만 ㅎㅎ
지난 며칠 자바 해보면서, 1.2에서보다는 정말 엄청 많이 달라지고, 빨라지고, 괜찮아졌다는 거 느끼긴 하지만 모국어가 파이썬이라서 그런지 전 스크립팅이 좋아요 ㅜㅜ 프레임워크 딱히 없어도 빠르고요.
아악 근데 DB 쿼리 좀 알고 자바 날코딩 밖에 모르신다니까 갑자기 막막 반가워졌어요 ;ㅁ; 실력 좋은 사람들 때문에 우울해져서 개발 관두고 나왔는데, 제 실력 정도로도 살아남았을 수도 있었겠더라고요 <=== 괜히 분함
새는 이야기지만 학교간 교육 커리큘럼 차이를 느꼈던 적이 있었는데요.
서울대 친구는 컴공 아닌데 공대 1학년 일반교양으로 10page 넘는 프레임이 달린 홈페이지를 메모장'만'으로 짜는 숙제를 할 때 서울대 아닌 S대 (그래도 일단은 in 서울) 전산과 다니는 다른 친구는 나모 웹에디터 기본 제공 프레임으로 그림 몇개 붙인 페이지 작성 숙제 하고 있더란. 다들 그런건 아니겠지만 링크하신 석사학위자 상태를 보니 문득 떠오르네요. 우리나라 학교들이 유난히 줄세우기 해서 그런건지 잘 모르겠다는.
구지 C로 개발자가 아니더라도 저정도 포인터개념은 프로그래밍 첨 시작하고 한달짜리 수준같은데...ㅡ_ㅡ;;
프로그래머도 프로그래머지만, 전 QA팀도 대단한거 같습니다. 지금 새 시스템 롤아웃한다고 비즈니스유저로 테스팅팀에 끼어있는데 엄청 짜증나는군요. 100여개의 시나리오와 그의 몇배에 달하는 예상 결과 에러 등등등..
사실 UAT 쪽 뭐 그렇게 가니까 시스템 이해가 모자라서 더 어렵더라고요. 코딩은 쉽진 않다고는 해도 시스템 기초부터 참가했으면 최소한 어느 정도 이해는 하잖아요. 얼마나 어려운 건지 알고 손놓는 거랑, 이게 뭐가 뭔지도모르고 '테스트 해야 한다'는 압력 느끼는 건 또 다르더군요 -_- 아 뭐 먹고 살려면 쉬운 일이 없지만 말입니다 ;ㅁ;
#include <string.h>
두줄 추가해야 합니다. ㅎ
열심히 했으면 이 경력에 이런 무능력일수가 없답니다. 이런 무능력 아주 힘들다는;
int main()
{
char str[] = "abcde";
strrev(str);
printf("%s\n", str);
}
끝 =_ =
논리력을 보려고 하는거죠.
요즘 왠만한건 거의다 라이브러리가 있다지만, 문제해결능력은 필요하죠 ^-^
추카추카 ... ^^;
void reverse(char* str)
{
char *start;
char *end;
char temp;
start = str;
end = str + strlen(str) - 1;
while(start <= end)
{
temp = *start;
*start = *end;
*end = temp;
}
return;
}
{
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}로 수정...
str[size-i]=str[i]; 요거 컴파일하면..
mov edx,dword ptr [ebp-0Ch]
sub edx,dword ptr [ebp-4]
mov eax,dword ptr [ebp+8]
add eax,dword ptr [ebp-4]
mov ecx,dword ptr [ebp+8]
mov al,byte ptr [eax]
mov byte ptr [ecx+edx],al
뭐 이런 식으로 되는거죠. eax냐 ecx냐 edx냐는 뭐 그때그때 달라지지만.. 저 형식은 str[size-i]=str[i];가 아니라 *(str+size-i)=*(str+i); 라고 했을 때 역시 똑같이 저런 인스트럭션으로 됩니다. 결국 그게 그거라는 이야기. 포인터가 인덱스 연산보다 속도가 빠른 게 아니라 start++ 같이, 인덱스값을 추출하려고 dword ptr을 mov할 필요 없이 단순히 레지스터에 상수값을 누적시키기만 하면 되는 연산이 속도가 빠른 거지요. 물론 이런 의미로 말씀하신 것이겠지만, '인덱스 연산보다 포인터가 빠르다' 라고 하면 혹시나 오해하시는 분들이 생길 것 같네요;;
요새는 가독성의 문제 때문에 포인터보다 인덱스 연산을 권장합니다.
참고로 요샌 컴파일러들이 좋아져서, 컴파일러의 어셈블리 최적화가 사람이 하는 것보다 나을 때도 종종 있지요.