반응형

공부 624

좋은 개발자란 어떤 사람일까?

좋은 개발자란 어떤 사람일까? 좋은 개발자는 어떤 능력을 가진 사람인지 생각해본 적이 있는가? 이 글에서는 코드, 생산성, 커뮤니케이션, 학습, 관리 능력 5가지를 갖춘 개발자가 좋은 개발자라고 한다. 5가지 관점과 함께 좋은 개발자는 어떤 사람인지 알아보자. 1️⃣ 코드 1. 코드 Reading 능력 : 코드를 빠르게 잘 파악하고, 어떻게 고쳐야하는지 쉽게 파악하는 능력 2. 코드 Writing 능력 : 코드를 잘짜는 것과 별개로, 다른 사람과 자신이 이해하기 쉬운 코드를 짜는 능력 개발자는 코드로 말한다. 그렇기에, 잘 읽고 잘 말해야하는 능력이 위의 두가지이다. 2️⃣ 생산성 개발은 필연적으로 시간과의 싸움이다. 안정적이고 완벽한 코드도 중요하지만, 때로는 시간과 타협해서 돌아가기만 하는 코드로 만..

공부/자기계발 2023.01.14

헤더(.h) 파일은 하나의 cpp파일만 가질 수 있을까?

아닙니다. 대게 게임 회사는 많은 양의 코드를 보유하는 것이 일반적이며, 이를 더 작고 관리하기 쉬운 조각으로 나누는 것이 도움이 될 수 있습니다. 이를 수행하는 한 가지 방법은 헤더 파일을 사용하여 함수, 변수 및 클래스를 선언한 다음 별도의 cpp 파일에서 구현하는 것입니다. 이렇게 하면 가독성이 향상되고 코드를 더 쉽게 이해하고 유지 관리할 수 있습니다. 또한 헤더 파일당 하나의 cpp 파일만 가질 필요는 없습니다. 한 프로젝트에 cpp 파일이 여러 개 있는 것이 일반적이며, 하나의 헤더 파일에 해당하는 cpp 파일이 여러 개 있을 수도 있습니다. 핵심은 이해하고 유지 관리하기 쉬운 방식으로 코드를 구성하는 것입니다.

공부/기타 2023.01.14

코딩 테스트 실력 향상시키기 : 니트코드 150

코딩 테스트 실력 향상시키기: 니트코드 150 연습, 문제 풀이 영상 그리고 알고리즘을 카테고리 별로 정리해둔 공부 플랜 - 이 3가지 모두 제공하는 리소스 알려드립니다. 📌 니트코드 150 아래 사이트에 들어가면 알고리즘 별 자주 출제되는 패턴과 친숙해질 수 있는 코딩 문제가 나옵니다. Easy, Medium, Hard 단계별로 정리되어 있고, 문제 풀이 영상도 같이 삽입되어 있어요. 니트코드라는 유튜버인데, 말을 느리게 해서 알아 듣기 쉽고, 문제 풀이법도 아주 쉽게 가르쳐 줍니다. 📌 니트코드 All 웹사이트에 있는 메뉴 탭에서 "Neetcode All"을 선택하면 니트코드의 코딩 문제 풀이법 305개가 전부 나옵니다. 처음부터 All버전으로 시작하면 조금 힘들 것 같아요. 처음에는 지난 포스팅에 ..

공부/자기계발 2023.01.14

💡 주니어 개발자에서 중급 개발자로 도약하기 위한 7단계

💡 주니어 개발자에서 중급 개발자로 도약하기 위한 7단계 대다수의 주니어 개발자의 경우, 개발 리더 또는 시니어 개발자, 프로젝트 관리자 등의 공식 명칭을 가진 개발 경력자들을 포함한 팀에서 근무하고 있을 것입니다. 경험이 많은 개발자들의 업무 중 하나는 주니어 개발자의 작업을 확인하고, 이에 대한 피드백과 조언을 통해 주니어 개발자의 실력을 향상시키고, 회사에 도움이 되는 인재로 발전하도록 도와주는 것입니다. 저도 시니어 개발자와 이러한 과정을 겪어본 경험이 있죠. 누군가가 내 작업을 판단하는 것에 익숙하지 않다면 조금은 의아한 기분이 들 수도 있습니다. 그러나 다들 언젠가는 시니어 개발자의 자리에 앉기를 원하는 만큼, 시니어 개발자의 조언을 경청하고 잘 활용해 보세요. (본문 중) 출처 : 커리어리 ..

