노베이스 상태에서 개발 프로젝트 만드는 법

저세상개발자
8 Mar 202319:50

Summary

TLDRThe transcript discusses the importance of starting a development project to learn programming, emphasizing that the goal is not to create perfect code but to practice and improve. It advises beginning with simple projects like blogs or notepads, gradually moving to more complex ones like community forums. The speaker warns against attempting too much too soon, such as developing both server and client simultaneously, and suggests focusing on one task at a time. The transcript also covers project planning, prioritizing tasks, and the iterative process of development, including coding, testing, and refactoring. It concludes with tips on packaging a project for a portfolio, stressing the value of continuous improvement and feedback.

Takeaways

  • 🚀 Start with small projects to build a solid foundation in development, focusing on creating simple programs before tackling complex ones.
  • 📝 Develop projects with a clear purpose, not just for the sake of creating artful code or to show off expertise.
  • 🛠️ Follow a structured approach to project development, beginning with concrete design and planning before coding.
  • 📈 Prioritize features and tasks, starting with the most essential functions to ensure the project's core value is delivered.
  • 🔍 Avoid copying code directly from tutorials or examples; instead, use them as a learning tool and adapt the code to create your own unique solutions.
  • 🔗 Break down the project into manageable tasks and use tools like Kanban boards to track progress and organize work efficiently.
  • 🔄 Understand that development is an iterative process; be prepared to refactor and improve the code as the project evolves.
  • 📅 Set deadlines for your project to maintain focus and ensure timely completion, even if it means releasing a minimal viable product first.
  • 🤝 For collaborative projects, clearly define roles and responsibilities to prevent confusion and ensure accountability.
  • 🛑 Avoid attempting to develop both server and client sides simultaneously as a single developer, as it can lead to overwhelming technical complexity and slow progress.
  • 📦 Package your project effectively for portfolio or job application purposes, highlighting key features, technologies used, and the project's purpose.

Q & A

  • Why is it important to start a development project from the beginning stages of learning?

    -Starting a development project from the early stages helps solidify foundational skills and allows for practical application of theoretical knowledge, leading to a better understanding and retention of the concepts learned.

  • What is the main purpose of development according to the transcript?

    -The main purpose of development is not to create art-like code or to show off expertise, but rather to create tools, like BTS's Peer, as a means to an end for learning and scientific advancement.

  • How can one improve their development skills in the short term?

    -Improving development skills in the short term can be achieved by practicing making projects, starting with simpler ones to build up proficiency and gradually taking on more complex tasks.

  • What are the three key points to focus on when creating a project?

    -The three key points are: 1) Start with a concrete design before development, 2) Aim to create simple programs first to avoid complexity, and 3) Avoid copy-pasting code without understanding or modifying it to fit your project's needs.

  • What is the recommended first project for beginners?

    -For beginners, a recommended first project is creating a blog or a notepad application, as they involve fundamental text manipulation tasks and have abundant reference materials available.

  • Why should developers avoid trying to learn both server and client development simultaneously?

    -Learning both server and client development at the same time can be overwhelming and impractical due to the different languages and techniques involved, which can slow down development and lead to a lack of focus and understanding.

  • What are the potential pitfalls of collaborating with others on a project?

    -Collaborating can lead to mismatched schedules, unequal distribution of skills and effort, lack of leadership, and ultimately, a project that stalls or is abandoned due to these challenges in coordination and commitment.

  • What is the significance of setting clear objectives for a project?

    -Setting clear objectives, or OKRs (Objectives and Key Results), helps define the project's purpose and intended outcomes. It provides direction and focus, ensuring that the development efforts contribute towards achieving the project's goals.

  • How can developers manage their tasks effectively during a sprint?

    -Developers can manage tasks effectively by using a Kanban board to visualize and organize their workflow, separating tasks into categories like 'to do', 'in progress', and 'done', and planning sprints with achievable goals within a two-week timeframe.

  • What is the best approach to refactoring code?

    -The best approach to refactoring involves separating the process from feature additions, focusing on making the code clean and readable without altering its external behavior, and prioritizing refactoring efforts on parts of the code that are frequently modified or have technical debt.

  • How should a developer prepare their project for showcasing in a job application?

    -For job applications, developers should distill their project into its core features and successes, provide links to the code, installation guides, and any other relevant documentation, and be prepared to iterate and improve upon the project based on feedback.

Outlines

00:00

🚀 Introduction to Development Projects

This paragraph introduces the concept of development projects, specifically the 'Geopbae Project', and discusses the reasons for creating and failing in such projects. It emphasizes the importance of understanding the purpose of development, which is not about creating artful code or showing off expertise, but rather a means to learn. The paragraph highlights the necessity of practice in developing programs and the importance of starting with simple projects to build up skills and confidence. It also outlines the criteria for successful project creation, including detailed planning, avoiding complexity, and refraining from copying others' work.

05:01

📚 Learning Through Imitation and Practice

