profile
발전하기 위한 공부

☾⋆⁺₊⋆me⋆。゚✶°

저는 어렸을 때부터 항상 긍정적이게 생각해라, 맡은바 최선을 다해라, 대충하지 말아라, 그리고 원하는 것을 얻기 위해서는 그 만큼 노력을 해야한다. 이런 교육을 받고 자랐습니다. 그리고 저는 호기심이 많았고 궁금한 것을 못참는 성격이라 저는 중학교를 졸업하자 마자 세상을 보기 위해서 외국으로 나갔습니다. `중국`과 `싱가폴`에 오래동안 있었는데 어린 나이에 두려웠지만 홀로 나간 이유는 세상을 보기 위해서 였습니다. 제가 겪지 못했던 것을 체험해보고 뭐가 다른지 보고 싶었습니다. 이것들을 체험해보기 위해서는 긍정적으로 생각해서 두려움을 깨고 도전했으며 외국에서 홀로 살아가는 노력을 해야했고 언어와 문화가 틀린 다양한 사람들과 어울리기 위해서 노력을 했습니다. 이 때 저는 소통하는 방법을 깨닫게 되었었습니다. 그 방법은 다른 사람과 나와의 차이가 있을 때 이건 틀린게 아니라 다른 것이라는 것을 깨닫게 되었고 저만의 생각만 유지하면 발전할 수 없다고 생각이 들었습니다. 그래서 다른 사람들을 이해하기 위해서 다른 사람들의 말을 경청하는 자세를 취했고 언어 능력의 한계나 생각의 차이로 오해가 생길 수 있으니 적극적으로 소통을 하게위해 노력하였고 배울점은 인정하고 배우기 위해서 노력하였습니다.

그리고 저는 다양하게 공부를 했었는데 호텔 매니저, 신학, 회계 이렇게 다양하게 공부를 했었는데 공부를 하다가 막힌 부분이 있으면 그것을 찾아보고 기록하는 스타일입니다. 다양하게 공부를 하다보니 느낀 것은 토대가 안 좋으면 높게 쌓아도 불안전하다는 것입니다. 그런 생각을 가지고 공부를 하다보니 궁금증이 생기면 책을 보고 논문을 보고 구글에 검색해서 교차 검증을 했습니다. 이럴 때 귀찮은 것이 아니라 궁금한 것을 못참는 성격이 도움이 되어서 제가 몰랐던 것을 알게되어 해결했을 때 즐거움을 저는 얻을 수 있었습니다. 그리고 공부하다가 느낀점은 사람의 기억력에는 한계가 있다는 것을 느꼈고 기록하기 시작했었습니다. 먼저, 노트와 워드로 기록을 해서 저장을 하다가 개발 공부를 시작하고나서는 기록하는 장소는 VelogGit 두 곳입니다. 워드에서 블로그로 기록하는 방식을 바꾼 이유는 개발 공부를 시작하면서 제가 정리한 것들을 남에게 쉽게 보여줄 수 있으면 좋겠고 이쁘게 꾸며서 가독성 있이 정리하고 싶어서 Velog를 선택하게 되었고 개발자에게 Git은 필 수 적이다 보니 Git에 코드를 저장하게 되었습니다. 이렇게 블로그와 Git에 기록하다 보니 제가 기억이 애매하거나 까먹었을 때 다시 기록했던 자료들로 복습해서 기억해낼 수 있었습니다. 제가 다양하게 공부한 이유는 제가 진정으로 무엇을 하고 싶은지 무엇에 재미를 느끼는지 찾고 싶었습니다. 삶을 단순히 흘러가는대로 아무 노력없이 살거나 비전도 없이 살고 싶지 않았기 때문입니다.