공부/자기계발 2023.01.14

접근자(Getter)와 설정자(Setter)의 개념

접근자(Getter)와 설정자(Setter)는 Java 또는 C#과 같은 객체 지향 언어의 클래스와 같은 프로그래밍 언어에서 개체의 속성에 액세스하는 데 사용되는 메서드입니다. 접근자(Getter)는 속성 값을 검색하는 데 사용되는 메서드이고, 설정자(Setter)는 속성 값을 설정하는 데 사용되는 메서드입니다. 이러한 메서드는 종종 캡슐화 및 추상화를 제공하는 데 사용되며, 이는 객체의 내부 상태가 코드의 다른 부분에서 직접 액세스하거나 수정되지 않도록 보호하는 데 도움이 될 수 있습니다. 다음은 C# 언어에서의 접근자와 설정자의 대한 예제입니다. class Example { private int _value; public int Value { get { return _value; } set { _va..

공부/OOP 2023.01.13

캡슐화(Encapsulation)란?

캡슐화는 객체의 내부 상태와 동작을 외부 세계로부터 숨기고 대신 객체와의 상호 작용을 위한 공용 인터페이스를 노출하는 방법을 나타내는 객체 지향 프로그래밍의 특징 중 하나입니다. 이렇게 하면 객체가 사용되는 방식을 더 잘 제어할 수 있으며 개체의 내부 상태에 대한 의도하지 않은 변경을 방지할 수 있습니다. 캡슐화는 객체의 내부 상태 및 메서드에 대한 액세스를 제한하기 위해 액세스 한정자(예: "private" 또는 "protected")를 사용하여 달성되는 경우가 많습니다. 객체의 내부 상태 및 동작을 비공개로 만들고 개체와의 상호 작용을 위한 공용 인터페이스만 노출함으로써 개발자는 객체가 올바르게 사용되고 내부 상태가 일관되게 유지되도록 할 수 있습니다. 아래 예제는 C언어로 작성한 캡슐화의 예제입니다..

공부/OOP 2023.01.13

<✨ 채용 담당자의 눈을 사로잡는 개발자 이력서 작성 방법>

개발자 이력서는 어떻게 하면 잘 쓸 수 있을까요? 지난 7월에 이력서 관련 포스팅을 올렸었는데요, 이번에 좋은 기회를 통해 원티드에서 보다 긴 분량의 개발자 이력서 작성 팁 아티클을 발행했습니다! 저의 이력서를 여러 번 고쳐 쓰고, 면접관으로서 다른 지원자들의 이력서도 읽어 보면서 터득한 꿀팁을 알차게 담았습니다. 관심 있으신 분들은 원티드에서 전체 아티클을 읽어보세요 (무료입니다)! 💡 이런 내용을 담았어요 - 이력서의 기본 원칙 - 개발자 이력서에 담아야 할 내용 - 이력서 쓸 때 해야 할 것 - 이력서 쓸 때 하지 말아야 할 것 - 기타 이력서 팁 📔 함께 읽어보면 좋은 글 - 개발자 이력서 잘 쓰는 팁: https://careerly.co.kr/comments/62319 - 이력서 작성 무한 반복..

공부/자기계발 2023.01.13

우선순위 큐(period_queue)의 개념

우선순위 큐(period_queue)는 일반 큐와 유사하게 일련의 요소를 저장하는 데 사용되는 데이터 구조입니다. 그러나 우선순위 큐(period_queue)의 대기열에는 각 요소가 기간 또는 시간 간격과 연결되는 추가 제약 조건이 있습니다. 대기열의 각 요소는 값과 기간으로 구성됩니다. 기간은 요소가 제거되기 전에 대기열에 남아 있어야 하는 시간을 지정합니다. 요소가 기간 대기열에 추가되면 해당 기간을 사용하여 대기열에서 제거해야 하는 시기를 결정합니다. 기간이 만료되면 요소가 대기열에서 제거되고 더 이상 액세스할 수 없습니다. 우선순위 큐(period_queue)는 일반 큐와 타이머의 조합을 사용하여 구현할 수 있습니다. 타이머는 대기열의 요소와 관련된 기간 만료를 추적하는 데 사용됩니다. 요소가 대..