This section discusses the learning process in development, emphasizing that while imitating and following along with tutorials can be a good starting point, it's crucial to move beyond this and practice creating original programs. It suggests starting with simple projects like blogs or notepads to gain experience and confidence. The paragraph also provides a development timeline for beginners, recommending a progression from simple to more complex projects like forums and communities, and finally to utility apps or websites. It warns against attempting too complex a project initially and provides advice on avoiding common pitfalls in project development.

10:03

🛠️ Project Development Tips and Pitfalls

This paragraph offers practical advice for project development, focusing on setting clear goals, planning, and prioritizing tasks. It advises against attempting to develop both server and client sides simultaneously as a solo developer due to the technical complexity and different skill sets required. The paragraph also discusses the challenges of collaborative projects, emphasizing the need for clear division of responsibilities and regular meetings to ensure project momentum. It then lists topics that increase project development difficulty, such as member registration, social login, push notifications, and real-time chat services, and provides strategies for managing these challenges.

15:05

📈 Project Planning and Launch

The final paragraph delves into the specifics of project planning, execution, and launch. It stresses the importance of not aiming for perfect code from the start, managing the backlog effectively, and performing refactoring at appropriate times. The paragraph outlines principles for refactoring, such as not combining it with feature addition and focusing on readability. It also discusses the importance of deploying the project, even if it's not perfect, to gain feedback and experience. Finally, it provides tips on how to package a project for a resume, highlighting the need to include links to the project, used technologies, and a brief description of the project's architecture and purpose.

Mindmap

Keywords

💡Development Project

A structured endeavor aimed at creating a software solution or application. In the context of the video, the development project serves as a practical learning experience, emphasizing the iterative process of coding and improving one's programming skills through hands-on practice.

💡Purpose of Development

The underlying reason or goal for engaging in software development, which goes beyond creating artful code or showing off expertise. It is presented as a means to an end, such as contributing to science or creating tools like BTS's裴榮 (Peerong), rather than an end in itself.

💡Learning Curve

The rate at which one acquires new skills or knowledge, often depicted as a curve that starts steeply and levels off as proficiency increases. In the video, the learning curve is discussed in relation to the challenges faced by beginners in development and the importance of starting small and building up complexity.

💡Iterative Learning

A process of learning through repeated cycles of reflection and action, where each iteration builds upon the previous one, leading to continuous improvement. The video emphasizes the importance of creating multiple projects to iteratively enhance one's development skills.

💡Code

A set of instructions or programming language statements that a computer can execute. In the video, code is likened to written language, with the act of development being akin to writing, where one must practice writing (coding) to improve their skills.

💡Design and Planning

The preliminary stage of a project where one outlines the structure, functionality, and aesthetics of the end product. The video stresses the importance of detailed planning before commencing development to avoid aimlessness and ensure a clear direction for the project.

💡Simplicity

The principle of minimizing complexity and focusing on the core functionality, especially when starting a development project. The video encourages beginners to begin with simple programs to avoid overwhelming complexity that can hinder progress and completion.

💡Avoiding Copy-Pasting

Refraining from directly copying and pasting code from others without understanding or modifying it. The video advises against this practice as it can lead to a lack of learning and understanding, instead advocating for learning through creating and modifying code to suit one's own projects.

💡Refactoring

The process of restructuring existing computer code without changing its external behavior. Refactoring improves the design, structure, and readability of the code, making it easier to maintain and extend. The video discusses refactoring as a necessary step in the development process to clean up and optimize the code.

💡Project Scope

The extent of work defined for a project, including its objectives, deliverables, and boundaries. The video emphasizes the importance of setting a clear project scope to avoid overextending oneself and to ensure that the project remains manageable and achievable.

💡Collaboration

The act of working together with others toward a common goal, especially in the context of a development project. The video discusses the challenges and benefits of collaborative work, highlighting the need for clear division of responsibilities and effective communication to avoid project stagnation.

Highlights

The importance of starting a development project from the beginner stage to learn and practice coding.

The purpose of development is not to create art or to show off expertise, but to create functional programs.

The necessity of making many programs to improve development skills, emphasizing practice over theoretical knowledge.

The suggestion to start development by creating simple programs to avoid complexity and ensure completion.

Avoiding copy-pasting code without understanding or modifying it, to truly learn and improve programming skills.

Recommendation to start with projects like a basic blog, notepad, or community forum for beginners.

The pitfalls of attempting to develop both server and client simultaneously as a solo developer due to increased complexity and divided focus.

The challenges of collaborative projects without clear division of responsibilities, leading to inefficiency and potential failure.

The advice to choose a specific area of development (server or client) to master and avoid spreading oneself too thin.

The importance of setting clear deadlines and goals (OKR) for the project to maintain focus and ensure completion.

The process of planning the project by detailing the features, screens, and UI elements required for the program.

The use of sketching and wireframing to visualize the project before starting development.

Prioritizing features and tasks, focusing on essential functions before adding extras.