저는 저의 삶과 제가 받았던 교육들 그리고 생각들이 개발자로서 장점이라고 생각합니다. 그렇게 생각하는 이유는 외국의 삶과 호텔 매니저와 신학을 공부하면서 소통하는 방법을 익혔고 개발자에게는 소통이 중요하다고 생각합니다. 개발 업무는 혼자하는 것이 아니기 때문입니다. 그리고 외국에서 살았을 때 겪었던 경험으로 인해서 다른 사람과의 차이를 틀리다라고 정의하지 않고 다르다고 생각하고 배울점이 있으면 배우고 습득하는 방법을 배워서 이 부분도 개발자로서 장점이라고 생각합니다. 또한 제가 장점이라고 생각하는 부분은 도전 정신과 그에 따른 노력하는 자세임니다. 이 부분을 장점이라고 생각하는 이유는 삶의 방향을 찾는다는 도전으로 인해 다양한 공부라는 노력을 했듯이 개발자로서도 정체되지 않고 계속 공부할 것이기 때문에 장점이라고 생각합니다. 그리고 저는 가독성을 생각하는 것도 장점이라고 생각하고 있습니다. 저는 제가 정리한 것을 다시 보고 복습을 하는데 복습할 때 읽기 편하고 머리에 습득이 효율적으로 되도록 가독성있게 하려고 하고 가독성이 떨어진다면 리팩토링을 해서 가독성 있게 만듭니다. 개발 업무도 여러명이서 작업하는 것이니 다른 사람들이 제 글이나 코드를 쉽게 파악할 수 있게 해서 시간 낭비를 줄이니 이러한 가독성을 추구하는 행동이 장점이라고 생각합니다.

저의 단점이라고 생각하는 부분은 저의 생각을 전달하는 방법의 부족함이였습니다. 이 부분은 프로젝트를 진행할 때 저는 리더의 역할을 맡았는데 여기서 많이 느꼈습니다. 여태까지 리더보다는 팀원으로써 잘 따라가고 제 의견을 제시하면서 배울점은 배우면 되었지만 리더로서는 제 생각을 더 강하게 어필해서 팀을 이끌어야하는데 그러지 못했습니다. 그리고 리더로서 팀원들이 따르지 않으면 갈등이 생기는 문제도 있었습니다. 하지만 이러한 단점은 1차, 2차 프로젝트를 진행하면서 단점을 점차 고쳐갔습니다. 팀원들에게 리더로서 어떻게 말해야하는지 배우고 리더로서 팀원들과 소통하는 방법을 알게 되었습니다. 그렇다보니 저의 생각을 전달할 때 저의 생각을 강요하는 것이 아니라 이유에 대해 설명하기 시작했습니다. 예를들어, 어떠한 기능을 넣어야할 때 프론트에게는 이 기능이 고객에게 편의성을 줄 수 있다는 것을 말하면서 고객의 입장에서 왜 필요한지 설명하였고 백엔드에게는 이러한 기능을 구현했을 때 왜 이러한 방식으로 구현했는지 생각을 전달하고 코드 리뷰를 요청하는 방식으로 했습니다.

