본문 바로가기

IT 공부/이런 저런 생각들..7

오랜만의 스프링 보면서 느낀 점.. 예전에 봤던 스프링 기술을 지금 한 번 보고 있는데, 신기하게도 옛날과는 달리 술술 잘 읽힌다. 특히 기술 간 경계가 아주 명확하게 선이 보인다. 각종 라이브러리, 빌드툴, IDE, 등 각 기술들이 서로 어떻게 연계되는지 보인다. 각 기술 사이의 접합부가 무엇인지 보이고, 따라서 기술을 뺏다 넣었다 할 수도 있을 것 같다. 때문에 각 기술이 정확하게 어떤 절차를 거쳐 적용이 되고, 무엇을 위해 존재하는지 느낌이 온다. 왜 빨리 깨우치질 못했을까 안타까운 것도 있지만, 그래도 공부하면서 후퇴는 하지 않았다는 점에 뿌듯함을 느끼자. 2024. 1. 6.
유연하고 기민하게 공부하기 공학은 자연과학이 아니다. 이 말을 어디선가 들은 적이 있는데, 요즘 들어 조금 와닿기 시작했다. 난 성격 상 무언가를 명확하게 정의하고 분류하는 것을 선호하는지라 불분명하고 경계가 흐릿한 개념들을 잘 받아들이지 못한다. 처음엔 공부하기 좋은 성격이라 생각했는데, 이제보니 개발 공부에 있어서는 단점인 것 같다는 생각이 든다. 예를 들어, 운영체제 공부를 할 때 프로세스(process)와 스레드(thread)를 공부하게 되는데, 이 둘은 엄밀히 구분되는 개념이고, 이 둘의 차이점에 대해 면접에서도 자주 질문이 들어온다고 들었다. 하지만 깊이 파고들다보면 결국 이 개념을 각각의 운영체제가 어떻게 구현하는지 들여다봐야 하는 순간이 오는데, 이게 의외로 OS마다 접근과 구현이 미묘하게 차이가 난다. 리눅스의 경.. 2023. 12. 27.
공부 불안 코드 구현에서 잠시 멈추고 지금은 와 같은 책들을 유심히 보고 있다. 왜냐하면 온갖 기술들이 너무나 난무하다보니, 각 기술들이 소프트웨어 개발 프로세스에서 차지하는 어떤 위상이나 위치, 개념을 알고 싶었기 때문이었다. 지금까지 계속 어떤 기술(프로그래밍 언어, 프레임워크, 데이터베이스, ...)이 있고, 이런 문법을 사용하면 ~~한 기능을 사용할 수 있다는 식의 공부만 해왔다. 하지만 어느 순간부터 무언가 전진하고 있지 못하고 있다는 느낌이 들었다. 온갖 기술들을 개별적으로 이해하기에 앞서 애초에 개발 프로세스에 대한 전체적인 청사진을 그리고 싶었던 것이다. 기술을 숙달하는 것보다 그저 프로그래밍이란 무엇이며, 개발이란 무엇인지 알고 싶었다. 디버깅, 테스팅, 요구사항 분석, 설계, 버전 관리 도구, 협.. 2023. 11. 28.
개발 공부를 하면서 느낀 개발 공부의 특징 개발 공부가 왜 이렇게 어려울까? 남들에 비해 느린 학습 속도 때문에 나는 이런 질문을 자주 나에게 던지곤 했다. 물론 내 성격이 모르는 것이 있으면 해소하지 않는 이상 다음 단계로 나아가지 못하는 성격 때문도 있을 것이다. 이건 장점이자 단점이다. 하지만 이런 성격과는 별개로 개발 공부가 쉽지 않다는 것을 자주 느낀다. 최근에 객체지향 설계와 관련해 예전에 구매한 책 두 권을 다시 읽기 시작하며 개발 공부 자체의 특징에 대해 조금 실마리를 얻기 시작했다. 책 하나는 조영호 님의 라는 책이고, 다른 하나는 스티브 맥코넬의 라는 책이다. 나는 자바의 문법은 이해했지만 그걸 왜 쓰는지 전혀 모르는 괴로움으로 인해 꽤 오래 전에 이 책을 구매했었다. 1~2년 되었을 것이다. 그런데 그때는 정말 아무리 읽어도 .. 2023. 11. 21.
객체지향, 디자인패턴, 스프링 프레임워크... 소프트웨어 개발 과정에서 제목에서 열거된 온갖 기술들이 사용되는 이유는 소프트웨어가 시간이 흐르면서 요구 사항이 지속적으로 변경되기 때문이다. 처음에는 이 말을 그려려니 하고 받아들였지만, 나중에 내가 소프트웨어의 사용자 입장에서 무슨 생각을 하는지 고려해보면 소프트웨어에서 변경이란 숙명에 가깝다는 생각이 들어 섬찟한 공포를 느끼기도 했다. 그 어떤 소프트웨어도 사용자가 원하는 기능과 목록은 언제나 존재한다. 언제나 변경되고 업데이트되기를 원한다. 그래서 개발 프로세스에서 애자일이나 객체지향, 디자인 패턴들이 사용되는 것 같다. 이 기술들의 궁극적인 목적은 모든 설계 세부 사항과 요구 사항을 전부 파악한 후에 코딩에 돌입하는 개발 방식에서 벗어나기 위한 것들이다. 소프트웨어의 본질적인 성격(변경)을 고려.. 2023. 11. 13.
개발 공부의 목적 나는 개발자의 일이란 소프트웨어의 요구 사항을 서비스로 만드는 사람이라고 생각하고, 그저 멋지고 화려한 포트폴리오를 만들면 된다고 생각했다. 하지만 공부를 하면 할수록 개발이란 멋지고 화려한 디자이너가 아니라, 공학을 공부한 사람으로서 컴퓨터라는 기계 장치의 원리와 비용을 바탕으로 정보를 처리하고 저장하고 전송하는 가장 최선의 답을 이끌어내는 직업인 것 같다는 생각이 든다. 그리고 그러한 과정에서 설계와 분석이 중요하게 다뤄지는데, 이는 고객이나 다른 부서의 요구사항이 언제나 변경되고 수정될 수 있기 때문에 그러한 변경을 수용하는 방향으로 설계를 해야 한다. 화려한 포트폴리오보다 기본 지식과 탄탄한 기본기가 중요하다. 하지만 그 기본기라는게 너무 해야할 게 많다.. 헉 2023. 11. 12.
개발자에 대한 나의 개인적인 이미지 내가 문과 출신이라 그런진 몰라도, 개발자라고 하면 어떤 이미지가 먼저 떠오르냐는 질문에 내가 가장 먼저 대답하는 것은 "엔지니어" 라는 대답이다. 쉽게 말하면 건축공학도나 기계공학도에서 풍기는 느낌 그대로 개발자도 그런 이미지여야 할 것 같다. (내 개인적인 느낌이 그렇다는 것이다.) 요새 코딩 열풍이 불어닥치다보니, (물론 지금은 코딩 이슈가 많이 가라 앉긴 했다), 초보 개발 지망생들을 위한 수많은 책과 강의, 유튜브 콘텐츠들이 넘쳐난다. 그런 이유에선지 몰라도, 코드를 짜는 개발자에 대한 이미지가 많이 개인적이고, 젊어 지고, 소프트해진 느낌이다. 이건 아무래도 IT 회사 특유의 자유로운 문화 이미지 때문인가 싶다. 그래서 개발자 이미지를 검색해보면 정장이 아닌 일상복을 입고 깔끔한 공간에서 2~.. 2023. 11. 10.