Breaking down the development process into sprints, using tools like Trello for task management.

The approach to avoid aiming for perfect code from the start, and instead focus on iterative improvement through refactoring.

The principle of separating refactoring from feature development to maintain clean and focused progress.

The importance of releasing the developed program to gain feedback and experience, even if it's not perfect.

Packaging the project effectively for a resume or portfolio, focusing on key achievements and technologies used.

The recommendation to continuously refine the project based on feedback to improve its value and functionality.

Transcripts

play00:00

안녕하세요 오늘은 개발 프로젝트에

play00:02

대해서 이야기해 보겠습니다

play00:06

갯바위 프로젝트를 만드는 이유

play00:08

실패하는 이유 수전소재

play00:10

진행 방법 이런 모든 것을 상세히

play00:12

보도록 할게요

play00:15

프로젝트는 개발을 배우는 시작

play00:17

단계에서부터 작성해 보아야 합니다

play00:19

개발의 목적은 무엇인가요

play00:23

예술적인 코드를 만들기 대단한 높은

play00:26

소스를 만들기 전공 지식의 박식해서

play00:29

사람들한테 자랑하기 이런 것들은

play00:32

아니죠

play00:34

개발은 공부를 위해서 하지 않고

play00:37

과학을 위해서도 하지 않습니다

play00:39

bts의 피어런 물건을 만들기 위한

play00:42

수단일뿐입니다 개발한 프로그램 제작을

play00:44

위한 기술입니다

play00:46

만드는 연습을 하기 위해서 직접

play00:48

만들어 보아야 합니다 개발을 잘

play00:50

하려면

play00:51

프로그램을 많이 만들어야 합니다

play00:55

워낙에 개발이 배울게 많고 그러니

play00:57

기본기를 탄탄히 하고 프로그램을

play00:59

만들어 보겠다고 공부 열심히

play01:00

하시겠다는 분이 있어요

play01:03

근데 워낙 공부할게 많다보니 그러다

play01:06

보면 오히려 진도가 잘 안 나갈 수

play01:08

있습니다 공급을 하다가 끝날 수도

play01:10

있습니다

play01:13

공부만 하고 일단 시작해 보세요 일단

play01:16

만들면서 익혀보세요

play01:19

물론 처음부터 걸작을 만들 수는

play01:21

없습니다

play01:21

완성도가 처참하겠죠

play01:24

그러니

play01:25

습작 개발부터 시작해 완성도를 높여

play01:27

봅시다

play01:29

프로젝트를 만들어보면 개발 실력을

play01:31

단기간에 향상시킬 수 있습니다

play01:37

코드는 컴퓨터가 읽기 쉬운 언어입니다

play01:41

인간이 만든 글입니다

play01:42

개발은 코드를 쓰는 글쓰기입니다

play01:46

고전적 글쓰기 비법을 잘

play01:53

쓰는 비법을 많이 읽기 많이 쓰기

play01:56

많이 생각하게라고 합니다

play01:59

프로그래밍 개발은 장문 연습과

play02:00

유사합니다 개발의 비법은 결국에

play02:04

역시 코드를 읽기 코드를 쓰기 좋은

play02:06

코드를 생각하기에

play02:09

프로젝트를 만들어 보는 개발은 남이순

play02:11

코드를 읽고 내 코드를 쓰고 좋은

play02:13

코드를 생각하는 것입니다

play02:15

처음부터 좋은 코드를 쓸 순

play02:17

없습니다만

play02:18

쓰는 과정을 반복하면서 개발 실력을

play02:21

단기간에 향상시킬 수 있습니다

play02:24

프로젝트를 만드는 기준을

play02:25

알아보겠습니다

play02:27

프로젝트는 다음 3가지를 주안점에

play02:29

두고 작성해야 합니다

play02:31

첫째 구체적으로 설계를 먼저 하고

play02:33

개발에 들어가야 합니다

play02:35

세상에 없는 새로운 것을 만들려는

play02:38

것은 대단하고 상당한 동기부여가

play02:40

됩니다만 아예 굳이 독창적인 무언가

play02:44

모호한 것을 만든다고 생각하면

play02:47

엎어지게 됩니다

play02:49

그러니 개발자는 충분히 기획해야

play02:50

합니다 때가

play02:52

뭘 만드는지도 모르고 시작한다면

play02:55

완성을 포기하게 됩니다 만들어야

play02:58

하는 프로그램에 대한 설계도가 있어야

play03:00

됩니다

play03:00

완전히 설계하고 개발을 시작하세요

play03:03

머릿속 구상이 아니라 설계 문서로

play03:06

끝나야 합니다

play03:07

설계가 어려우면 기존에 참고하여

play03:10

구상하세요 그게

play03:12

기존에 있는 서비스라면 그걸 래퍼스트

play03:14

삼아서 대략적으로 구상할 수 있습니다

play03:15

아예

play03:17

새로운 무언가를 만든다면

play03:19

머릿속에서만 헷갈리고 개발 전에

