ทำให้การกระโดดแบบลอจิกจาก noob สมบูรณ์ไปจนถึงนักพัฒนา


12

ฉันเขียนโปรแกรมเบา ๆ มาสองสามปีแล้วและไม่ก้าวหน้ามาก มันเป็นสิ่งที่ฉันสนใจแน่นอน แต่ฉันไม่ได้รับแรงบันดาลใจ จากนั้นฉันคิดว่าฉันรู้ว่ามีอะไรฆ่าฉัน หนังสือทั้งหมดที่ฉันอ่าน screencasts ทั้งหมดที่ฉันได้ดูดูเหมือนจะพลาดสิ่งสำคัญอย่างหนึ่ง:

ฉันจะไปจากคำสั่งพิมพ์ตัวแปร ฯลฯ เพื่อทำสิ่งที่ซับซ้อนมากขึ้นได้อย่างไร

ตัวอย่างเช่นลองสร้างเว็บไซต์อย่าง Posterous สำหรับผู้ที่ไม่ทราบว่าเป็นแพลตฟอร์มบล็อกที่ยอมรับโพสต์บล็อกผ่านทางอีเมล ผู้เขียนบล็อกมีอีเมล @ posterous.com พิเศษที่พวกเขาส่งโพสต์ไปยังบล็อกและพวกเขาจะจัดรูปแบบและโพสต์โดยอัตโนมัติ

นักพัฒนาจะใช้กล่องเครื่องมือของฟังก์ชั่นและคำสั่งเพื่อทำสิ่งนี้ให้สำเร็จได้อย่างไร

ฉันขอโทษถ้าคำถามนี้ดูเหมือนกว้างจริงๆมันแค่ทำให้ฉันหงุดหงิด ฉันรู้สึกว่าฉันมีความเข้าใจที่ดีเกี่ยวกับแนวคิดพื้นฐาน แต่ไม่รู้ว่าจะทำอะไรได้จริง


พวกเขาจะแยกวิเคราะห์อีเมลและเก็บการเข้ารหัสและแทรกข้อความลงในฐานข้อมูล จากนั้นก็เป็นความพยายามอย่างง่าย ๆ ในการเลือกโพสต์ทั้งหมดและแสดงบนหน้าเว็บที่กำหนด เพื่ออธิบายถึงการขาดความสามารถในการเขียนโปรแกรมของคุณเองคุณสามารถปรับปรุงสิ่งนั้นได้จากการทำมันให้มากกว่า
Ramhound

มีคำตอบที่น่าอัศจรรย์มากมายเหลือเกิน ตอนนี้ทุกอย่างชัดเจนขึ้น ขอบคุณทุกคน!
Blair Beckwith

คำตอบ:


12

กุญแจสำคัญคือการแบ่งงานออกเป็นขั้นตอนโดยสิ้นเชิงที่คุณรู้วิธีการทำ (หรือสามารถหาวิธีการทำ) สิ่งที่คุณรู้วิธีการทำขึ้นอยู่กับระดับประสบการณ์ของคุณ

มาดูตัวอย่างอีเมล Posterous ของคุณ:

ข้อกำหนด: ยอมรับอีเมล @ posterous.com จัดรูปแบบและโพสต์ไว้บนเว็บไซต์

ภารกิจ 1) ยอมรับอีเมล

อีเมลส่วนใหญ่จะต้องดึงจากเมลเซิร์ฟเวอร์ คุณจะต้องวิจัยการเรียก API เพื่อดึงอีเมลจากเซิร์ฟเวอร์อีเมลของคุณโดยเฉพาะ คุณจะต้องหาวิธีแยกเนื้อหาออกจากเนื้อหาของอีเมล (อาจเป็นการเรียก API อีกครั้ง)

ภารกิจ 2) จัดรูปแบบอีเมล

จากภารกิจที่ 1 คุณอาจมีเนื้อหาอยู่ในหน่วยความจำที่ไหนซักแห่ง จัดรูปแบบสิ่งนี้เพื่อให้สอดคล้องกับขั้นตอนที่ 3 ...

ภารกิจ 3) โพสต์เนื้อหาบนบล็อก

หากคุณเพิ่มคุณสมบัติ email2blog นี้คุณอาจมีกลไกในการโพสต์ข้อความในบล็อก ใช้กลไกนั้นและแทนที่จะรับข้อมูลจาก textarea บนเว็บไซต์ของคุณแทนที่ด้วยเนื้อหาจากขั้นตอนที่ 2 ของคุณ

