როგორ გავხდეთ უკეთესი პროგრამისტი ეფექტურად

ამ 10-11 წლის განმავლობაში, რაც პროგრამირება ჩემს პროფესიად იქცა, მრავალფეროვანი უკან დახევის და წინსვლის პერიოდები მქონდა, ხან რუტინები, ხან ნახტომები – როგორც ყველას მოკლედ 🙂

მომინდა სტატიაში მომეყარა თავი. თქვენც ხომ არ დამიმატებთ რჩევებს კომენტარებში?

 

დიდი სურათი

V8 ძრავი

ერთი და იმავე საკითხის სასწავლად რამდენიმე გზაა. ერთს შეიძლება ხუთი წელი დასჭირდეს, როცა მეორეთი იგივე შედეგს ერთ წელში მივიღებთ. პროგრამისტები პრაქტიკული ხალხი ვართ, მალევე გვინდა მკლავები ავიკეცოთ, დავჯდეთ, დავწეროთ, გავუშვათ. სავარაუდოდ ამიტომ ჩვენი სწავლის ყველაზე გავრცელებული მეთოდი როლიკებზე დადგომას ჰგავს. უამრავჯერ ვეცემით, უამრავი დალურჯება გვაქვს. ბოლოს შეიძლება მაგის მომგონიც გავლანძღოთ და თავიც დავანებოთ. ამის ნაცვლად შეგვეძლო წინასწარ გვეყურებინა / წაგვეკითხა – როგორ უნდა იყოს შეკრული ფეხსაცმელი, როგორ არ უნდა ავწიოთ ხელი, როგორ დავეცეთ, როგორ მოვტრიალდეთ, ეს ყველაფერი ფიზიკაა და წინასწარ ცნობილია. მაინც ბევრჯერ დავეცემით, მაგრამ შედარებით ნაკლები ტრამვით.

მოდით ექსპერიმენტი ჩავატაროთ: გაიხსენეთ ენა, რაზეც ბოლო ერთი-ორი წელი წერთ. გარანტიას გაძლევთ, რომ თუ ამ ენაზე ერთ კარგ წიგნს (ან უბრალოდ მის დოკუმენტაციას) წაიკითხავთ თავიდან ბოლომდე, ნახევარი თუ არა დიდი ნაწილი მნიშვნელოვანი სიახლე იქნება. არ ვგულისხმობ, რომ წიგნის ყველა მაგალითზე გავჩერდეთ და კოდი გავუშვათ, ან ყველა დეტალი ბოლომდე გავიგოთ / დავიმახსოვროთ. უბრალოდ, როცა წინასწარ ვკითხულობთ მთლიანად და ერთიანად, დიდ სურათს ვხედავთ. ყოველთვის შეგვიძლია დეტალები დავგუგლოთ, თუ ვიცით რომ ეგეთი რამ საერთოდ არსებობს. თუ არ გვეცოდინება საფუძვლები ან თუნდაც, მაგალითად, როგორ იყენებს მეხსიერებას, გვექნება memory leaks პროგრამაში და ვერც მივხვდებით.
ამის შემდეგ შეგვიძლია წავიკითხოთ კიდევ ერთი წიგნი – შესაბამისი Best practices, ანუ ამ ენის გამოყენების საუკეთესო პრაქტიკა, რაც კიდევ უფრო მეტი ‘ტრამვისგან’ დაგვიხსნის. თუ სწავლის პროცესში უამისოდ პროექტს გადაწერთ ხუთჯერ, ამის წაკითხვის შემდეგ სავაურაუდოდ გადაწერთ ერთხელ.

წიგნს ორი-სამი დღე სჭირდება, იგივე შეცდომებზე სწავლას კი თვეები.

 

შეჯიბრებები და ალგორითმები