play03:21

화면에 대한 설계를 모두 해야 합니다

play03:24

둘째로 가능한 간단한 프로그램을

play03:26

만들어 보세요

play03:28

복잡한 기능은 피하면서 구현해보세요

play03:31

프로그램은 복잡할수록 완성이

play03:33

어렵습니다

play03:35

애초에 작은 프로그램도 만드는데

play03:36

상당히 긴 시간이 걸립니다

play03:39

복잡한 대작을 만들려고 하면

play03:40

개발기간이 대책 없이 길어집니다

play03:43

대부분의 프로젝트는 중간 엎어질 때

play03:45

건질 수 있는게 하나도 없습니다

play03:48

프로젝트는 완성하지 않으면 의미가

play03:49

없습니다 내가 배우는 것도 없고

play03:52

남들에게 증명할 수 있는 것도

play03:54

없습니다

play03:55

굳이 복잡한

play03:57

프로그램을 만들려면 반드시 간단한

play04:00

프로그램의 연속으로 쪼개야 합니다

play04:02

그래야 그나마 중단의 중단되어도 남는

play04:04

것이 있고 완성 가능성도 높아집니다

play04:07

셋째로 코트 복사 붙여넣기는

play04:09

피해주세요

play04:11

그러나 무에서 유를 창조하는게

play04:12

아니라서 복사 붙여넣기는 할 수밖에

play04:14

없습니다 어느

play04:16

정도의 복사 붙여넣기가 적정선인지

play04:19

기적 향상에 도움이 되는지

play04:20

알려드리겠습니다 남의 코드를 참고해서

play04:22

보는 건 상관이 없어요 남들 다

play04:25

그렇게 말을 합니다

play04:26

블로그 등에서 발 치한 코드를

play04:28

짜집기에서 속도를

play04:29

갖다 쓰는 거 이거 괜찮습니다

play04:33

티스토리나 스테고버플러그 등에서

play04:35

참고하에서 만든 프로그램도 괜찮습니다

play04:38

하지 말라는게 뭐냐면

play04:40

강이나 책에서 예제로 만든 코드들이

play04:42

있어요 그걸 그대로 따라치면 강이

play04:45

완성본과 똑같은 웹사이트나 앱이 만들

play04:47

거란 말입니다

play04:49

이런 일체 프로그램상 변형이 없는

play04:52

마치

play04:55

강의록을 그대로 공책에 베껴쓰듯이

play04:57

하는 작업이

play04:58

복사

play04:59

붙여넣기입니다이를 하지 말라는

play05:01

말씀입니다

play05:03

응용 없이 따라치는 학습을 평화한다

play05:05

이런 건 아닙니다 아예 그 기술에

play05:07

대하여 아는 바가 하나도 없을 때

play05:09

따라 치면 감을 잡을 수가 있습니다

play05:12

기초입문으로 좋습니다

play05:14

그러나

play05:16

여러군데 필요한 코드를 반영해서

play05:17

자기가

play05:19

원하는 프로그램을 만드는 연습해야

play05:20

개발 신협이 향상입니다

play05:23

따라 치는 것은 감을 익히는 첫 단계

play05:25

하나 중요하지 그 이상 할 필요는

play05:26

없습니다

play05:28

요컨대 이곳저곳에서 코드를 찾아서

play05:30

원하는 프로그램을 만들기 위하여

play05:32

고치는 방식으로 개발을 하면 됩니다

play05:34

이제 첫 프로젝트로 괜찮은 주제들을

play05:36

추천해드리겠습니다

play05:38

가장 추천드리는 주제는 블로그 1기

play05:41

메모장입니다

play05:43

이런 프로그램은 텍스트를 생성하고

play05:45

불러오고 수정하고 지웁니다이 4개의

play05:49

작업은 개발해서 가장 많이 쓰이는

play05:50

작업이라 연습하기 좋습니다

play05:54

쉽고 참고자료도 많습니다

play05:56

첫 감과 자신감을 익힐 수 있어서

play05:58

왕초보가 시작하기 좋은 주제입니다

play06:01

생초보 기준으로 한 달 정도의 개발

play06:03

기간을 잡습니다 그다음

play06:06

단계로는 게시판과 커뮤니티입니다

play06:09

게시판과 커뮤니티는 여러 명이 있을

play06:10

수 있는 블로그 1기 메모장입니다

play06:14

블로그 메모장에서 회원가입과 로그인

play06:16

즉 인증이라는 주제가 병합된 형태죠

play06:20

이미

play06:21

기존에 만든 예모장에서 덧붙여 개발할

play06:23

수도 있고

play06:24

군할량의 은근히 많은 연습하기

play06:26

좋습니다 이때부터는

play06:28

인증을 어떻게

play06:29

처리하느냐에 문제가 생겨서 난이도가

play06:31

생깁니다

play06:32

초보 기준으로 석달 정도의 개발계획을

play06:34

잡습니다

play06:36

