개발자 생각 #4
구글 검색 결과에
link를 클릭하니
서버 오류가 발생하여
당황했다.
전 세계 개발자에게 Google은 신이고 stackoverflow는 지혜의 말씀이다. 프로그래밍을 하다 보면 하루에도 수십 번씩 Google에서 정보를 검색하지만, 답변은 대부분 stackoverflow에서 찾게 되기 때문이다. 결과적으로 1일 사용자량이 엄청난 사이트가 stackoverflow이다.
1.
Flutter의 globalkey의 예제 코드가 필요했다.
개발자가 아니라면 오해하겠지만 , 개발자가 소스코드를 머릿속에 외우는 경우는 흔치 않다. 방대한 양의 지식이 필요한 것이 프로그래밍이기에 머릿속은 "경험한 흔적 또는 논리적 사고"만 존재한다. 그래서 프로그래밍을 할 때는 이전에 만들어놓은 소스코드를 참고하거나 Google을 통해 예제가 될 만한 소스코드를 가져와 붙여놓고 수정하면서 개발을 하게 된다. 아니면 머리가 아닌 몸에 체화된 방법으로 프로그래밍을 하게 되지만 예상보다 그 양은 그 닥 많지 않다.
개발자가 어떤 기능을 구현할 때는 다음과 같은 방법을 사용한다.
1. 어떻게 만들지 자문한다.
2. 자문에 답하기 위한 논리적 사고를 시작한다.
3. 필요한 것들이 정리된다. 그러면 핵심 단어와 문장을 짧게 만든다.
4. 구글에서 검색한 후, 타당성 있는 자료(레퍼런스)를 찾는다.
5. 레퍼런스를 찾은 후, 뼈대를 만들고 논리적 사고를 만들기 위해 추가/삭제/검증 작업을 반복한다.
위의 방법이 대부분 개발자들의 일상에서 경험하는 반복적인 루틴이다.
이런 이유로 지금 작업하는 앱에서 어떤 문제에 봉착을 하게 되었고 그 문제를 해결하기 위한 논리적 사고를 하다 보니 구글 검색을 하게 되었다. 구체적인 내용은 아래와 같았다.
Flutter에서 각 위젯 간의 State를 제어해야 했다.
그래서 논리적 방법을 생각하다 보니 globalkey가 가장 간단했던
"경험"을 생각해냈고 바로 Google에서 [Flutter Globalkey example]이라는
키워드를 검색했다.
2.
에러 내용이 왜 이래?
웹서버 에러가 아니라 메모리 덤프 같은데?
보통 웹서비스에서 에러가 발생하면 개발자가 아니더라도 이해할 수 있게 "서비스 이용이 불가능합니다"라던가 "서비스에 불편을 드려 죄송합니다"라고 말하는 것이 일반적이다. 그리고 개발자스러운 사이트조차 "에러 페이지에 대한 문자열 정보"를 보여준다. 그런데, 지금 화면은 일반적인 웹사이트의 에러 화면과 많이 다르다. 아무리 보아도 메모리 덤프가 뜬 것이고 [heap error, floating-point,...]인 것을 보아서도 논리 오류가 아니다. 그냥 서버 소프트웨어가 망가진 에러로 밖에 볼 수 없었다.
그런데 문구는 "스택오버플로우가 정기검사 중이라 오프라인입니다"라는 메시지를 띄웠다.
다른 사이트도 아니고 "개발자만 들어가는 사이트"인데 저런 메시지를 보고 믿을 개발자가 몇이나 있을지 모르겠다. 초급 개발자라면 속아 넘어갈지 모르겠다. 그래서 궁금해졌다.
"stackoverflow"는 뭐로(프로그래밍 언어) 만들었지?
3.
stackoverflow는 무슨 언어로 개발했을까?
모르면 무조건 Google이다.
개발자에게 초록색 모자의 검색창(네OO)은 이단자들의 불순한 미신일 뿐이다.
그래서 구글에 "what language is stackoverflow wrriten in"을 검색했다.
놀랍게도 C#이다. 전 세계 웹 개발자들 머릿속에서 C# 웹서버 개발은 전설의 고향급인 옛날이야기이다. C#이라는 언어가 오래된 언어라기보다는 사용되는 영역이 서버 쪽에서는 한 물 갔기 때문이다. 한 20년 전쯤? 그때는 대한민국 금융기관 쪽에서 C#으로 서버 만드는 것이 유행이기도 했다. Microsoft에 대한 맹신이 있던 시절이었다. MS에서 서버 개발환경으로 ASP.net을 한 참 밀 때였고 개발자들도 ASP.net의 개발언어 중에 하나인 C#을 선호하는 경우가 있었기 때문이다(사실 베이식 언어를 더 선호하는 OO들이 많았다).
여하튼,
대형 글로벌 웹사이트인 stackoverflow가 C#으로 만들고 운영되고 있다는 점에서 적지 않은 충격을 받았다. 그래서 이 사이트는 누가 만들었는지 궁금해서 다시 구글로 검색을 해보았다.
4.
stackoverflow를 조엘 형님께서 만드셨다고?
개발자들에게도 셀럽이 있는데, 조엘 스폴스키는 2000년대 중반 우리나라에서는 조엘 온 소프트웨어라는 책으로 유명세를 탄 개발자였다. 나도 10년 전에 형님의 책을 읽어서 리뷰를 한 적이 있는데 좋은 점과 부정적인 점을 동시에 가졌음에도 불구하고 개발자를 직업으로 가진 사람이라면 한 번쯤 읽어볼 만한 서적임은 틀림이 없었다.
조엘 스폴스키는 65년 뱀띠다. 분명 나보다는 형님인데 사고방식은 지금이나 그 때나 훨씬 젊다(SNS상의 떠도는 행적을 보면). 이 사람을 높게 평가하는 이유는 몇 가지 있는데, 첫 번째는 MS의 엑셀팀에서 실력을 키워왔던 "테크니션"이란 점이다. 개발자 실력은 이미 수많은 유저를 통해 증명된 사람이다(인류 최고의 소프트웨어는 엑셀이다). 두 번째로 "소통능력"이 월등하다(소통과 개발을 동시에 잘하는 사람이 흔치 않다). 자기 브랜딩도 잘해서 자신의 "기술 블로그"를 만들고 소통하며 글로벌하게 유명해졌었다. 세 번째로 "서비스 기획 및 사업가적 능력"이다. 서비스를 보는 눈이 뛰어나고 그에 맞는 소프트웨어를 개발할 능력까지 갖춘 "개사기 캐릭터"이다. 그에 대한 업적을 한 줄로 말하면 다음과 같다.
개발자 출신 조엘 스폴스키가
Trello를 개발해서
5000억에 팔았다
이런 개발자가 만든 것이 stackoverflow이다.
전 세계 개발자들의 지능이 살아 움직이는 곳.
그곳에서도 조엘이 이었다.
심지어 C#으로 만들었다.
이런 것을 보면서
불필요한 상념에 젖게 되었지만
바로 정신을 차리고 원래 내가 원했던 질문의 답변을 찾지 못했다는 것을 깨달았다.
"저 에러의 원인은 무엇이지?"
그래서 구글링을 열심히 한 결과 답변을 찾을 수 있었다.
물론 stackoverflow에서였다.
원인은 SQL 서버 에러였다(데이터베이스조차 MS-SQL이라니).
조엘 형님은 자신이 MS 출신임을 자랑스럽게 생각했나 보다.
모든 것이 MS 제품으로 구성된 웹서비스를 만들었으니 말이다.