ჩემი აზრით არის ერთი ეტაპი, რომელიც ყველა თავმოყვარე პროგრამისტმა უნდა გაიაროს. ბევრ დროს ითხოვს და ამიტომ ხშირად ამას სკოლის ან სტუდენტობის პერიოდში გადიან, მაგრამ გვიან სჯობს, ვიდრე არასდროს. თუ ვინმეს დაეზარება, მას უბრალოდ ერთი დიდი ნაბიჯით გაუსწრებენ კონკურენტები.

პროგრამირების შეჯიბრებებზე და ამოცანების ამოხსნაზე მაქვს საუბარი. ამ ვარჯიშის პროცესიდან გამომდინარე მნიშნველოვნად შეიცვლება თქვენი ფიქრის სტილი, აზროვნების სისწრაფე, თავში ბევრი კომპონენტის ერთდროულად დალაგება. კოდიდან თითქმის გაქრება გავრცელებული შეცდომები, როგორიცაა მაგალითად მასივის არასწორ ან არარსებულ ინდექსებზე მიმართვა, ციკლისთვის არასწორი საზღვრების დაწესება, ზედმეტი მეხსიერების გამოყოფა და memory leaks, არაოპტიმალური კოდის წერა, არასწორი მონაცემთა სტრუქტურების გამოყენება. აღარ გეხსომებათ ბოლოს როდის გამოიყენეთ დებაგერი. შეგეძლებათ ყველა ფუნქციის შემდეგ კი არა, მთელი კოდის დაწერის შემდეგ გაუშვათ პროგრამა და ექნება ძალიან ცოტა შეცდომები. ჩვეულებრივი პროექტისგან განსხვავებით შეჯიბრების დროს თქვენს ყველა შეცდომას იჭერენ.

შეიძლება არ დაგჭირდეთ ნასწავლი ალგორითმები და არ შეგხვდეთ ისეთი ამოცანები რეალურ პროექტებში, მაგრამ აუცილებლად დაგჭირდებათ სწრაფი გონება და კარგი კოდის წერის / ტესტირების უნარები. არა უშავს, თუ ვერ მოვიგებთ, თუ ასეულში ვერ მოვხვდებით, თუნდაც ვერც მსოფლიო ათასეულში – ეს სპორტია. არიან ბუნებრივი ნიჭით დაბადებულები, არიან ძალიან ნამეცადინები ადამიანები. ცოტა მიისწრაფის ოლიმპიური მედლისკენ, მაგრამ ჯანრთელობისთვის ყველა ვარჯიშობს, ხომ ასეა?

ჩემთვის ასეთი ეტაპი იყო, როდესაც ჯეოლიმპზე ვმუშაობდით. იქ ამოცანებს მაგ სფეროში გამოცდილი ხალხი იგონებდა, მე უბრალოდ სხვა საქმეს ვაკეთებდი და თან ამოხსნას ვცდილობდი შეჯიბრის მსვლელობისას (სხვათაშორის ახლაც დევს იქ არქივი, ონლაინ მატესტირებელი სისტემა და ვიდეო/ტექსტური გარჩევები). დღესაც ვგრძნობ ხოლმე, როგორ ვვარდები ფორმიდან ვარჯიშის გარეშე, იმის მიუხედავად რომ რაღაც კოდს მუდმივად ვწერ. მერე მრცხვენია, როცა უაზრო შეცდომები მომდის.

კარგი სია, სადაც ვარჯიში შეიძლება: The 10 Best Coding Challenge Websites for 2018

 

ასწავლე სხვას

ეს ცნობილი მეთოდია 🙂 როდესაც სხვას უხსნი, სულ სხვა დეტალებს ამჩნევ. ზოგადად, ასე მგონია, რაღაცის სიტყვიერად ჩამოყალიბება გასაკეთებელი საქმის ნახევარია. როცა შეცდომას ეძებთ, ან არ იცით როგორ გააკეთოთ რამე, ჯერ პირობის დაწერა და აღწერა ცადეთ. რეზინის იხვთან ლაპარაკი ამიტომ არის ეფექტური :))

 

სტრესი გვანადგურებს

Gravity Glue | Stone Balance by Michael Grab