마지막으로 소개할 주제는 유틸리성

play06:38

앱이나 웹입니다

play06:41

지나치게 기술적으로 어렵지 않은

play06:42

간단한 주제를 고르시면 됩니다

play06:45

설문조사 더치페이 알람 시계 그외

play06:49

여러가지 주제를 잡으시면 됩니다

play06:50

너무 대작을 만들려고 하지 마시고

play06:54

의도적으로 스펙을 줄이시면 됩니다

play06:56

화면으로 치면

play06:58

4페이지를

play06:59

넘지 않으면 충분합니다

play07:02

간다면

play07:02

하면서도 창의적인 것을 만들 수가

play07:04

있습니다 자기가

play07:06

필요한 것을 만드므로 동기부여도

play07:08

확실하고 또 재밌습니다 그리고 설계도

play07:11

연습해 볼 수 있고요 이번에는

play07:15

프로젝트를 시작하실 때 따라하면

play07:16

중간에 망하기 쉬운 사례들을 안내해

play07:19

드릴게요

play07:20

서버와 클라이언트를 동시에 한 명이서

play07:22

개발하려고 하는

play07:26

시도입니다만 왜 현실적으로 망하는지

play07:28

알려드릴게요

play07:30

서버와 클라이언트를 모두 배우기에는

play07:32

좀 무리가 있습니다

play07:34

기본적으로

play07:36

서버와

play07:37

클라가 동시에 있는 프로젝트는 기술적

play07:39

난이도가 엄청 올라갑니다 개발자가

play07:44

서버와 클라이언들 다 알고 있어도 한

play07:46

사람이 번갈아 전환하며 개발한다면

play07:47

개발의 속도가 크게 떨어집니다

play07:50

백엔드와 클라이언트는 쓰는 언어도

play07:52

다르고 개발한 테크닉도 다릅니다

play07:55

번갈아가면서 하면 집중이 잘 될 리가

play07:57

없습니다

play07:59

그러니까

play08:00

서버와 클라이언트에 필요한 기술적

play08:02

역량을 가지는 것과 그것을 실제로

play08:05

번갈아 가면서 완벽하게

play08:07

빠진 구멍들을 메꿔 가는 것은 다른

play08:09

문제입니다

play08:10

개발이 끝없이 지연되어

play08:13

도저히 중단되게 될 거예요 그

play08:15

다음으로

play08:16

여러가지 협업해서 프로그램을 만드는

play08:18

것입니다

play08:20

실무의 현장은 여럿이 일하면서 하므로

play08:22

환영받겠죠

play08:23

성공하면 더 괜찮은

play08:25

작품이 나오기도 할 거고요

play08:27

말라는 건 제 사견이므로 적당히

play08:30

흘려들으시면 됩니다

play08:32

자발적인 모임은 와야 되기 쉽습니다

play08:35

월급 받고 하는 것이 아니라

play08:37

서로 다른 사정에 두 명의 시간을

play08:38

내서 짬을 내서 하죠

play08:40

갑자기 학업과 개인사정 재능 지식이

play08:43

평등하지 않습니다 이렇게 시간과

play08:46

의지가 한정되어 있는 경우에는 결국

play08:48

흐지부지되는 경우가 많습니다

play08:51

둘 다 의제가 충분하다고 해도 한쪽이

play08:54

리더십을 발휘할 숙련자가 아니게

play08:55

내면서 서로 행하게 됩니다

play08:58

작업을 하게 되면 결국 핑퐁을 하게

play08:59

되는데 상대방의

play09:02

작업을 기다립니다

play09:03

상대방의 사정에 의하여 시간이

play09:06

지연됩니다 아니면 뭐 상대방의 알아서

play09:10

잘 해주니까 난 그 사람을 믿고

play09:12

가만히 있으면 다 알아서 해주겠지

play09:14

이런

play09:15

눈치 싸움이 지속됩니다

play09:18

믿음을 가장한 공동의 태만 이렇게

play09:20

정인이 되겠습니다

play09:23

결국 시작은 상대수나

play09:25

우정도 했고 시간도 이렇게 되는 개발

play09:28

중단 엔진이 기다립니다

play09:30

이런 공동의 테만을 막기 위해서는

play09:34

각자의 임무와 책임을

play09:36

명확히 분리하는게 좋습니다 공동의

play09:39

책임은 누구의 책임도 아닙니다 두

play09:42

명의 연결 완벽하게

play09:43

분리하는게 중요합니다

play09:45

운명의 서버를 하면 한 명의

play09:47

프로트를 해야 됩니다 한 명이 서버를

play09:50

하면 한 명의 애분해야 됩니다

play09:52

플랫폼으로 책임을 나누어야 모호한

play09:54

영역분리로 인한 책임장과를 피할 수

play09:56

있습니다

play09:58

프로젝트가 원활히 제작되도록

play10:01

기한을 전달해야 됩니다

play10:03

기어는 안 지키는 것보다 정하고

play10:05

