블로그
전체 3#카테고리
- 백엔드
#태그
- 인프런
- 스터디
- 워밍업
- 클럽
- 발자국
- 0기
- 객체지향
- 절차지향
- 설계
- 워밍업클럽
- 스터디0기
- 백엔드
2024. 03. 12.
0
[인프런 워밍업 클럽 스터디 0기 발자국] 마무리 3주차
안녕하세요. 주니어 백엔드 개발자를 꿈꾸는 12hugs 실명은 진영준입니다. 😉지지난주 월요일부터 인프런 워밍업 클럽 스터디 0기를 시작했으며,3주차에는 어떤 일이 있었는 지에 대해 간단하게 회고하며, 끝으로 어떤 생각이 들었는지에 대해간단한 회고를 마지막으로 스터디를 마무리해보겠습니다.아직도 갈 길은 멀다.개발을 하면 할수록 가까워지기보다 멀어지는 느낌을 많이 받습니다.아무래도 1년도 안되는 시간동안 공부해서인지 머리는 뒤죽박죽에 연결되는 부분들이 많이 없습니다.지나가는 말로 어떤 강사는 다음과 같이 말합니다."자기가 가진 지식들이 모두 연결되는 시점이 온다. 그때 떠올릴 것이다. 지금까지 공부했던 게 헛것이 아니구나"이 말이 저에게 가장 큰 동기가 되었습니다.비록 지금은 어려운 개념에 머리가 깨지고 힘든 시절이지만, 제가 아는 지식들이 모두 다연결되는 시점이 오리라고 저는 한번 희망찬 생각을 해봅니다. 급하게 마음먹지 말자.인프런 스터디를 하며 문득 든 생각은 전공자들도 상당히 많거나현업자도 충분히 많다는 사실을 많이 느꼈습니다.이걸 뼈저리게 느낀 부분은 라이브특강 때 질문의 수준입니다.항상 라이브특강을 진행하면서 제 부족한 부분이 너무 잘 드러나는 부분들이 많습니다.전혀 귀에 들어오는 말이 없고, 맥락조차 파악하지 못하는 부분에서저는 항상 급하게 마음을 먹게 됩니다.어려운 개념을 빨리 끝내거나 이해했다고 넘어가며 혼동을 주는 것이지요.하지만, 깨달은 점도 있습니다. "급하게 마음먹지 말자"천천히 조금씩 꾸준히에 제 개발실력은 늘어갈 것입니다.이게 제가 3주차까지 스터디를 마친 시점에서 가장 먼저 떠오르는 문장인 것 같습니다. 앞으로 어떻게 해야할까?앞으로 저는 좀 더 본질적인 공부를 하기로 마음먹었습니다.객체지향에 대한 심층공부를 통한 프로젝트CS전공지식 노트 기반 공부 지식넓히기예외처리는 어떻게 하는 것인가?(validation)일단 가까운 시일내에 공부할 내용은 위와 같습니다.코드를 치는 것도 좋지만, 좋은 코드를 치는 것만큼 올바른 일은 없을 것입니다.그렇기에 저는 이번년도 2분기에 누군가가 객체지향과 CS에 대해 물어본다면,적절한 예시와 함께 설명을 해줄 수 있는 사람이 되도록 노력할 것입니다.
백엔드
・
인프런
・
스터디
・
워밍업
・
클럽
・
발자국
・
0기
2024. 03. 03.
0
[인프런 워밍업 클럽 스터디 0기 발자국] 2주차 회고
안녕하세요. 주니어 백엔드 개발자를 꿈꾸는 12hugs 실명은 진영준입니다. 😉지난주 월요일부터 인프런 워밍업 클럽 스터디 0기를 시작했으며,2주차에는 무엇을 느꼈고 무엇을 공부했으며 어떤 사실을 깨달았는 지에 대해공유를 해볼까합니다. 그럼 시작합니다!내가 알던 JPA는 더욱 넓은 세계였다.제가 알던 JPA는 단순히 백엔드 개발자가 SQL언어에 대한 공부를 따로 해야하기도 하고,좀 귀찮기때문에 나온 개념이라고 생각했습니다.그래서 별 거 아닌 존재라고 생각하기도 했고, 간과한 부분이 없지 않아있었습니다.그렇지만, 강의를 들으면서 JPA의 기능에는 놀라운 기능들이 있다는 것을 알게되었습니다.existBy, countBy 등등 많은 기능을 지원하기도 하고, 직접 @Query 어노테이션을 통해JPQL언어로 DB에 SQL을 날릴 수 있는 것도 확인하였습니다. 그리고 하이버네이트란 무엇이고, JPA와 ORM은 무엇인지에 대한 개념도 잡히게 되었습니다.아무래도 너무 야생형으로 공부한 입장으로 해당 기능과 관련된 지식이 없으면구글링조차 할 수도 없기때문에 해당 단어들과 기능들은 사막의 오아시스와도 같았습니다. 객체지향 모두 지향하지만, 사실 지양하고 있다.객체지향이 중요하다는 점은 모르는 사람이 없을 것입니다.사실 이런 개념때문에 객체지향언어들이 각광을 받기도 합니다.하지만, 저는 전혀 객체지향을 하고 있지 않았습니다. 제가 짠 로직들은 전부 절차지향이었으며,class가 주인이 되는 코드를 짜왔습니다. 그렇지만, 이번 2주차를 통해 객체지향에 대한 개념이 조금 잡히기 시작했습니다.이건 미니프로젝트를 진행하며, 느낀 부분이었습니다.저는 원래 평소와 같이 서비스에 모든 비즈니스 로직을 쑤셔넣었습니다.하지만, 제가 쓴 코드인데도 불구하고, 읽기가 힘들고, 이해하기가 힘들었습니다.다시 말하자면, 코드싸개였고, 전혀 객체지향적이지도 못했습니다.출처 : https://namu.wiki/w/%EC%BD%94%EB%8D%94 그렇지만, 객체지향을 공부하기 시작하면서 객체의 불변성을 유지하기 위해서기존 테이블 @Entity 객체의 @Setter을 빼고, 정말 객체끼리 상호작용 및 의사소통을 하며,비즈니스 로직의 간소화를 진행할 수도 있었고, 훨씬 깔끔해진 코드와 함께 가독성 또한 좋아지게 되었습니다. 그래서 2주차를 통해 얻게 된 것은?프로젝트를 진행하기 전에 요구사항과 설계가 중요했다는 점을 강조하고 싶습니다.요구사항 스펙은 사람들이 원하는 기능을 함축해놓은 스펙입니다.즉, 클라이언트가 원하는 기능이 없다면, 개발자는 필요가 없어지게 되겠죠. 그리고 설계가 굉장히 중요합니다.설계를 잘 해놓고 시작해야 변수사항에 대해 잘 대처를 할 수 있으며,보다 유연하고, 객체지향적인 코드를 짤 수 있다는 생각을 했습니다. 그래서 저는 처음에 설계를 안하고 미니프로젝트를 시작했기 때문에며칠뒤 코드를 처음부터 다시 짜는 불상사를 일으켰습니다. 더욱 유연하고 뛰어난 개발자가 되고 싶다면,공부도 물론 중요하겠지만, 설계와 요구사항을 충분히 이해하고객체지향적으로 코드를 짤 줄 아는 개발자여야 한다는 걸 깨닫게 된 2주차였습니다.
인프런
・
객체지향
・
절차지향
・
설계
・
워밍업클럽
・
스터디0기
2024. 02. 24.
0
[인프런 워밍업 클럽 스터디 0기 발자국] 1주일동안의 스터디 후기
안녕하세요. 주니어 백엔드 개발자를 꿈꾸는 12hugs 실명은 진영준입니다. 😉이번에 좋은 기회를 통해 인프런 워밍업 클럽 스터디 0기에 참여하며, .일주일동안 무엇을 느꼈고, 무엇이 부족했는 지 그리고 무엇을 더 공부해야하며,무엇을 통해 앞으로의 개발자 커리어를 쌓아가야할 지를 소소하게 공유해볼까 합니다. 이번 스터디를 통해 무엇을 느꼈고 무엇이 부족했는지?사실 이번 스터디 0기를 좀 과소평가하였습니다.나름 인프런 강의들을 구매하여 좀 이해했다는 자만심도 한 몫 했을 것입니다.하지만, 모든 일이 그렇듯 순탄히 흘러가지는 않았습니다.강의의 내용은 이해가 갔으나 막상 제가 가진 기술로 과제를 풀어가는 것은 완전 별개의 문제였습니다. 무엇이 그렇게 어려웠는데??- 커뮤니티(디스코드)의 질문내용의 수준이 높다는 것을 알았습니다.- 비전공자 입장에서 하나의 스프링 기술만으로는 스텍이 많이 부족하다는 것도 깨달았습니다.- 특강 혹은 과제를 진행함에 있어서 현재 기술스텍으로 문제를 풀어가는 데 있어서 어려운 점이 많았습니다.예시를 들어볼까요? 😏java @Repository public interface FruitRepository extends JpaRepository { @Query("select new " + "com.study.assignment.domain.dto.response.FruitStatResponseDTO(f.state, sum(f.price)) " + " from Fruit f " + "where f.name = :fruitName " + "group by f.state") List response(@Param("fruitName") String fruitName); }위의 코드는 4일차 과제였으며, 내가 원하는 DTO로 response를 받기위해 JPQL을 사용하여 DB를 조회했던 쿼리입니다.JPA는 제가 response를 받고 싶은 DTO란 객체를 모르기 때문에 저렇게 명시를 해주어야 DTO 값으로 데이터를 돌려줄 수 있다는 것을 알게 되었습니다.위의 코드는 참고로 제가 작성한 코드가 아니고 같이 스터디하는 형이 알려준 코드입니다. 1주일동안 문제를 어떻게 해결했고, 무엇을 더욱 공부했는지?첫 번째, 기초로 돌아가 자바에 대한 공부를 진행했습니다." 자바 공부 "자바에서 어려운 개념인 상속이란 개념부터 내려갔습니다.왜냐하면, 익명클래스를 공부하던 중 궁금한 점이 점점 뿌리를 내려가다보니 상속개념까지 내려가게 되었습니다.그러던 중 this, super 등의 개념도 중요하다는 것을 깨달아 공부를 하였고,아직도 부족하지만 계속 java의 기본 개념과 객체지향을 공부하며 java 스텍을 넓혀갈 생각입니다.두 번째, 메타인지를 넓히며 공부하자." 갑자기 무슨 뚱딴지같은 소리이지? "저는 이번 스터디에 함께 참가하고 같이 공부를 진행하는 친한 형이 있습니다.일종의 라이벌 관계라고 저는 생각하지만, 암튼 그 형을 보며 저는 항상 많이 부족하다는 것을 느낍니다.저는 어떤 개념을 익혀도 금방 까먹고, 누가 설명해보라고 하면 당연히 설명을 못할 것입니다.반대로 형은 어떤 개념을 익혀도 오랫동안 기억하며, 제가 설명을 요청할 때는 완벽한 설명을 진행합니다.그래서 같은 개념을 들어도 오랫동안 공부머리를 확장해갈 방법을 생각하던 중 메타인지를 넓히며 공부를 하자고 생각했습니다.내가 공부를 하며 모르는 개념에 봉착할 때 모르는 것을 기록해두고 (모르는 것을 알게됨), 확실하게 아는 것은 남에게 설명해줄 수 있는 레벨이 될 때까지 공부하는 것입니다.실제로 도움을 많이 주기는 하지만 평소에 안하던 것을 하려니 좀 힘든 건 사실입니다.그래도 포기보다는 꾸준함이겠죠? 다음주도 같은 공부방법으로 발전해나아갈 생각입니다.무엇을 더 공부해야 내가 발전할 수 있을까?" 스프링만으로는 메리트가 없다. "저는 확실하게 제가 가진 기술은 형편없다는 것을 알았습니다."그렇다면 어떤 개념을 더욱 익혀야 좋을까?" 라는 생각을 하였습니다.그래서! 저는 다음주부터 제가 모르는 개념을 이 곳에 기록해보기로 했습니다." 내가 모르는 것은 "- 자바의 상속개념이 왜 필요하며, 상속을 할 때 얻을 수 있는 이점을 설명할 수 있는가?- 자바에는 스트림이란 기술이 있던 데 스트림은 무엇인가?- 자바의 리플렉션이란 개념을 설명할 수 있는가?- 싱글쓰레드와 멀티쓰레드란 무엇인가?- 스프링의 동작원리에 대해 설명할 수 있는가?- JPA의 영속성 컨테스트에 대한 설명을 해보시오.- JPQL의 문법은 어떻게 되는가? 사실 혼자서 공부하라고 했으면 너무 방대한 지식의 바다를 헤엄치며, 갈피를 못잡고 방황했을 지도 모른다.그렇지만. 내 주변에서 함께 공부하며 알려주려는 사람과 인프런 스터디 0기를 통해서 조금 방황을 덜 하고,원하는 방향을 잡고 발전할 수 있다는 사실이 너무 감사하다.java public void 일주일후기(){ Developer developer = new Developer(); String goal= "훌륭한 개발자"; String me = "개린이(개발어린이)"; while(goal == me){ developer.study(me); // 계속 공부하란 뜻 ;;; } }
백엔드
・
인프런
・
백엔드
・
스터디0기