ตอนนี้เราจะได้รับจากคำสั่งพิมพ์ถ้าคำสั่งและฟังก์ชั่นเพื่อให้งานแต่ละงานสำเร็จ

โปรดสังเกตว่าในภารกิจที่ 1 ฉันพูดถึงการเรียก API สองครั้งหรือไม่ การเรียก API เป็นฟังก์ชันที่คนอื่นเขียนเพื่อให้คุณสามารถใช้ฟังก์ชันการทำงานได้ หากคุณรู้วิธีเรียกใช้ฟังก์ชันคุณสามารถค้นคว้าการเรียก API ที่ถูกต้องที่คุณต้องการเพื่อดึงข้อมูลเมลจากเมลเซิร์ฟเวอร์

ฉันไม่ได้พูดคุยเกี่ยวกับการจัดรูปแบบมากนัก แต่ถ้าคุณรู้ว่าจะจัดการกับ String อย่างไรคุณก็รู้วิธีจัดรูปแบบ การจัดรูปแบบหน้า html คือแบบฝึกหัดในการเพิ่มแท็กเช่น<b>bolded text</b>ภายในสตริงของคุณบางแห่ง

ในภารกิจที่ 3 ฉันพูดถึงว่ามีกลไกบางอย่างในการโพสต์บล็อก หากนี่เป็นแพลตฟอร์มบล็อกที่มีอยู่คุณจะคุ้นเคยกับสิ่งนี้มากพอ แต่ถ้าไม่ใช่คุณต้องเรียนรู้เกี่ยวกับ HTTP Post และเว็บเฟรมเวิร์กอื่น ๆ ที่เกี่ยวข้อง

ถ้าหลังจากอ่านทั้งหมดนี้แล้วคุณยังไม่มีเงื่อนงำสิ่งที่ฉันกำลังพูดถึงอยู่ฉันหวังว่าฉันจะเชื่อว่าไม่มีประสบการณ์มาทดแทน ดังนั้นออกไปที่นั่นและสร้างบางอย่าง! อย่ากังวลมากเกินไปเกี่ยวกับการทำผิด noob เพราะนักพัฒนาทุกคนเคยเป็น noob


5

สิ่งที่สำคัญคือการหาสิ่งที่คุณต้องการจะทำและทำมัน

นั่นเป็นวิธีที่ บริษัท ที่ยิ่งใหญ่ส่วนใหญ่เริ่มต้นขึ้น

  • Google? Brin และ Page หลงใหลเกี่ยวกับการจัดทำดัชนีเว็บ

  • Metafilter? Matt Haughey หลงใหลในการเขียนและแบ่งปัน

  • Twitter? Dorsey หลงใหลในความเรียบง่ายและคุณไม่ได้รับอะไรง่ายไปกว่า 140 ตัวอักษร

  • Stackoverflow? โจเอลและทีมงานหลงใหลในคำตอบ

ภาษาเช่น PHP, Perl, Python และ Ruby ต่างก็ออกแบบในลักษณะเดียวกัน ดังนั้น GNU / Linux ใครบางคนมีรอยขีดข่วนและเริ่มคันที่รอยขีดข่วนนั้นแล้วปล่อยเครื่องมือของพวกเขาสำหรับการบริโภคทั่วไป

ดังนั้นให้ดูรอบ ๆ และตัดสินใจว่าคันของคุณอยู่ที่ไหนจากนั้นเริ่มเขียนโปรแกรมเพื่อเกาที่คันนั้น บางทีคุณอาจชอบเล่นเกมดังนั้นคุณสามารถเขียนเกมบางเกมได้ บางทีคุณอาจมีปัญหากับแท็ก ID3 ในคอลเลคชัน mp3 ของคุณและจำเป็นต้องแก้ไข หรือบางทีคุณอาจสนใจประวัติครอบครัวและต้องการรวบรวมข้อมูลเว็บเพื่อค้นหาการอ้างอิงถึงบุคคลหรือสถานที่ต่างๆในประวัติของคุณ หรือบางทีคุณต้องการที่จะมีปฏิสัมพันธ์กับโลกแห่งความจริงอย่างใด หรือบางทีคุณต้องการพัฒนาซอฟต์แวร์ FLOS ลองดูที่ GitHub, Gitorious และ Sourceforge