공부/C++ 2023.01.13

코딩 면접 합격을 위한 무료 깃허브 리포지토리

코딩 면접 합격을 위한 무료 깃허브 리포지토리 코딩 면접 합격을 위해 필요한 자료를 얻을 수 있는 무료 깃허브 리포지토리 5가지 공유합니다 1️⃣ Coding Interview University 대기업 개발자가 되기 위한 개발 공부 플랜. https://github.com/jwasham/coding-interview-university 2️⃣ Tech Interview Handbook 지원서 넣고 연봉 협상할 때까지 필요한 모든 자료를 얻을 수 있는 리포지토리. 많은 정보가 축약되어 있어서 상대적으로 도움되지 않는다고 느낄 수 있다. 간단하고 가볍게 읽고 싶을 때 도움되는 리소스. https://github.com/yangshun/tech-interview-handbook 3️⃣ System Desig..

공부/자기계발 2023.01.13

맵(map)과 unordered_map의 개념과 차이

1. 맵(map) 맵(map)은 각 키가 고유한 키-값 쌍의 모음을 저장하는 데이터 구조입니다. 연관 배열, 사전 또는 해시 맵이라고도 합니다. 맵의 기본 아이디어는 고유 키를 사용하여 해당 값을 효율적으로 검색하는 것입니다. 맵(map)에서 키는 요소를 구성하고 특정 요소를 빠르게 검색하는 방법을 제공하는 데 사용됩니다. 키는 일반적으로 정수 또는 문자열이지만 동일한지 비교할 수 있는 모든 데이터 유형이 될 수 있습니다. 값은 모든 데이터 유형이 될 수 있습니다. 맵(map)의 구현은 프로그래밍 언어와 특정 사용 사례에 따라 달라질 수 있습니다. 예를 들어 C++에서 std::map 클래스는 효율적인 삽입, 삭제 및 검색 작업을 허용하는 균형 잡힌 트리로 구현됩니다. 맵(map)에서 제공하는 기본 작업..

공부/C++ 2023.01.13

성장하는 개발자가 필수로 지녀야 할 능력

성장하는 개발자가 필수로 지녀야 할 능력 바로 '질문을 하는 능력'입니다. 개발을 하다보면 막히는 순간이 오고, 어떻게 해결할지 먼저 생각합니다. 그렇게 생각하는 것이 바로 자신에게 질문하는 것이라 할 수 있죠. 이렇게 자문자답을 해서 문제를 해결하면서 성장을 하게 되죠. 그래서 문제를 많이 만나고, 해결을 많이 해본 사람이 잘하게 되는 것입니다. 하지만 항상 스스로 힘으로는 풀지 못하는 상황이 나오는데, 이럴때는 다른 사람에게 물어봐야하는 상황이다. 다른 사람에게 질문한다는 것은, 나를 위해 시간을 내서 좀 수고를 부탁한다는 뜻이다. 그렇기에 우리는 질문을 효율적, 효과적으로 해야한다. 질문을 잘하는 방법을 알아보자. 내가 고민한 과정을 효과적으로 설명해서, 상대방이 문제 파악에 들이는 에너지를 줄이는..

공부/자기계발 2023.01.13

삽입, 삭제가 계속 일어난다고 했을 때 Vector가 느릴까? List가 느릴까?

특정 상황과 데이터 크기에 따라 다르겠지만, 일반적으로 데이터가 작을 경우, 요소를 삽입하거나 삭제할 때는 리스트가 더 빠르며 데이터가 클 경우, 중간에 요소를 삽입하거나 삭제할 때는 벡터가 더 빠릅니다. 이는 벡터가 연속 메모리에 요소를 저장하기 때문에 벡터 중간에 요소를 삽입하거나 삭제하려면 삽입 또는 삭제 지점 이후의 모든 요소를 이동해야 하지만 리스트은 단순히 요소를 삽입하거나 삭제하기 위해 포인터를 조정할 수 있습니다. 그러나 벡터는 리스트에 비해 메모리를 덜 사용하기 때문에 메모리 효율성도 더 높습니다.

공부/기타 2023.01.13

<📚 개발자의 인풋을 늘리는 세 가지 공부법>