პროგრამირება ერთ-ერთი ძალიან სტრესული პროფესიაა. გეტყვით რატომ – პროგრამისტი ყოველ დღე იმას აკეთებს, რაც აქამდე არასდროს გაუკეთებია. თუ ერთსა და იმავეს გააკეთებს (თუნდაც სხვისას გაიმეორებს) და უკვე გაკეთებულს არ გამოიყენებს სანაცვლოდ, ეს დიდ შეცდომად ითვლება და თვითონვე იჩენს დამატებით პრობლემებს. ამას ემატება, რომ წინასწარ სთხოვენ სამუშაო დროის შეფასებას. ცხადია, ყველა შეფასება მიახლოებითია. გზაზე შეიძლება ათასნაირი გაუთვალისწინებელი პრობლემა შეხვდეს, რაც ძვირფას დღეებს ან კვირებს დააკარგინებს. ზოგჯერ პროგრამისტი თავისივე მიცემული შეფასების დასაცავად დღეში 10 საათს ან მეტს მუშაობს.

ყველა მათგანს თავისი მეთოდი აქვს ამ სტრესთან გასამკლავებლად. გონების გადაღლიდან გაცილებით უფრო ძნელია აღდგენა, ვიდრე ფიზიკური დაღლილობიდან, რომელსაც შეიძლება ერთი გამოძინებით უშველო.
რამდენიმე პრაქტიკული რჩევა:

  • გააკეთეთ ავტომატიზაციები. ჩვენი სფეროს ყველაზე სტრესული პროცესები ავტომატიზირებადია. ეს ძალიან ბევრ ნერვებს და დროს დაგიზოგავთ.
  • როცა ერთ პრობლემაზე გაიჭედებით, გადაერთეთ ან დაისვენეთ. არსებობს გამოთქმა – sleep on a problem. თუ ძილის წინ კარგად ჩამოაყალიბებთ გადასაჭრელ პრობლემას, ღამე ტვინი იფიქრებს და დილით პასუხსაც დაგახვედრებთ. ეს ნამდვილად მუშაობს.
  • ფიზიკური ჯანმრთელობა, ბუნებაში გასეირნება, მედიტაცია, ძილი. შეიძლება ჩათვალოთ, რომ ვარჯიშში დასაკარგი დრო არაა, მაგრამ გონებრივი სამუშაოც პირიქით უფრო მეტი ესწრება, როცა პარალელურად ფიზიკური დატვირთვაა. ხოლო უძინარმა და დაღლილმა მთელი ღამე რომც წეროთ კოდი, მეორე დღეს თვითონ გადააგდებთ იმ კოდს ან შეცდომებით იქნება სავსე. ენერგეტიკული სასმელები და უზარმაზარი რაოდენობით კოფეინი ალბათ მხოლოდ გამოუვალ მდგომარეობაში შეიძლება, თუ შეიძლება საერთოდ.
  • მხოლოდ თქვენ შეგიძლიათ საკუთარ თავზე ზრუნვა. სტრესი მშვენიერი მამოტივირებელია, მაგრამ მუდმივის შემთხვევაში ტვინსაც და ორგანიზმსაც ძალიან ცუდი რამეები მოსდის.

 

სხვისი კოდების კითხვა და open-source პროექტებში მონაწილეობა

წიგნების მსგავსად, კოდების კითხვა განვითარების ძალიან კარგი წყაროა. დღეს ყველაზე საინტერესო პროექტები ღია სახით დევს ინტერნეტში და კონტრიბუციაც კი შესაძლებელია. აირჩეთ თქვენი საყვარელი ენა, პროექტი და შეგიძლიათ სახლიდან გაუსვლელადვე გახდეთ მისი მონაწილე. ეს თქვენს CV-ზეც კარგად აისახება სხვათაშორის.

გამოხმაურება

comments

კომენტარის დატოვება

თქვენი ელფოსტის მისამართი გამოქვეყნებული არ იყო. აუცილებელი ველები მონიშნულია *