ค้นหาสิ่งที่คุณหลงใหลและเริ่มเขียนโปรแกรมและในไม่ช้าคุณจะมีโปรแกรมมากมายก่อนที่คุณจะรู้ตัว และนั่นเป็นสาเหตุที่การวางแผนบางอย่างเป็นความคิดที่ดี;)


2

ช้าและค่อยๆ

โดยปกติสำหรับโครงการขนาดใหญ่คุณไม่ได้เริ่มต้นเพียงแค่ดำน้ำในการเขียนรหัส ใครบางคนต้องมีแผน พวกเขาเขียนอะไรลงไปคุณลักษณะของระบบที่พวกเขาต้องการ จากนั้นพวกเขาเริ่มต้นด้วยหน้าแรก / หน้าต่าง / อะไรก็ตาม จากนั้นพวกเขาเพิ่มอีก ในขณะที่ช้าเพิ่มคุณสมบัติหลังจากคุณสมบัติแก้ไขข้อผิดพลาดหลังจากข้อบกพร่อง ไม่เพียง แต่จะเป็นสิ่งจำเป็นเท่านั้น แต่ต้องมีภาพใหญ่การออกแบบโดยรวม

เพื่อให้ดีขึ้นคุณต้องฝึกฝน! เริ่มด้วยโครงการขนาดเล็ก สิ่งที่ง่ายและที่คุณสนใจ วางแผนสิ่งที่คุณทำก่อนที่จะทำคุณจะเห็นว่าไม่ใช่เรื่องยากที่จะ " ทำอะไรจริงๆ "


1

คุณสามารถรับชมหน้าจอได้หลายเล่มอ่านหนังสือและทำตามแบบฝึกหัดตามที่คุณต้องการ แต่ไม่เคยรู้สึกเหมือนไปทุกที่ คุณต้องหาสิ่งที่คุณสนใจในการสร้าง จากนั้นแยกย่อยและลองสร้าง คุณจะเข้ามาในหลาย ๆ สิ่งที่คุณอาจไม่รู้ แต่คุณค้นคว้าและเรียนรู้งานที่ซับซ้อนมากขึ้นในขณะที่คุณไป


1

ฉันพบกับความท้าทายนี้เช่นกันและโดยมากฉันก็พบวิธีแก้ปัญหาของฉัน: ฉันต้องการแหล่งข้อมูลภายนอกเพื่อผลักดันให้ฉันมีประสิทธิภาพมากขึ้น

คุณสามารถหลงใหลในเทคโนโลยีเหมือนกับใคร ๆ ทุกคนตื่นเต้นกับการเขียนโปรแกรมเหมือนใครและฉลาดและเรียนรู้ได้อย่างรวดเร็วเหมือนใครและมันจะมีความหมายมากเว้นแต่คุณจะทำมือสกปรกและทำสิ่งต่าง ๆ แต่มันอาจเป็นเรื่องยากที่จะรู้ว่าจะเริ่มต้นอย่างไรและแม้ว่าคุณจะมีความคิดว่าจะเริ่มจากตรงไหนในนั้นก็ยากที่จะทำให้ลูกบอลกลิ้ง

หากคุณเป็นผู้เริ่มต้นด้วยตนเองคุณอาจต้องมีความคิด ลองใช้จิ๊กซอร์การเขียนโปรแกรมหรือดูยูทิลิตี้พื้นฐานที่คุณใช้เป็นประจำและถามตัวเองว่า "ฉันสามารถทำสิ่งนี้ได้หรือไม่ถ้าทำเช่นนั้นฉันจะเปลี่ยนอะไรบ้าง"

มันน่ากลัวจริงๆที่จะนั่งอยู่หน้าบรรณาธิการที่เปิดโล่งหรือกระดาษเปล่าแล้วพูดว่า "โอเค, สมอง, สร้าง! " แต่ถ้าคุณแยกมันออกมาลองคิดดูสิว่าคุณมีเหตุผลอะไรที่จะทำและ ขับรถจากที่นั่นคุณจะได้ไกลขึ้น

และถ้าคุณพบว่าคุณไม่สามารถสร้างรหัสด้วยตัวเองได้ให้มีคนให้งานทำให้คุณโดยมีกำหนดเวลาและข้อกำหนดและทุกอย่าง มันจะพาคุณเข้าเกียร์


1

ความจริงที่ว่าคุณมีความรู้พื้นฐานที่ดี - ฉันไม่ใช่มืออาชีพ แต่ฉันสามารถขายสิ่งที่ฉันทำได้ดังนั้นฉันต้องทำสิ่งที่ถูกต้อง ฉันขอแนะนำให้เรียนรู้พื้นฐานเกี่ยวกับภาษาของคุณและแพลตฟอร์มที่คุณพัฒนา (และดูเหมือนว่าคุณมี)

