IT 공부/공부하며 알게된 사실들11 왜 다른 사람이 작성한 코드는 이해하기 힘든 것일까 (본질적 어려움) 수많은 개발자들이 개발 실력을 업그레이드하려면 다른 사람이 작성한 코드를 읽어보라고 한다. 하지만 막상 오픈소스 하나를 찾아서 코드를 읽다보면 생각보다 정말 이해하기 힘들다. 난 처음에 이 문제의 원인을 내 프로그래밍 실력이 낮아서 문제라고 생각했다. (이건 정답) 그래서 프로그래밍 언어를 더더욱 배워야 한다고 생각했다. (이건 오답) 하지만 개발 공부를 하면 할수록 느껴지는 것이 생겼다. 코드를 읽기 어려운 이유는 코딩 문법이 어려워서가 아니다. 해당 프로젝트가 해결하려고 하는 도메인의 지식 구조와 프로젝트의 구성 요소에 대해 전혀 모르기 때문에 알아 먹기 힘든 것이었다. 막상 시간을 들여 천천히 읽다보면 의외로 구조와 코드 문법은 아주 어려운 것은 없었다. 아주 가끔 모르는 키워드가 나올 수 있는데,.. 2023. 12. 15. 잘 하는지 못 하는지도 중요하지만.. 코딩을 잘 하는지 못 하는지는 개발자가 되기 위한 최고 우선순위일 것이다. 하지만 소프트웨어 개발에 대한 이야기를 듣고, 공부를 하면서 드는 생각은, 어쩌면 잘 하는 개발자가 되는 것도 중요하지만, IT 회사에서 개발을 어떻게 하고 있는지 숙지하는 것이 더 중요하지 않을까? 하는 생각이다. 요즘은 너무 뛰어난 신입 개발자들이 정말 많아지고 있다. 개발 툴과 프레임워크도 쉬워지고 있고, 특히 부트캠프나 학원, 인터넷 강의가 너무나 발달되어 있기 때문이다. 그래서 나는 조급한 마음에 자꾸 기술에 시간을 투자했지만, 잘 하는 개발자에게 항상 주늑이 들었다. 그래서 다소 시야가 좁아졌던 것 같다. 독학을 하는 탓도 있겠지만 자꾸 구현, 코딩, 문제 풀이에 집중하다보니 정작 산업에서 개발자들이 어떤 원리를 토대로.. 2023. 11. 26. 자바의 문법보다 더 중요했던 소프트웨어 개발 원리에 대한 이해 자바를 학원에서 처음 맛 봤을 때는 정말 쉽게 배웠다. 클래스를 기초 빌딩 블록으로 사용하는 C#이나 C++도 문법적 기능은 쉽게 공부했다. 하지만 왜 나는 자바를 학원에서 배웠음에도 전혀 소프트웨어를 개발하지 못했던 것일까? 학원에서는 단순히 자바의 기초 문법과 스프링 포맷만 가르치고는 바로 프로젝트 개발로 뛰어들었다. 나는 그 방식에 전혀 적응하질 못했다. 분명히 자바 강의와 책을 통해 사용법을 익한 상태였다. 하지만 사용법은 알고 있었지만 사용할 줄을 몰랐다. 아무리 문법을 알아도 기껏 사용할 수 있는 것이라곤 전형적인 C언어 스타일로 간단한 알고리즘과 자료구조 문제를 푸는 방식 뿐이었다. 게다가 애초에 소프트웨어를 만들라고 과제를 던져주는데, 나는 정작 소프트웨어 개발 자체가 무슨 의미이며 어떤 .. 2023. 11. 24. 왜 자바는 클래스를 난잡하게 쓰는 것일까 해답...!! 왜 자바는 모든 것을 class로 처리하려는 것일까? (주절주절) 공부하면서 느끼는 제 개인적인 생각과 감정입니다... 자바는 클래스에서 시작해서 클래스로 끝난다. 처음부터 객체지향 설계 언어를 목표로 만들어진 언어라 그런가 싶다. 하지만 본질적으로 linocraft.tistory.com 이전에 내가 공부를 하면서 들었던 의문이 오늘 약간이나마 해소된 기분이다. 나는 이전에 왜 자바가 모든 것을 지나치다 싶을 정도로 class로 처리하려는 것인지 의문을 품었었다. 위 링크를 들어가면 상세한 내용을 볼 수 있다. 여기서 간단히 요약하자면, Java에서는 순수한 데이터 구조 (C언어로 따지면 struct) 마저 객체로 만들어버린다. 로버트 c 마틴조차 이런 스타일을 사이비 객체지향이라고 비판하기도 했다. 그.. 2023. 11. 14. 소프트웨어의 사용자 관점에서 느낀 것들, 소프트웨어 개발의 본질. 개발 공부를 하다보면 (당연하겠지만) 개발자, 즉 제품 생산자의 관점에서 기술을 바라볼 수 밖에 없다. 그러나 개발의 본질은 소프트웨어를 만드는 것이고, 해당 소프트웨어는 사용자의 편의를 위한 기술이다. 어떤 기술이 되었든, 그것을 만드는 총체적인 과정에서 만나는 여러 사항들을 해결하기 위해 기술들이 탄생한다. 그래서 가끔은 어떤 기술이 있을 때, 이것이 왜 존재하는지 생각해보곤 한다. (정답인지와는 별개로) 나는 밀리의 서재라는 소프트웨어를 애용한다. 구독 시스템을 기반으로 한 디지털 이북 소프트웨어다. 그런데 쓰면서 불만이 이만저만이 아니다. 지속적으로 업데이트되곤 하지만 사용자 입장에서는 "왜 이런 기술이 없는거지?"라는 의문이 들 때가 많다. 예를 들어, 나는 책을 읽다가 하이라이트를 많이 하는데.. 2023. 11. 12. 개발자의 문제 해결 역량이란? (feat. 구글 면접 시뮬레이션) 글로벌 소프트웨어를 말하다, 지혜 『글로벌 소프트웨어를 말하다, 지혜』는 소프트웨어에 대한 근본적인 이해와 통찰력인 지혜를 통해 글로벌 소프트웨어로 나아갈 수 있도록 안내한 책이다. 소프트웨어를 꿈꾸는 대학생들과 취업준비생, 소프트웨어 개발자, 글로벌 소프트웨어를 만들고 싶어하는 회사의 CEO, CTO, 경영진 등에게 글로벌 소프트웨어를 개발하는 데 필요한 ‘지혜’가 무엇인지 일깨워준다. 이 책은 이야기 형식으로 구성되어 있어 쉽고 재미있게 읽을 수 있고, 실리콘밸리의 소프트웨어 회사와 국내 소프트웨어 회사의 차이점과 그 이유를 짚어주며, 오래도록 개발자로 살아남을 수 있는 길을 제시한다. 저자 김익환 출판 한빛미디어 출판일 2014.06.05 라는 책에서 구글의 면접 시뮬레이션에 대해 저자가 상상한 간.. 2023. 11. 8. 실력이 좋은 개발자가 높은 임금을 받는 이유. 실력이 좋은 개발자와 아닌 개발자의 차이는 도대체 어디서 생기는 것일까? 메타의 마크 저커버그는 실력이 좋은 개발자는 그렇지 않은 개발자에 비해 100배의 차이를 보인다고 말했다. 처음에는 도대체 저 100배라는 것의 근원이 무엇인지 궁금했다. 생각하면 정말 소름 끼치는 차이다. 나는 당연히 현재 공부하고 있는 취준생이기 때문에 실력이 좋지 않다. 그래도 열심히 하면 쓸만한 개발자가 될 수 있을 것이라 생각했다. 그런데 나보다 실력이 좋은 사람은 나보다 최소 100배, 1000배 이상의 실력을 갖추고 있다니... 아무리 생각해도 생산성이 어떻게 100배나 나올 수 있는지 궁금했다. 그리고 오늘 공부를 하면서 읽은 책의 아래의 내용에서 생산성 차이가 어떤 의미인지 알 것 같았다. 필자는 2008년 당시 구.. 2023. 11. 5. 코딩 주석 코딩을 할 때 주석을 달라는 말을 많이 듣는다. 주석이 있어야만 다른 사람이 코드를 이해할 수 있고, 미래의 나에게도 도움이 된다는 것이다. 물론 코드가 그 자체로서 요구사항을 충실히 반영하고 쉽게 읽혀진다면 주석이 필수는 아닐 것이다. 그러나 그렇다고 주석을 빼서는 안 된다고 한다. 즉, 주석은 처음부터 타인과의 소통과 협업을 위해 만들어진 도구다. 지금 혼자 독학하고 있는 나로서는 타인이 나의 코드를 바라보는 관점을 획득하기 힘든 환경이다. 마틴의 에서는 주석의 중요성을 강조한다. 그래서 한동안 주석 작성법을 열심히 배웠지만, 당연히 소용이 없었다. 왜냐하면 주석 다는 법은 술(術)의 영역이고, 주석의 도(道)는 타인이 코드를 어떻게 읽고 해석하는지 그 관점을 획득하는 것에 있기 때문이다. 당연히 술.. 2023. 11. 1. 알고리즘과 도메인 로직의 분리 (2023-10-30) 데이팅 앱에서 남녀간 매칭을 위해 사용하는 알고리즘 도구는 그래프. 그래프는 노드들 사이의 관계를 매핑하는데 사용된다. 범용 도구이며, 데이팅 앱과 같은 소프트웨어는 노드의 집합(남자와 여자)과 그 사이의 관계에 대한 제약을 통해 원하는 대로 그래프를 만들어 사용한다. 남자 집합의 노드와 여자 집합의 노드 사이의 연결을 최대한 많이 만드는 것이 핵심이며, 여기에 가중치가 고려된다. 이때 가중치 계산 방법은 알고리즘이라기보단, 도메인(domain) 로직에 가깝다. 남녀 사이의 좋은 매칭이 어떤지는 컴퓨터 과학자가 알 수는 없다. 컴퓨터 과학자는 다만 검증된 그래프 이론과 컴퓨팅 도구를 제공할 뿐이다. 알고리즘을 배운다고 해서 모든 도메인의 소프트웨어를 구현할 수 있는 것은 아니다. 알고리즘과는 별개로 도메.. 2023. 10. 31. 이전 1 2 다음