კარიერა

როგორ ვიფიქროთ პროგრამისტად, როდესაც პრობლემის გადაჭრა

როგორ ვიფიქროთ პროგრამისტად, როდესაც პრობლემის გადაჭრა



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

გსურთ ვისწავლოთ პრობლემის გადაჭრა კომპიუტერული პროგრამისტის მსგავსად? მაშინ საჭირო ადგილას მოხვედით.

აქ ვსწავლობთ, თუ როგორ უმკლავდება საშუალო პროგრამისტი პრობლემებს და გთავაზობთ გზებს, რაც დაგეხმარებათ იმავეს გაკეთებაში. უკეთესი, უფრო ეფექტური პრობლემების გადაჭრის მომავალი გელით.

თეორიულად მაინც.

დაკავშირებული: 9 ყველაზე სასაცილო პროგრამისტი ახლა ახლა

რა არის პრობლემის გადაჭრა პროგრამირებაში?

სანამ დავიწყებდით, შეიძლება ღირდეს იმის გარკვევა, თუ რას ნიშნავს პრობლემის გადაჭრა პროგრამისტებისთვის.

იუტას უნივერსიტეტის გამოთვლითი სკოლის თანახმად, მას ხშირად განსაზღვრავენ შემდეგნაირად:

”პრობლემის გადაჭრა პრობლემების გადაჭრა წარმოადგენს კომპიუტერულ მეცნიერებათა ბირთვს. პროგრამისტებმა ჯერ უნდა გაიგონ, როგორ წყვეტს ადამიანი პრობლემას, შემდეგ უნდა გაიგონ, თუ როგორ უნდა გადათარგმნან ეს” ალგორითმი ”კომპიუტერში და ბოლოს როგორ უნდა დაწერონ. კონკრეტული სინტაქსი (რომელსაც კომპიუტერი მოითხოვს) სამუშაოს შესასრულებლად. "

გარეგნულად მარტივად ჟღერს, მაგრამ, როგორც თქვენ გაიგებთ, ეს სინამდვილეში რაღაც "ხელოვნებაა", ვიდრე მეცნიერება (გარკვეულწილად).

მაგრად მოუჭირე ...

როგორ ფიქრობთ, როგორც პროგრამისტი?

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

"რბილი უნარების" ან "მეტა უნარების" განვითარება, როგორიცაა სწავლა, თუ როგორ უნდა იფიქროთ მკაფიოდ და კრიტიკულად, დივიდენდებს გადაგიხდით თქვენი ცხოვრების ბევრ ასპექტში.

განსაკუთრებით თქვენს პროფესიულ კარიერაში, რომელი მარშრუტის არჩევაც გსურთ, იქნება ეს ინჟინერი თუ არა.

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

”პრობლემების გადაჭრის უნარი თითქმის ერთხმად არის ყველაზე მნიშვნელოვანი კვალიფიკაცია, რომელსაც დამსაქმებლები ეძებენ…. ვიდრე პროგრამირების ენების ცოდნა, გამართვის გამართვა და სისტემის დიზაინი.

გამოთვლითი აზროვნების ან დიდი, რთული პრობლემების დაშლის შესაძლებლობის დემონსტრირება ისეთივე ღირებულია (თუ არა უფრო მეტი), ვიდრე სამუშაოსათვის საჭირო საწყისი ტექნიკური უნარები. ” - ჰაკერების რანგი.

როგორ შეგიძლიათ განავითაროთ ასეთი უნარი? ერთი გზა არის პროგრამისტივით აზროვნების მცდელობა.

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

ძირითადად, პროგრამისტები სწავლობენ ცდისა და შეცდომის საშუალებით, რომ პროგრესულად გახდნენ უფრო ეფექტური პრობლემების გადაჭრისას. ადამიანების უმეტესობა, თუ თქვენ არ გაქვთ შემუშავებული ძლიერი სისტემა, სავარაუდოდ მოიცავს შემდეგს:

1. სცადეთ გამოსავალი.

2. თუ ეს არ მუშაობს, სცადეთ სხვა.

3. თუ ესეც ვერ მოხერხდა, ჩამოიბანეთ და გაიმეორეთ ნაბიჯი 2, სანამ იპოვნებთ რაიმეს, რაც მუშაობს (შესაძლოა იღბლის წყალობით).

მიუხედავად იმისა, რომ ეს გონივრულ მიდგომად ჟღერს, ეს მეთოდოლოგია არის როგორც გონებრივი ენერგიის დაბეგვრა, ასევე, რაც მთავარია, ღირებული და შეუცვლელი დრო (თქვენი ერთადერთი რეალური აქტივი ცხოვრებაში). ფაქტობრივად, ეს არის უხეში ძალის მეთოდი პრობლემების გადასაჭრელად.

