Work & Programming 32

[Architecting] Why would we need this?

아키텍팅, 즉 시스템 디자인이 왜 필요한가 에 대해서 먼저 생각해 본다. 프로그래머는 코드 생성, 즉 프로그래밍을 통해 전반적으로 2개의 의무를 수행한다. 첫째는 기능 구현으로서의 의무다. 프로그램을 통해서 사람은 컴퓨터에게 필요한 기능을 위임한다. 계산기 같은 것이 쉬운 예이다. 입력을 받으면, 그 입력을 기반으로 컴퓨터가 프로그램에 가이드 된 내용을 토대로 결과를 돌려준다. 심플하다. 둘째로 전체 디자인을 효율적으로 유지해야 할 의무를 가진다. 그렇다면 여기서 몇 가지 파생 질문이 나온다. 효율적이라는 것을 무엇을 말하는 것인가? 왜 그래야 하는가? - 비 효율적이어도 프로그램은 여전히 잘 기능할 수 있다. 그렇다면, 어떻게 이 과정에 실제적으로 도달하는가? 등을 고민해 볼 수 있다. 첫번째 질문부터..

[LinkedIn Learning] Programming Foundations: Design Patterns

볼 때 마다 그래 그런거였지, 싶었던 패턴들, 특히 이 강의가 좋은 설명과 함께 예시가 잘 되어 있어 스크린샷 몇개를 가져와 본다. Strategy Pattern > 특정 캐릭터 클래스 내에서의 특정 스킬 추가 시스템 구현 시 > Unity 엔진의 object 의 기능/component 추가 시 > 단순 기능을 가진 특정 장르의 게임(슬롯 머신 등)에서 코어는 건드리지 않고 머신별로 특정 기능을 두고자 할 때 새로운 기능 추가 시 기존 코드를 변경시킬 필요가 없다. 확장 및 추가에 용이하다. 상속보다 기능 조합에 의한 설계를 우선하라. Adapter Pattern Observer Pattern > 노티/메시징 시스템 Decorator Pattern Iterator Pattern Factory Method..

더 나은 개발팀을 구축하는 방법.

사람들은 어떤 경우에 최선을 다 하며, 후회 없이 그리고 즐겁게 일할 수 있을 것인가.내 나름대로 후회 없는 팀 구성을 위한 노하우를 적어본다. 1. 프로젝트 핵심 인력의 생각 일치.프로젝트에는 핵심 인력이 있기 마련이다. 즉, 프로젝트 매니져, 각 팀장 등이 이 인물들에 해당 할 것이다. 팀안에서는 물론 팀장과 메인 개발자 정도 될 것이다. 어떤 생각이 일치 되어야 하는 것일까? 모든 생각 하나하나가 다 일치 할 수는 없다. 오히려 모든 이들은 각자 환경과 생각과 이념과 세상을 바라보는 눈이 다르므로 생각이 다를 수 밖에 없다. 이 사실을 인지하고, 머리를 맞대고 어떠한 의사 결정에 대해 오픈마인드로 접근하자는 데에 동의해야 한다. 개인적으로 생각하는 최적의 가이드 라인은 아래와 같다.프로젝트 매니저는..