프로그래밍을 학습할 때 기둥이 되는 지식
개요
개발자의 수요가 많아지고 많은 사람들이 개발자가 되기 위해 도전하고 있습니다.
신입 개발자까지는 다양한 방법으로 달성하고, 성취감을 가지게 됩니다. 다만, 그 이후부터는 많은 선택지와 어려움을 마주하게 됩니다.
대학 과정과 부트캠프, 학원에서 가르치는 방식이 더 나은 개발자로 나아가는 데는 도움이 안 될 수 있습니다. 더 나은 개발자는 스스로가 공부하며, 주춧돌이 되는 지식을 쌓아야 합니다. 그래야 새로운 기술을 사용할 때, 접근 방법에 대해서 채득 할 수 있습니다.
주니어 이하의 개발자의 목표는 프로그래밍 기초 마스터 및 라이브러리와 프레임워크의 중요성을 이해하는 것입니. 클라우드, CI/CD 등과 같은 고급 주제는 즉시 배우는 것이 아닙니다. 먼저 기둥을 세우고 난 뒤에 배워도 늦지 않습니다.
5가지 기둥
테스트 주도 개발(TDD)
TDD에 대한 많은 예찬론이 있다. 맞다. TDD는 개발을 할 때, 프로젝트에 신뢰성을 주고, 나아가 기능 하나하나도 신뢰성을 부여할 수 있다. 코드가 변경될 때, 당연히 되던 것들이 오류가 나지 않게 하는 좋은 방법론입니다.
단, 신입은 바로 테스트를 작성해서는 안됩니다. 차라리 테스트를 사용하고 작업하는 방법을 배워야 합니다. 왜 테스트를 사용하는지, 시니어가 어떻게 테스트를 작성했는지를 알아야 합니다. 아무리 TDD가 좋다고 하더라도, 처음부터 테스트를 작성하기 시작하면 TDD를 받아들이기 어렵습니다. 즉, 먼저 사용해보면서 TDD의 이점을 직접 체험해야 합니다.
그다음 하나씩 단위 테스트로 테스트 작성을 연습해야 합니다. 단계적인 공부가 필수이며, 무조건 좋다고 주입식으로 진행하면 안 됩니다. 그렇게 TDD 작성하는 것을 습관화해야 합니다.
그리고 TDD를 하면서 디버깅 연습이 필수로 들어가야 합니다. TDD는 디버깅 기술의 자동화로 디버깅 기술이 없다면 TDD를 제대로 작성할 수 없습니다. 디버깅을 먼저 배우고, 단위 테스트 작성 습관을 가지게 해야 합니다.
직장 생활을 하면서 단위 테스트가 없다면 단위 테스트를 작성하는 노력을 해야 합니다.
기본 문법
신입 및 주니어 개발자는 기본적인 요소와 코드 작성에 익숙해야 합니다. 처음부터 프레임워크를 사용하는 것보다 언어의 기본 요소, 철학, 방향성을 알고 있어야 합니다. 거기서 파생된 프레임워크, 라이브러리를 이해하는데 프로그래밍의 기초를 이해해야 합니다. 초보자에게는 함수, 변수, 조건, 루프 등 기본 개념이 완전히 생소할 수 있습니다.
처음 개발을 시작하는 초보자는 프레임워크나 라이프러리보다 언어의 기본 요소, 철학, 방향성을 먼저 공부해야 합니다. 익숙해질 정도로 언어를 사용하고, 기본 문법과 요소 공부에 많은 시간을 할애하세요. 기본은 언제나 중요하며, 고급으로 올라갈수록 기본의 중요성이 발현됩니다. 고급 개발자가 됐을 때, 기본을 다시 공부하는 것만큼 어려운 것이 없습니다.
라이브러리 및 프레임워크
올바른 라이브러리 선택은 현대 개발자의 필수 소양이 되었습니다. 흔히 사용되는 라이브러리, 프레임워크의 기본 사용법을 공부하고, 어떤 문제에 대입해야 해결 할 수 있는지 확인해봅니다. 이 과정을 통해 고급 개발자의 생각과 방향성, 개발 철학을 엿볼 수 있고, 그들이 작성하는 방식을 공부할 수 있습니다.
추가로 과도한 라이브러리 도입에 대한 문제도 고민할 수 있습니다. 스스로 작성해도 큰 노력이 들지 않는 문제에도 거대한 프레임워크, 라이브러리를 도입하는 것은 자원 낭비가 될 수 있습니다. 또한, 코드 충돌 및 중복 라이브러리 사용 등 다양한 문제가 있고, 어플리케이션이 무거워지는 이슈가 있습니다. 이러한 고민을 할 수 있다면 주니어 개발자는 벗어날 수 있습니다.
라이브러리와 프레임워크를 사용해야 하는 이유와 사이드 이펙트에 고민할 수 있어야 합니다.
멘토와 멘티
멘토와 멘티는 어떤 도움이 될까요? 이 글을 쓰는 저자도 멘토에게 멘토링을 받을 적이 있습니다. 해외에서 일하시는 개발자였고, 오픈 소스 회사에서 일을 하고 있었으며, 깊이가 다른 지식을 가지고 있었습니다. 멘토에게 자신이 직접 쌓은 노하우를 들을 수 있었고, 독학했다면 몰랐을 깨달음을 공유해주셨습니다. 또한 잘못된 개발 습관을 피드백받았고, 문제 해결하는 여러 방법을 전수받을 수 있었습니다.
어떤 분은 독학으로도 충분하다고 할 수 있습니다. 저자도 그 이후에 멘토를 따로 만들거나 하진 않았습니다. 그러나 먼저 앞서간 사람의 강의나 책을 사는 것에 돈을 아끼진 않았습니다. 멘토는 지름길을 알려주는 사람입니다. 또한, 길을 찾기 위한 노력을 많이 단축할 수 있도록 도와 줍니다. 그리고 멘토가 있다면 도전을 했을 때, 피드백을 통한 오류 수정이 쉽게 이루어집니다. 좋은 멘토는 빠른 성장의 좋은 거름이 된다는 사실을 알아야 합니다.
멘토는 멘티를 가짐으로써 누군가를 가르치는 방법을 터득하게 됩니다. 멘토는 시니어 이상 개발자가 될 수도 있지만 주니어 개발자도 신입과 초보자에게 멘토가 될 수 있습니다. 자신이 아는 것을 설명하는 것은 매우 중요한 기술입니다. 자신이 알고 있는 것을 누군가에게 쉽게 이야기 하는 것은 시니어 및 CTO급에서 필요한 능력입니다. 멘티에게 조언할 때는 한 명씩 조언을 해야 합니다. 각자의 상황이 다르고, 각자의 지식이 다르고, 경험이 다르기 때문입니다. 초창기는 자신이 알고 있는 개발과 관련된 규칙을 알려주고, 멘티가 성장한다면 토론의 여지가 있는 문제를 주어 함께 토론하고 지혜를 나누는 멘토가 되어야 합니다.
도전과 동기부여
동기 부여는 개발 작업을 하는데 큰 원동력이 됩니다. 초보자는 아직 아는 것이 없고, 시야가 좁기 때문에 동기 부여가 없다면 나아갈 때 많은 어려움을 겪게 됩니다. 쉽게 포기할 수 있으며, 기술을 공부하는 이유를 잃어버리게 됩니다. 우리는 개발이 많은 연습을 통해 성장한다는 것을 알고 있습니다. 하지만 처음 개발을 하거나 아직 경험이 적은 개발자는 연습에 대한 목적을 잘 모를 수 있습니다.
우리는 생각보다 적은 코드를 작성합니다. 에러를 잡거나, 말도 안되는 일에 시간을 쓰는 등 다양한 이슈로 코드를 적게 작성할 수 있습니다. 이러한 상황은 많은 현업을 한 사람들은 알고 있습니다. 초보자와 주니어에게 현실을 알려주며, 현실에서 더 나은 상황을 만들기 위한 방법을 공유하고 이야기해줘야 합니다.
초반에는 이러한 경험을 즐겨야 합니다. 개발자는 문제 해결사이며, 코딩하는 원숭이가 아닙니다. 그렇기 때문에 코딩을 못하더라도, 문제를 해결하는 것을 즐겨야 한다는 것을 꼭 알아야 합니다. 코딩 한줄 작성하지 않고, 다른 사람의 문제를 해결했다면, 그 개발자는 매우 훌륭한 개발자라고 할 수 있습니다.
결론
개발자는 하루 아침에 뚝딱 되는 것이 아닙니다. 충분한 공부와 연습, 그리고 경험을 통해 완성되어갑니다. 1,2개월 만에 공부해서 취업이 가능할 순 있습니다. 각자의 지식량과 경험이 다르고, 시작점이 다르기 때문이죠. 하지만 지속적으로 발전하는 개발자가 되기 위해서는 단기간에는 불가능합니다. 지속해서 공부해야 하고, 연습하고, 경험해야 합니다.
참고하면 좋은 글
참고
아래 내용을 주관을 넣어 번역한 글입니다.
I am sure this article has touched all the
internet visitors, its really really fastidious article on building
up new weblog.
Nice weblog right here! Also your site a lot up very fast!
What host are you using? Can I am getting your associate link for
your host? I wish my site loaded up as quickly as yours lol
I want to to thank you for this great read!!
I certainly enjoyed every little bit of it. I have got you book-marked to
check out new stuff you post…
Exceptional post but I was wondering if you could write a
litte more on this topic? I’d be very grateful if you could elaborate a little bit more.
Thank you!
Hello there, just became alert to your blog
through Google, and found that it is really informative.
I am going to watch out for brussels. I’ll appreciate if you
continue this in future. Numerous people will be benefited from your writing.
Cheers!
It’s fantastic that you are getting ideas from this article as well as
from our discussion made here.
Having read this I believed it was really enlightening.
I appreciate you taking the time and energy to put this information together.
I once again find myself personally spending a significant amount of time
both reading and commenting. But so what, it was still worth it!
My programmer is trying to persuade me to move to .net from PHP.
I have always disliked the idea because of the expenses.
But he’s tryiong none the less. I’ve been using WordPress on several websites for
about a year and am worried about switching to another platform.
I have heard great things about blogengine.net.
Is there a way I can import all my wordpress content into it?
Any help would be really appreciated!
What’s up, its fastidious piece of writing concerning media
print, we all be aware of media is a impressive source of data.
I believe that is one of the so much significant information for me.
And i am satisfied reading your article. But wanna observation on few
normal issues, The website style is ideal, the articles is in reality great :
D. Good task, cheers
I absolutely love your site.. Excellent colors & theme. Did you create this web
site yourself? Please reply back as I’m hoping to create my
very own site and would love to know where you got this from or what the theme is called.
Many thanks!
I am actually grateful to the holder of this web page who has shared
this great piece of writing at here.
This is really interesting, You’re a very skilled blogger.
I’ve joined your feed and look forward to seeking more of
your wonderful post. Also, I have shared your web site in my social networks!
Do you mind if I quote a few of your articles as long as I provide credit and sources
back to your webpage? My website is in the very same niche as yours
and my visitors would really benefit from some of the information you provide
here. Please let me know if this okay with you. Many
thanks!
continuously i used to read smaller articles that also clear their motive, and that is also happening with
this post which I am reading now.
Thanks very interesting blog!
Thank you for another informative site. Where else may just I get that kind of info written in such a
perfect way? I have a challenge that I’m simply now working on, and I have been on the glance out for such information.
What’s up, all is going fine here and ofcourse every one is sharing data, that’s genuinely fine,
keep up writing.
Admiring the hard work you put into your blog and in depth information you provide.
It’s great to come across a blog every once in a while that isn’t
the same old rehashed information. Fantastic read!
I’ve saved your site and I’m adding your RSS feeds to my
Google account.
Hi there! This is my first visit to your blog!
We are a collection of volunteers and starting a new project in a community in the same niche.
Your blog provided us beneficial information to work on. You have done a wonderful job!
Thank you for another excellent article. The place else may anyone get that type of info in such a perfect method of writing?
I’ve a presentation subsequent week, and I’m on the look for such info.
Your style is unique compared to other people I have read stuff
from. I appreciate you for posting when you have the opportunity, Guess I will just book mark
this blog.
Hello there, I found your site by way of Google while searching for a similar subject,
your web site came up, it appears great. I’ve bookmarked
it in my google bookmarks.
Hi there, simply changed into aware of your blog thru Google, and found
that it is really informative. I’m gonna watch out for brussels.
I’ll be grateful if you proceed this in future.
A lot of other people shall be benefited from your writing.
Cheers!
Please let me know if you’re looking for a writer for
your site. You have some really great posts and I think I
would be a good asset. If you ever want to take some of
the load off, I’d really like to write some material for
your blog in exchange for a link back to mine. Please blast me an e-mail if interested.
Cheers!
I visited many web pages however the audio quality for audio songs current at this web site is actually marvelous.
Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point.
You clearly know what youre talking about, why throw away your intelligence on just
posting videos to your weblog when you could be giving us something enlightening to read?
This site was… how do I say it? Relevant!! Finally I’ve found something that helped me.
Thanks!
Highly energetic blog, I liked that a lot. Will there be
a part 2?
Hi there! This article could not be written much better!
Reading through this post reminds me of my previous roommate!
He always kept talking about this. I am going to forward this article to him.
Fairly certain he will have a great read. Many thanks for sharing!
Because the admin of this website is working, no uncertainty very shortly it will
be famous, due to its feature contents.
What’s up, yup this article is in fact good and I have learned
lot of things from it regarding blogging. thanks.
Hi, i read your blog from time to time and i own a similar
one and i was just curious if you get a lot of spam responses?
If so how do you protect against it, any plugin or anything you can suggest?
I get so much lately it’s driving me insane so any assistance is very much appreciated.
I am genuinely thankful to the holder of this web page who has shared this enormous piece of writing at at this place.
I’ll immediately clutch your rss as I can’t find your email subscription hyperlink or e-newsletter service.
Do you’ve any? Please let me understand in order that I may
just subscribe. Thanks.
Thanks very interesting blog!
Pretty nice post. I just stumbled upon your weblog and wanted to say that I’ve really enjoyed surfing around your blog posts.
In any case I will be subscribing to your rss feed and I hope you write again very soon!
I simply couldn’t leave your web site prior to suggesting that I extremely loved the usual information an individual provide in your visitors?
Is gonna be again incessantly in order to inspect new posts
Hmm is anyone else having problems with the pictures on this blog
loading? I’m trying to find out if its a problem on my end or if
it’s the blog. Any suggestions would be greatly appreciated.
Thanks , I’ve just been searching for information about this
topic for a while and yours is the greatest I have came upon till now.
However, what concerning the bottom line?
Are you sure about the supply?
Hi there, the whole thing is going nicely here and ofcourse every one is sharing facts,
that’s genuinely fine, keep up writing.
My relatives always say that I am killing my time here at web, but I know I am getting knowledge all the
time by reading such fastidious posts.
I don’t even know how I ended up here, but I
thought this post was good. I don’t know who you are but certainly you are going to a
famous blogger if you are not already 😉
Cheers!
Ahaa, its nice dialogue on the topic of this post here at
this weblog, I have read all that, so now me also commenting at
this place.
I’m not sure exactly why but this website is loading
incredibly slow for me. Is anyone else having this problem or is it a problem on my end?
I’ll check back later on and see if the problem still exists.