პროგრამისტები ამის უფრო დახვეწილი და ეფექტური მეთოდის ოსტატები არიან გეგმის, გაკეთების, შემოწმების, მოქმედების სტრატეგიის საშუალებით. ეს, ფაქტობრივად, მოიცავს:

1. პრობლემის მოგვარების ჩარჩოული მიდგომა.

2. ივარჯიშეთ, ისწავლეთ შეცდომებზე, გადახედეთ და გააუმჯობესეთ მანამ, სანამ მას არ დაეუფლებით.

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

როგორ შემიძლია გავაუმჯობესო პროგრამირების პრობლემის გადაჭრის უნარი და განვავითარო პროგრამისტის აზროვნება?

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

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

1. გატეხეთ გასაგები საკითხი

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

როგორ გააკეთე ეს? ერთი ინდიკატორი, რომლის შესახებაც თქვენ გააზრებული გაქვთ საკითხი, არის ის, რომ შეძლოთ მისი ახსნა უბრალო ინგლისურ ენაზე, ან თუნდაც დიაგრამა.

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

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

2. ვერ ვგეგმავთ, აპირებთ ჩავარდნას (გეგმის შედგენა და დიდი პრობლემის უფრო მცირე დაყოფა)

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

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

პროგრამისტებისთვის, ისინი პირდაპირ არ ხვდებიან ამ ფაზის დალაგების გარეშე. ამ ეტაპზე ჩადებული დრო დაზოგავს დაგროვებულ დროში ტონაში.

ეს არის პროგრამისტის აზროვნება.

შეეცადეთ უპასუხოთ კითხვას, მაგალითად, "მოცემულია შენატანი, რა ნაბიჯები მჭირდება სხვა შედეგის დასაბრუნებლად?" და ა.შ., რომ აღარაფერი ვთქვათ ქსელის მითითებებზე "თუ ეს მაშინ, ან სხვა რამ".

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

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

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

გვერდითი შენიშვნა, ესეც ერთ-ერთი მთავარი მიზეზია, რომ კოდექსში იყენებენ კომენტარებს პროგრამისტები. განსაკუთრებით გუნდში მუშაობისას (სხვის აზრს ვერავინ წაიკითხავს).

მაგრამ, ჩვენ ვცდებით.

არ უნდა შეგეშინდეთ დახმარების თხოვნა, ან რაიმე კვლევა. შეიძლება აღარ დაგჭირდეთ საჭის ხელახლა გამოგონება. მაგრამ ᲐᲠ დაეყრდნობი სხვას თქვენს პრობლემებს, რადგან არ შეისწავლით და არ განავითარებთ საკუთარ გონებას და უნარს კონკრეტულ სფეროში.

"მე რომ შემეძლოს თითოეულ დამწყებ პროგრამისტს ვასწავლო ერთი პრობლემის გადაჭრის უნარი, ეს იქნებოდა" პრობლემის ტექნიკის შემცირება "...

შეამცირეთ პრობლემა იმ დონემდე, რომ იცოდეთ მისი მოგვარება და დაწერეთ გამოსავალი. შემდეგ ოდნავ გააფართოვეთ პრობლემა და გადაწერეთ გადასაწყვეტი შესატყვისად და გააგრძელეთ მანამ, სანამ არ დაბრუნდებით იქ, სადაც დაიწყეთ. ”- ვ. ანტონ სპრაული

3. "დარჩი მიზანზე", შეგიძლია და დარჩი ხოლმე

”თაგვებისა და მამაკაცების საუკეთესოდ დაგეგმილი გეგმები ხშირად ცდება”, - თქვა რობერტ ბერნსმა. არ ინერვიულოთ, ეს მოსალოდნელია და ხშირად უნდა გეხუტებოდეს.

რას აკეთებ, როდესაც პრობლემას ვერ გადაწყვეტ, განსაკუთრებით პროგრამირების დროს?

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

აღარაფერი ვთქვათ მათი გამოსწორების გადაწყვეტილებაზე.

როდესაც ისინი ამოდიან, პროგრამისტები, როგორც წესი, იწყებენ პროცესს, გონებრივ ფუნქციას, თუ გსურთ, შემდეგიდან:

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

4. პრაქტიკა სრულყოფს

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

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

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

და, ალბათ, რაც მთავარია, არ შეგეშინდეთ წარუმატებლობის. თქვენ გაცილებით მეტს შეიტყობთ იმისგან, თუ სად არეულობთ, ვიდრე ოდესმე, იქიდან, სადაც წარმატებას მიაღწევთ. ისწავლეთ მარცხი და სწრაფად ჩავარდნა!

და ეს არის შეფუთვა. თქვენი გეზი პრობლემის გადაჭრისკენ, როგორც პროგრამისტი გელით!

წარმატებებს გისურვებ მოგზაურზე.


Უყურე ვიდეოს: Learn how to frame for change! Webinar on Communication Strategies for Animal Rights (აგვისტო 2022).