어기는게 좋습니다 마감이 있으면

play10:08

그래도 사람이 더 긴장해서 완성되게

play10:10

됩니다 마지막으로 대면으로 자주

play10:12

만나야 합니다

play10:14

책임을 분리하게 되면 전광환 비난과

play10:17

책임 죽음으로 프로젝트가 잘

play10:18

돌아갑니다

play10:19

앞으로 소개할 사항들은 프로젝트 개발

play10:22

난이도를 올리는 주제입니다

play10:25

흥전된 개발자가 만들면 개발 역량

play10:27

향상에 도움이 되지만

play10:29

처음 시작하시는 분들에게는 너무

play10:31

어려울 수 있습니다

play10:33

그래서

play10:34

초보자분들은 이런 뉴스를 피하는게

play10:35

좋습니다

play10:37

회원가입 로그인 위치 기반 서비스

play10:40

카카오 네이버 애플 같은 소셜 로그인

play10:44

푸시알림

play10:45

웹과 앱을 한 번에 동시에 개발하기

play10:47

이미지를

play10:49

서버에 업로드 하는 서비스

play10:51

동영상을 재생하는 서비스

play10:53

실시간 채팅을 지원한 서비스 이런

play10:55

기능들이 기술적으로 난이도가 높거나

play10:58

작업량이 엄청나게 많습니다

play11:01

어디다 존재한다고 만들기 쉽다고

play11:03

착각하면 안 됩니다

play11:04

앞서 말한 주제들은 하나

play11:07

구현해 한 달 이상이 걸린

play11:09

주제들입니다

play11:11

이제 프로젝트의 개발 요령을 많이 해

play11:13

볼게요

play11:15

처음으로 목표 정확히입니다

play11:17

okr이라고 합니다

play11:19

프로젝트를 만들어서 어떤 역할을 할지

play11:21

정하는 겁니다 수선으로서

play11:24

어떤 목적을 이루는지 목표를 정합니다

play11:27

예를 들어 개발자들이 사용하는

play11:29

블로그를 개발한다고 해봅시다 그럼

play11:31

이게 목표겠죠

play11:33

이 목표를 이루기 위해 프로그램을

play11:35

만들었을 때 이런 결과가 예상됩니다

play11:38

먼저 글을 쓰고 읽고 지우고 수정할

play11:40

수 있습니다 그리고 글 속에 코드를

play11:42

삽입할 수 있습니다

play11:44

그 다음은 기획하기입니다

play11:48

머릿속으로 구상하는 것은 생각보다

play11:49

구체화가 안 되어 있습니다 개발은

play11:52

항상 구상보다 오래 걸립니다 보안

play11:55

구상을 그대로 개발해 들어가면

play11:59

구상하면서 개발함이니까 시간이 더

play12:01

오래 걸립니다

play12:03

설교도 없이 공사에 들어가는 건

play12:04

무모합니다

play12:06

어떤

play12:06

기능을 추가하고 어떤

play12:08

화면을 구성할지 글로 써봅시다 두

play12:11

페이지 정도로 빼곡하게 써봅시다

play12:13

특별한 양식은 없으나 보통 이런

play12:15

내용들이 들어가야 합니다

play12:17

어떤 기능을 추가해야 될지 그 기능에

play12:20

어떤 화면이 들어가야 하는지 그

play12:22

화면은 어떤 ui들이 들어가야 하는지

play12:25

각각의 ui들을

play12:27

어떤 문제가 들어가고 어떤 텍스트가

play12:28

들어가는지

play12:30

눌렀을 때는 무엇을 해야 되는지

play12:33

어떤 걸 먼저 개발하고 어떤 걸

play12:34

나중에 개발할지 등등입니다

play12:37

처음에는 개괄식으로

play12:39

쓰되 맨 마지막엔 결국엔 완전한

play12:42

문장으로 쓰여야 합니다

play12:44

요약본 같은 개조식으로 하면 그

play12:47

형식상 군데군데 빠져있는 부분이

play12:49

생기거든요

play12:51

그 다음은

play12:52

구상한 프로젝트의 화면을 그리기입니다

play12:55

쓴 글을 바탕으로 화면을 그려 봅시다

play12:58

디자인 예쁠 필요는 없습니다만

play12:59

상상력이 개입이 파일이죠 제가 아예

play13:02

없이 그것만으로 앱을 만들 수 있는

play13:04

정도로 정리가 되어야 합니다

play13:07

스케치를 공책에 그려보면서 대충

play13:09

컨셉을 잡으면 그것을 바탕으로 화면

play13:11

목업을 만들어 봅니다

play13:13

목업들의 도움을 받아 봅시다

play13:15

오른쪽으로 갈수록 사용법이 쉽습니다

play13:17

모두 익힐 필요는 없습니다

play13:19

개인적으로는 저는 카카오븐을

play13:21

선호합니다

play13:23

웹기가매니아에서 설치가 필요 없는

play13:25

데다가 무료고