개발자의 커리어에서 떼려야 뗄 수 없는 것이 있다면 바로 ‘공부’입니다. 하루가 다르게 새로운 기술이 출시되고 IT 트렌드가 바뀌는 환경에서 살아남으려면 개발자에게 공부는 필수입니다. 공부는 학교 다닐 때만 하면 되는 줄 알았는데, 오히려 사회에 나오고 나서 진짜 공부가 시작됩니다. 학생 때처럼 단기적으로 시험을 위해 공부하는 것이 아닌, 장기적으로 실력을 쌓기 위해 공부해야 하기에 더욱 어렵습니다. 새로운 내용을 효과적으로 배우기 위해서는 일단 인풋(input)을 늘려서 지식을 머릿속에 집어넣고, 그다음에 아웃풋(output)을 늘려서 배운 내용을 내 것으로 만들어야 합니다. 이번 글에서는 인풋을 늘리는 방법을 다루고, 다음 글에서는 아웃풋을 늘리는 방법을 공유드릴 예정입니다. 개발자의 인풋을 늘리는 ..

공부/자기계발 2023.01.13

데이터 내부에 값이 1만개 이하일 경우 Vector가 빠를까? List가 빠를까?

만약 특정한 데이터를 찾을 경우 벡터가 리스트보다 빠르다. 왜냐하면 벡터가 연속된 메모리를 사용하고, 또 operator[]를 사용하여 일정한 시간에 액세스할 수 있기 때문이다. 반면에 리스트는 노드들이 일련의 연결로 구성되어 있으며 특정 요소에 액세스하려면 리스트 전체의 처음부터 끝까지 확인해야 하기 때문입니다. 그렇지만, 컨테이너 중간에 요소를 삽입하거나 삭제해야 하는 경우 리스트가 일반적으로 벡터보다 빠릅니다. 이렇게 하면 반복자와 참조가 무효화되지 않습니다. 반면에 벡터를 사용하면 메모리를 재할당하고 메모리를 재할당해야 할 수 있습니다. 이럴 경우 모든 요소를 새 메모리 위치에 복사합니다. 이로 인해 리스트가 벡터보다 작업을 빠르게 진행할 수 있습니다. 그렇지만, 리스트의 각 요소는 별도의 노드로..

공부/기타 2023.01.11

효과적으로 인맥을 쌓는 7가지 방법

효과적으로 인맥을 쌓는 7가지 방법 비즈니스 세계에서는 네트워크가 중요합니다. First Round Capital社에서 작성한 「효과적으로 인맥을 쌓는 7가지 방법」에 대한 설명이 있어서 요약해 보았습니다. 1. 진심으로 감사를 전하기 상대방과 만날 수 있었던 일이나 말할 수 있었던 일에 대해 감사함을 알기 쉽게 표현한다. 2. 의식하며 듣기 상대방의 이야기를 제대로 듣고 상대방이 계속 이야기하고 싶어 하는 분위기를 만드는 것이 중요하다. 3. 겸손한 자세 보이기 자신의 완벽하지 못하는 부분과 일부 약점을 보이면 더욱 상대방의 공감을 얻을 수 있다. 4. 있는 그대로 정직해지기 속마음을 전하는 것 자체가 상대방에게 유익한 정보가 될 수 있다. 정직하다는 것, 상대방에게 속마음을 말할 수 있다는 것 자체가..

공부/자기계발 2023.01.11

벡터(Vector)와 리스트(List)의 개념 및 차이점

1. 벡터(Vector) 벡터의 개념을 알기 위해서는 먼저, 배열을 알아야 합니다. 배열은 모두 동일한 유형을 갖는 요소들을 저장하는 데이터 구조입니다. 이 요소들은 저장 될 때 메모리에 연속적으로 저장됩니다. 즉, 요소와 요소 사이에 간격이 없이 차례로 메모리에 배치됩니다. 배열은 배열의 위치(인덱스(index))에 따라 배열 개별 요소에 효율적으로 액세스할 수 있는 간단한 데이터 구조입니다. 배열에 있는 요소의 인덱스는 배열에 있는 요소의 위치에 해당하는 음이 아닌 정수입니다. 즉, 첫 번째 요소는 인덱스가 0이고 두 번째 요소는 인덱스가 1인 식입니다. 배열의 각 요소는 배열 표기법을 사용하여 인덱스로 액세스할 수 있습니다. 예를 들어 myArray[i]는 myArray의 i번째 요소를 반환합니다...

공부/C++ 2023.01.10