ก่อนอื่นแผนที่สิ่งที่คุณพยายามจะทำและรับความคิดของวิธีการที่คุณจะทำมันทั้งหมดเกี่ยวกับการต้มสิ่งลงไปเฉพาะเพราะมันช่วยให้คุณคิดออกเร็วขึ้น ถ้าอย่างนั้นคุณก็ลองใช้ Google ในสิ่งที่คุณกำลังพยายามทำในภาษาที่คุณใช้อยู่หรือแม้แต่ถามคำถามเกี่ยวกับ Stack Overflow (ฉันเองได้ถามไปแล้วกว่า 70 คำถามแล้วเหรอ)!

โดยส่วนตัวแล้วฉันเรียนรู้จาก googling ฉันไม่ได้เลือกพื้นฐานในตอนแรกซึ่งฉันควรจะทำ แต่เมื่อถึงเวลาที่ฉันทำสิ่งที่ดีงามฉันยังไม่รู้ว่า "อาร์เรย์" คืออะไร ;)


0

ฉันคิดว่าการพัฒนาทักษะของคุณบนส่วนท้ายของอินเตอร์เฟสคุณควรเริ่มจัดการข้อมูล โครงการขนาดใหญ่ส่วนใหญ่เกี่ยวกับการเคลื่อนย้ายการแปลงและการแสดงข้อมูล

ฉันรู้ด้วยตัวเองว่าฉันไม่เข้าใจโครงการที่ใหญ่กว่านี้จนกว่าฉันจะรู้สึกสะดวกสบายกับการเข้าถึงข้อมูลและการจัดการไฟล์หลายประเภท


0

การก้าวเข้าสู่บางสิ่งที่เหนือหัวของคุณและการคิดออกอาจเป็นวิธีที่ดีในการพัฒนาทักษะของคุณ คุณอาจต้องการลองดูซีรี่ส์ O'Reilly Cookbook:

http://oreilly.com/store/series/cookbooks.html

รูปแบบปัญหา / การแก้ปัญหา / การสนทนาดูเหมือนว่าอาจเป็นสิ่งที่คุณกำลังมองหารหัส 'สูตรอาหาร' ที่จะทำสิ่งที่น่าสนใจและการอภิปรายเกี่ยวกับวิธีการทำงาน


1
หากคุณตัดสินใจที่จะซื้ออย่าลืมค้นหารหัสคูปองก่อน: retailmenot.com/view/oreilly.com
DKnight

0

ฉันคิดว่าคุณแค่ไม่สามารถท้าทายตัวเองให้ทำมากขึ้น

หากคุณอยากรู้อยากเห็นจริงๆว่าจะทำอะไรบางอย่างไปวิจัยมัน! หากคุณต้องการทราบว่า Posterous ทำงานอย่างไรลองเริ่มจากสิ่งเล็ก ๆ เช่นค้นคว้าเครื่องมือชนิดที่คุณต้องการวิธีรับข้อมูลจากกล่องข้อความไปยังเว็บไซต์ จากนั้นคุณค่อยๆสร้างมันขึ้นมา คำถามต่อไปอาจเป็นการตั้งค่าการเชื่อมต่ออีเมลไปยังเว็บไซต์และฐานข้อมูล

คุณมีเครื่องมือที่ดีที่สุดที่คุณต้องการอินเทอร์เน็ต


0

นอกเหนือจากการแบ่งโครงการออกเป็นงานสำคัญก็คือการเรียนรู้การใช้รหัสซ้ำ แบ่งรหัสของคุณออกเป็นโมดูลที่คุณสามารถนำกลับมาใช้ในโครงการอื่น ๆ ที่คุณต้องทำสิ่งเดียวกัน

เช่นในโครงการตัวอย่างนี้คุณน่าจะใช้งานฐานข้อมูลเพื่อจัดเก็บโพสต์บล็อก คุณสามารถเขียนคลาสฐานข้อมูลเพื่อเชื่อมต่อกับฐานข้อมูลทำแบบสอบถามรับผลลัพธ์ ฯลฯ จากนั้นในโครงการในอนาคตทั้งหมดคุณสามารถใช้คลาสเดียวกันนั้นและสามารถทำงานกับฐานข้อมูลได้อย่างง่ายดาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.