play13:27

필요한 UI 오브젝트들은 다 끌어서

play13:29

쓸 수 있거든요

play13:31

그 다음은 우선순위 정하기입니다

play13:34

기능들의 우선순위를 정하고 화면 좋은

play13:36

것 해야 할 것을 구별하는 과정입니다

play13:40

필수 기능만 개발하도록 정합니다

play13:42

개발 블로그 예측으로 돌아갈까요

play13:45

글을 쓰고 읽고 지우고 수정할 수

play13:47

있어야 하는 건 필수 기능입니다

play13:49

글 속에 코드를 소입할 수 있는 건

play13:51

선택입니다 위에 걸 먼저 개발하고

play13:53

밑에게 나중이죠 그 다음으론 개발을

play13:56

작업들을 테스크 나누기입니다

play13:59

각각의

play14:00

어떤

play14:00

기능을 개발할지 투두 리스트를

play14:02

작성합니다

play14:03

작업은 이틀 정도 작업했을 때

play14:05

깔끔하게 작업할 수 있는 것이

play14:06

좋습니다 예를

play14:08

들어서 그를 쓰고 읽고 지우고

play14:10

수정하는 기능은

play14:12

쓰기 읽기 지우기 수정하기에 4가지

play14:14

덱스크를 낼 수 있습니다 이제

play14:18

날개 쪽엔 작업들의 분량을 얼음에

play14:19

봅시다 불확실성

play14:21

복잡성 숙련도 등을 보고 대충

play14:24

때려졌습니다

play14:26

제가

play14:27

임의로 걸리는 기간을 적어보았습니다

play14:31

이제 스프린트를 계획합니다

play14:33

스프린트는 2주 정도 주기에 개발

play14:35

기간입니다

play14:37

각각

play14:38

스프린트 전에 어떤 작업을 할지

play14:40

계획을 하고 개발에 들어갑니다

play14:42

스프린트는 머나먼 길을 2주로 쪼개어

play14:45

실현 가능하도록 만듭니다

play14:47

스프린트 계획은 감반보드라는 도구가

play14:49

사용합니다

play14:50

지금 다 허파할 것들을 관리하는

play14:52

일종의 투두 리스트입니다 이런

play14:55

식으로 열로 태스크들을 누려 놓으며

play14:57

관리하는 보드입니다 아틀레시안사의

play15:00

지라라는 프로그램이 칸반보드로

play15:03

유용하게 사용됩니다

play15:05

칸반보드에서 태스크를

play15:06

옮겨가면서

play15:08

진행 예정인 작업

play15:09

진행 중인 작업

play15:10

끝난 작업으로 관리합니다

play15:13

스프린트 계획이 끝나면 개발을

play15:15

시작합니다 하기 싫은 노동이죠

play15:18

캬바레에 대한 개인적인 요령을 말해

play15:20

볼게요

play15:22

처음부터 완벽한 코드를 짜려고 하지

play15:24

마세요 예쁜

play15:25

코드와 클린한 패턴을 만들려고 하지

play15:27

마세요

play15:28

엉망으로 만들고 감당해야 될 때 다시

play15:30

뜯어고쳐보세요 개발이

play15:33

진행되면서 백로그를 관리하고

play15:35

리팩터링을 진행합니다

play15:40

백로그를 기록하되

play15:42

지우지 않고 미루는 죄책감이라고 정의

play15:44

내리겠습니다

play15:46

백로그는 본질과 거리가 망한 작업들을

play15:48

나중에 해결하기 위해 쌓아둔

play15:49

작업입니다

play15:51

개발을 하다 보면

play15:53

구체적으로 버그가 생기거나 마이너

play15:55

하지만

play15:56

해결하지는 가성비가 안 나온 작업들이

play15:59

생깁니다 나중에

play16:01

객관적으로 보면 자기

play16:03

욕심일 수도 있습니다 이런게 생길

play16:05

때마다 그때그때 고치려고 하면

play16:07

본질적인 프로젝트에 대한 집중도가

play16:10

떨어질 수 있습니다

play16:14

의도적으로 미루면서 우선순위를 나중에

play16:16

따져보겠다는 거죠 그리고

play16:19

다음 스프린트에 백로고들을

play16:21

실제로 처리할지 말지 고려합니다 그

play16:24

다음 리팩터링입니다

play16:25

리프터링은 코드를 깔끔하게 정리하는

play16:27

작업입니다

play16:28

공부하기 전에 방 청소하고 싶고

play16:31

유튜브

play16:32

잠깐 보고 싶고 그러잖아요

play16:33

그렇게 개발을 하려고 마음을 먹으면

play16:35

그때

play16:37

새로 만드는게 아니라

play16:38

코드를 청소하고 싶은 마음이

play16:39

있어도납니다 그런데 다 리팩터링을

play16:42

하려는 그런 욕구죠 그걸 언제

play16:46

코드는 언제 망가질까요 개발 능력이

play16:49