<👩🏻‍💻 신규 개발자가 입사 첫 달에 해야 할 7가지>

어느 환경에서든 첫인상은 중요합니다. 첫인상으로 인해 생긴 이미지는 추후에 쉽게 바뀌지 않는데요, 회사에서도 예외는 아닙니다. 입사 초기에 보이는 모습에 따라 ‘실력자’라는 인상을 줄 수도, ‘일 못하는 사람’으로 낙인찍힐 수도 있죠. 입사 첫 달은 이러한 첫인상을 결정짓는 중요한 시기입니다. 더 나아가서는 이 시기가 앞으로 이 회사에서의 성공을 좌우할 수도 있어요. 신규 개발자가 새 직장에서 첫 시작을 잘 끊기 위해서 해야 할 7가지 일을 선정해 보았습니다! 1️⃣ 상사의 기대치 파악하기 입사 초반에는 충분한 대화를 통해서 상사의 기대치를 정확히 파악해야 합니다. 보통 이런 대화는 1:1 미팅 형식으로 진행이 되는데요, 이 기회를 활용해서 여러분의 상사가 여러분에게 기대하는 것이 무엇인지 알아내세요. ..

공부/자기계발 2023.01.10

static_cast와 dynamic_cast의 개념 및 차이점

1. static_cast static_cast는 한 유형에서 다른 유형으로 유형 변환을 수행하는 C++ 연산자입니다. static_cast의 기본 구문은 다음과 같습니다. 여기서 new_type은 변환하려는 유형이고 original_value는 변환하려는 값입니다. new_type new_value = static_cast(original_value); static_cast는 아래 서술한 상황과 같이 다양한 유형 변환을 수행하는 데 사용할 수 있습니다. 1. int에서 float로 또는 double에서 int로의 기본 유형 간 변환 2. char*와 같은 포인터 유형을 void*로 변환합니다. 3. 파생 클래스 포인터에 대한 기본 클래스 포인터와 같은 관련 클래스 간 변환. static_cast는 "최..

공부/C++ 2023.01.10

해치지 않아요~🙈 페어 프로그래밍을 무서워하지 마세요 😉

페어 프로그래밍에 대한 좋은 아티클이 있어 공유드립니다. 요즘은 코시국으로 재택 근무가 많이 활성화 되면서 페어프로그래밍을 하기 힘든 환경이 된것 같네요.(대신 Copilot 과 같은 AI Code Assistant 가 많이 활용되지만요 😉) 코시국 전까지만 해도 복잡한 설계나 비지니스 로직이 요구되는 기능을 개발할 때 페어 프로그래밍을 많이 하곤 했는데 특히 개발 초기 단계때 하는 페어 프로그래밍이 도움이 많이 되었습니다. 페어 프로그래밍을 했을때 제가 느꼈던 장점은 다음과 같습니다. ✔️ 설계 내용에 대해 문제나 이슈는 없는지 함께 고민해볼 수 있다. 페어 프로그래밍을 개발 초기 단계부터 진행한다면 얻을 수 있는 장점인데요, 내가 설계한 내용을 구현하는 과정에서 이 설계가 정말로 맞는지, 놓치고 있는..

공부/자기계발 2023.01.09

프로그램 실행 순서와 메모리 구조

메모리 영역에 얘기하기 전, 프로그램이 어떤식으로 실행되는지 과정을 살펴 보겠습니다. 번호를 통해 프로그램의 실행 순서가 어떠한 과정으로 진행되는 지 나타내보았습니다. 프로그램이 실행되면 컴퓨터의 주 메모리(RAM)에 로드되고 일정량의 메모리 공간이 할당됩니다. 이 메모리 공간은 프로그램이 실행되는 동안 프로그램의 명령과 데이터를 저장하는 데 사용됩니다. 프로그램에 할당되는 메모리 공간의 양은 프로그램의 크기와 사용 가능한 메모리 양에 따라 달라질 수 있습니다. 예를 들어 계산기를 키는 것과, 롤을 키는 것은 프로그램의 크기가 서로 다르기 때문에 메모리 공간의 양은 이에 따라 달라집니다. 프로그램이 처음 로드될 때 운영 체제(OS)는 일반적으로 인접한 메모리 블록을 프로그램에 할당합니다. 이 메모리 블록..

공부/CS 2023.01.08
반응형