개발자로서 추구하는 것

  • 코드에대한애착이없음\bf{\large{\color{#DD6565}코드에 대한 애착이 없음}}

    개발 공부를 하면서 느낀점은 하나의 코드에 애착을 가질 필요가 없다는 점입니다. 버전이 업그레이드 되거나 제가 알지 못했던 코드 방식, 개발을 위해 라이브러리나 프레임워크를 사용할 경우 코드는 변화가 되는데 그 코드를 애착하고 유지할 필요는 없다고 생각합니다. 그리고 회사에 들어가게 된다면 회사가 원하는 사업의 방향에 따라 작성한 코드는 언제든지 바뀔 수 있기 때문에 새로운 코드를 사용하는 점에서 새로운 코드 스타일을 익힐 수 있는 점이 좋기 때문에 코드를 전부 수정해도 스트레스가 되지 않기 때문입니다.
  • 인간을위한코드작성\bf{\large{\color{#DD6565}인간을 위한 코드 작성}}
  • 간단한코드작성\bf{\large{\color{#DD6565}간단한 코드 작성}}

    기능을 구현할 때 결국 목적은 배포 후 운영할 때 고객들이 편하게 사용할 수 있어야 합니다. 아무리 코드를 잘만들어도 사용할 고객이 사용하기 불편하다면 그것은 의미가 없는 코드라고 생각합니다. 스마트폰의 발달로 저도 많은 어플들을 사용하고 사이트들을 사용하지만 가끔 기능에 목적을 두고 그 기능을 찾기 힘들거나 구현한 기능들이 불편하게 느껴질 때가 있었습니다. 그런 생각으로 인해 저는 개발의 목적은 자기만족이 아니라 고객의 편의성필요성이라고 생각합니다. 그리고 개발을 할 때 복잡하게 코드를 작성해도 컴퓨터는 그 코드를 해석해서 기능을 구현할 수 있을 것입니다. 하지만 개발은 혼자하는 것이 아니라 여러명의 팀원과 같은 팀으로 프로젝트를 진행하고 코드를 작성할 것입니다. 시간의 낭비를 하기 싫다면 팀원들이 내 코드를 한번에 이해하기 쉽게 코드를 이해하기 쉽게 짜고 가독성이 좋은 코드를 작성하는 것이 좋다고 생각합니다. 어쩔 수 없이 코드를 복잡하게 짜야한다면 주석으로 내 코드가 무슨 기능을 하고 있는지 설명해주는 것이 좋다고 생각합니다. 저의 모토는 Simple is Best입니다. 단순한 것이 읽기 쉽고 이해하기 쉽기 때문입니다. 그러다보니 저는 항상 블로그도 정리하고 끝내는 것이 아니라 리팩토링을 해서 정리한 것을 다시 정리를 하고 여러 페이지로 나누는 것이 아니라 하나의 카테고리로 정리했습니다.
  • 일관된표준사용\bf{\large{\color{#DD6565}일관된 표준 사용}}

    이것도 평소에 중요하다고 생각했습니다. 매번 코드의 스타일이 다르다면 같이 협업하는 사람도 힘들고 나중에 본다면 저도 이해하기 쉽지 않을 것입니다. 변수명과 코드의 스타일은 유지해서 다른 사람이 봤을 때 예상이 갈 수 있게 하는 코드가 좋다고 생각합니다.
  • 예측가능한코드작성\bf{\large{\color{#DD6565}예측 가능한 코드 작성}}

    코드가 예기치 않은 결과를 만들지 않고 여러번 실행되도 결과는 같다. 적절한 테스트로 변경하기 쉽게 만든다. 이부분은 현재 부족하지만 중요하다고 생각합니다. 코드가 상황에 따라 결과가 예측되지 않는다면 배포하고 운영이 불가능할 것입니다. 그러면 제가 위에서 중요하다고 생각한 고객의 편의성필요성에 불적합합니다. 사용하려고 할 때 될지 안될지 모르는 사이트는 편의성도 떨어지고 요즘 시대에는 대체품이 많다보니 필요성도 떨어질 것입니다.
  • 자주소통하기\bf{\large{\color{#DD6565}자주 소통하기}}

    저는 제가 부족한 것을 압니다. 저는 저를 객관적으로 파악하고 있기 때문에 저의 코드가 제가 원하는 목표치에 한번에 다다를 수 없다는 것을 알고 있습니다. 그렇기 때문에 저는 자주 소통하는 것이 중요하다고 생각합니다. 일단, 제가 작성한 코드를 제대로 작성이 되었는지 체크를 받고 더욱 업그레이드를 시키고 더욱 가독성이 좋게 만들려면 코드 리뷰를 받고 제 코드를 업그레이드 시키기 위해서는 다른 사람의 코드 스타일도 보고 공부할 점이 있습니다. 뛰어난 실력자의 코드는 더욱 그렇다고 생각합니다. 그렇기 때문에 자주 소통해서 피드백을 받고 피드백을 수용하는 절차는 많이 필요하다고 생각합니다.
  • 빠르게그리고느리게코딩\bf{\large{\color{#DD6565}빠르게 그리고 느리게 코딩}}