미숙할 때 수도 있고 아니면 여러

play16:51

예부

play16:52

요인으로 인해 촉박해진 배포 일정과

play16:54

아무도 생각하지 못했지만 갑자기

play16:57

생각난 변수 그리고 야근의 연속

play16:59

같은게 코드를 망가뜨립니다 그래서

play17:01

이렇게 망가진 코드들을 보면 아 이때

play17:03

좀 무슨 사연이 있었나 보거든요

play17:06

하는 말하는 문화가 있습니다

play17:09

망가져서 읽기도 힘들고 수정하기도

play17:11

힘든 코드를 내 것이라고 합니다

play17:14

한국말로 러버라고 하죠

play17:16

리팩터링은 앞으로 청산하여

play17:18

코드를 읽기 쉽게 고치는 작업이라고

play17:21

볼 수 있습니다

play17:22

노컨대 리팩터링은 추가 기운이 쉽도록

play17:25

코드를 읽기 쉽게 정리하는 과정입니다

play17:28

리피토링을 하는 원칙들을 몇 개

play17:30

훑어보겠습니다

play17:31

마틴 파울러라는 분의 미디펙터링이나

play17:35

베스트셀러에 나오는 문구입니다

play17:37

리팩터링과 기능 추가는 동시에

play17:39

수용하지 않습니다 두 가지

play17:41

구별된 작업인 기능 추가와

play17:44

리팩토링을 위해 시간을 나누어야

play17:45

합니다

play17:46

기능을

play17:47

추가할 때는 기존

play17:49

코드를 건드려서는 안 되고 그냥

play17:51

새로운 기능만 만들어야 합니다

play17:54

어떤 작업을 할지는 계속 바뀌어도

play17:56

됩니다만 자기가 지금 기능 추가를

play17:59

하는지 리팩터링을 하는지는 기억을

play18:01

해두고

play18:02

프로그래밍을 해야 합니다

play18:05

에팩토링은 처음엔 그냥 합니다

play18:06

비슷한 일을 두 번째로 하게 되면

play18:08

일단 계속 진행합니다

play18:11

비슷한 일을 세 번째로 하게 되면

play18:13

그때 리팩터링합니다

play18:15

디저트는 코드를 발견하더라도 굳이

play18:17

수정할 필요가 없을 때에는

play18:19

리프터링을 하지 않아야 되는 겁니다

play18:21

자주 수정되어야 하는 코드만 고치고

play18:24

그렇지 않으면 그냥 갖다 쓰면 됩니다

play18:26

마지막 단계는 만든 프로그램을 앱이다

play18:29

외부로 배포하는 작업입니다

play18:31

배포하지 않은 프로그램은 가치가

play18:33

없습니다 중단되더라도

play18:35

갈무리하여 배포를 해야 합니다 배포를

play18:38

하게 되면 남에게 써보라고 할 수

play18:39

있습니다

play18:40

프로젝트의 주목도가 높아지죠 그리고

play18:43

서비스를 계속해서 운영하며 애정이

play18:45

생깁니다

play18:46

이제 배포까지 끝냈으면

play18:48

맞는 프로그램을 포장해 봅시다

play18:51

구직을 위해 프로젝트를 만드는 경우

play18:53

포장을 해야 됩니다 모든 구직자의

play18:55

코드를 다 검토할 시간이 없기

play18:57

때문입니다

play18:58

포장은 한 달 이상의 효과를 핵심만

play19:01

치료에 요약하는 것이므로 한 번을

play19:02

내지는 않습니다 주변

play19:04

지인의 피드백을 받으며 취직에 성공할

play19:06

때까지 지속적으로 고쳐 봅시다

play19:08

이력서에 포장하는 요령을

play19:10

알아보겠습니다

play19:11

이력서는 공간이 짧음으로 자세한

play19:14

설명에 담겨있는 기타보의 링크를

play19:16

넘기는 것으로 가능합니다 그 외에

play19:19

구현 링크 설치 링크 불코드 링크

play19:21

사용한 기술주택 정돈을 적어봅시다

play19:25

키터부의 포장하는 요령을

play19:26

알아보겠습니다

play19:28

기타브 리드미 파일을 올리면서

play19:30

프로젝트에 관한 설명을 적어 볼 수

play19:32

있습니다 좀 더 불량 제한해서 이력서

play19:36

보라는 자유롭습니다

play19:37

프로그램에 실행 화면 비에트 방법

play19:39

아키텍처 그 아키텍처를 사용하는 이유

play19:42

등을 상실하게 적어봅시다 이상으로

play19:44

프로젝트에 대한 제 생각을

play19:46

말해보았습니다

play19:47

시청해주셔서 감사합니다

play19:49

Rate This

5.0 / 5 (0 votes)

Related Tags
Project DevelopmentCoding SkillsAvoiding FailureDesign PrinciplesSoftware DeploymentLearning StrategiesCollaborative ProjectsCode RefactoringPortfolio BuildingJob Application