اولین گردهمایی بزرگ برنامهنویسان ایران در مورخ ۲۸ مرداد ماه ۱۳۹۵ برگزار شد که سکان آکادمی هم با مقالهای تحت عنوان «ضرورت آموزش برنامهنویسی به کودکان» در این رویداد حضور به هم رساند. مقولهٔ آموزش مهارتهای کدنویسی به نسل جوان جزو اولویتهای کشورهایهای جهان اول است؛ در همین راستا، ما نیز باید تمام تلاش خود را به کار بندیم تا روی این مسئله بیشتر تمرکز کرده و افراد از گروههای سنی مختلف را با اهمیت این موضوع آشنا سازیم. آنچه در ادامه مطالعه خواهید کرد، چکیدهای از این ارائه است که در کتابچهٔ PDF همایش نیز منتشر گردید.
در حال حاضر، دنیا نه تنها با کمبود آب، صلح، انسانیت و آرامش مواجه است بلکه با کمبود چیز دیگری تحت عنوان برنامهنویس نیز مواجه میباشد و به نظر هم میرسد که با فراگیرتر شدن فناوریهایی همچون اینترنت اشیاء یا هوش مصنوعی، این کمبود بیش از این احساس گردد.
در واقع، باتوجه به اینکه دنیا بیش از پیش به سوی فناوریهای جدید پیش میرود، این نیاز احساس میگردد تا دانشآموزان و دانشجویان نیز بیش از گذشته با نحوهٔ کار کردن این فناوریها آشنا شوند و یکی از راههای این آشنایی، آموزش اصول برنامهنویسی است. حال ممکن است این سؤال برای شما پیش بیاید که «فرزندم اصلاً به برنامهنویسی علاقهای ندارد، پس چرا باید برنامهنویسی یاد بگیرد؟» و یا «فرزند من دوست دارد نقاش شود، چرا باید او را مجبور به یادگیری کدنویسی کنم؟» در پاسخ به سؤالاتی از این دست بایستی گفت که آمار و ارقام حاکی از آنند که داشتن پیشزمینه در علوم کامپیوتری بهخصوص برنامهنویسی، در حال حاضر به عنوان یک برگ برنده در زمینهٔ یادگیری سایر مهارتها محسوب میشود و در آیندهای نه چندان دور، نیاز به داشتن چنین برگ برندهای پررنگتر هم خواهد شد که در ادامهٔ این مقاله بیشتر پیرامون این موضوع بحث خواهیم کرد.
تفاوت مابین مصرفکنندهٔ تکنولوژی و تولیدکنندهٔ آن
عنوانی بهتر از «عصر تکنولوژی» برای عصری که در آن به سر میبریم نمیتوان یافت و شاهد چنین ادعایی هم آن است که در عصر کنونی، تکنولوژی در تمامی جنبههای زندگی ما -از حریم خصوصی گرفته تا محیط کار و غیره- رخنه کرده است و زندگی بدون نمونههای عملی از تکنولوژی همچون تلفن همراه، اینترنت، بانکداری الکترونیک و … تقریباً غیرممکن است.
در مورد تأثیرات عمیق تکنولوژی در بهبود زندگی بشری جای هیچگونه بحثی نیست اما در عین حال بایستی بررسی کنیم و ببینیم که چه تفاوتهایی مابین اقشار مصرفکنندهٔ تکنولوژی با اقشار تولیدکنندهٔ آن وجود دارد و به چه شکلی میتوانیم خود و مهمتر از خود، کودکانمان را از مصرفکنندهٔ تکنولوژی به تولیدکنندهٔ آن مبدل سازیم.
به عبارت دیگر، مادامی که ما و کودکانمان صرفاً از کامپیوتر، لپتاپ و ابزارهای هوشمندی همچون موبایل و تبلت برای بازی، چت، حضور در شبکههای اجتماعی و … استفاده میکنیم، به هیچ وجه نمیتوانیم خود را نسلی از عصر تکنولوژی بنامیم چرا که در چنین شرایطی ما و کودکانمان صرفاً مصرفکنندهٔ تکنولوژی هستیم.
به عبارت دیگر، کودکی که بلد است چگونه ایمیل ارسال کند، با دوستان خود چَت کند، در اپهای پیامرسان عضو شده و با سایر کاربران به تعامل بپردازد و … را هرگز نمیتوان کودکی دیجیتالی نامید؛ بلکه کودکی را میتوان کودک عصر دیجیتال نامید که بتواند عنان گجتهای دیجیتال را در دست گیرد، از طریق آنها یاد بگیرد و نوآوری به خرج دهد و به طور کلی مصرفکنندهٔ صِرف نباشد.
برای روشن شدن این مسأله، میتوان مبحث آموزش زبان را مد نظر قرار داد. کسی که چند عبارت یک زبان خارجی را فرا میگیرد نمیتواند ادعا کند که آن زبان را بلد است هرچند در برخی موقعیتها بتواند به سادگی گلیم خود را از آب بیرون بکشد (برای آشنایی بیشتر با روشهای یادگیری یک زبان خارجه، به مقالهٔ روشهای یادگیری و آموزش زبان انگلیسی مراجعه نمایید.) کسی هم که بلد است کامپیوتر را روشن/خاموش کند، ایمیل ارسال کند، در شبکههای اجتماعی عضو شود و … هرگز نمیتواند ادعا کند که سواد کامپیوتری دارد. در مقابل، افراد و به خصوص کودکانی را واقعاً میتوان کودکان عصر تکنولوژی نامید که با استفاده از ابزارهایی که در دسترس دارند بتوانند به ایجاد نوآوری پرداخته، از تکنولوژی برای یادگیری بیشتر استفاده کنند و در یک کلام تبدیل به کودکانی شوند که قادرند عنان تکنولوژی را در دست گرفته و کیفیت زندگی خود و جامعهای که در آن زندگی میکنند را بهبود بخشند.
به این سؤال که چگونه میتوان کودکان خود را با چنین ابزاری تجهیز کرد؟ به طور دقیق نمیتوان پاسخ داد اما مسلماً یکی از ابزارهایی که میتواند در رشد و پرورش و همچنین افزایش خلاقیت کودکان مورد استفاده قرار گیرد، آموزش اصول برنامهنویسی است. در واقع، تمامی فناوریهایی که پیش از این مثال زدیم و هر روزه در محیط پیرامون خود مشاهده میکنیم یک وجه اشتراک دارند و آن هم این است که توسط شرکت، تیم و یا حتی فردی طراحی شده یا بهتر بگوییم کدنویسی شدهاند. در همین راستا، آنچه در این مقاله قصد داریم مورد بررسی قرار دهیم، راهکارهای آموزش برنامهنویسی به کودکان و مهم از آن، تأثیرات یادگیری چنین مهارتی در زندگی فردی و اجتماعی نسل آیندهٔمان است.
رویکرد کشورهای مختلف نسبت به برنامهنویسی
در دهههای گذشته، گفته میشد هر فردی که زبان و کامپیوتر بلد نباشد به نوعی بیسواد است اما Mitchel Resnick، دانشمند مطرح علوم کامپیوتری دانشگاه MIT و مدیر بخش گروه Lifelong Kindergarter در MIT Media Lab و همچنین خالق زبان برنامهنویسی Scratch که مخصوص کودکان هشت سال به بالا است، اعتقاد دارد که:
در قرن بیست و یکم هر بچهای که اصول برنامهنویسی رو بلد نباشه بیسواد محسوب میشه!
آقای رسنیک با بیش از سی سال تجربه در این حوزه، بر این عقیده استوار است که برای ایجاد یک فضای یادگیری خلاقانه، باید محیطی آموزشی برای کودکان ایجاد کرد که دربرگیرندهٔ پروژههای عملی، کار گروهی، بازی و سرگرمی باشد تا هرگونه خستگی و کسالت از فضای آموزشی حذف گردیده و کودکان با شور و شوق دست به یادگیری مسائل جدید بزنند.
به عبارت دیگر، پیش از هر چیز باید فضایی برای بچهها ایجاد گردد تا بتوانند پروژههایی واقعی ایجاد کنند اما در عین حال این پروژهها باید به گونهای تفویض شوند که با علائق کودک همخوانی داشته باشند چرا که تجربه نشان داده اگر کودک به چیزی علاقمند باشد، مدت زمان بیشتری را برای سروکله زدن با آن سپری کرده و حتی اگر به مشکلی هم برخورد کند، به سادگی دست از کار نخواهد کشید! متودولوژیهای آموزشی به کار گرفته شده در مورد کودکان حاکی از آنند که بچهها در قالب کارهای گروهی و تیمی، چیزهای جدید را بهتر یاد میگیرند و این یادگیری زمانی دوچندان میشود که آمیخته با بازی و سرگرمی باشد.
لزوم یادگیری برنامهنویسی برای نسلهای جدید منجر گردیده تا کشورهای تراز اول دنیا تمام تلاش خود را به کار بندند تا بستری برای رشد، توسعه و خودباوری نسل جدید در زمینهٔ علوم کامپیوتری بهخصوص برنامهنویسی فراهم سازند و شاهد این ادعا هم شکلگیری سازمانهایی غیرانتفاعی همچون code.org و غیره است که جنبشی به منظور آموزش کاملاً رایگان اصول برنامهنویسی به کودکان علاقمند به راه انداختهاند.
باتوجه به اینکه کشور ایران جزو یکی از کشورهای جوان دنیا محسوب میشود و همچنین بر اساس سیاستهای اخیر اتخاذ شده از طرف دولتهای مختلف مبنی بر اینکه کلیهٔ سازمانها و نهادهای دولتی باید خدمات خود را به صورت الکترونیک به مشتریان خود ارائه دهند، این نیاز احساس میگردد تا در آیندهای نه چندان دور نیاز شرکتها، سازمانها و نهادهای مختلف به افرادی با مهارتهای برنامهنویسی چندین برابر گردد و این در حالی است که دانشگاههای کشور ایران صرفاً قادرند بخش کوچکی از این نیاز رو به رشد جامعه را پوشش دهند؛ بنابراین وظیفهٔ کلیهٔ نهادهای آموزشی انتفاعی و غیرانتفاعی است تا به بهترین شکل ممکن، این خلاء را پیش از آن موعدش فرا برسد پُر نمایند.
واقعیت امر آن است که ما در برابر نسل آیندهٔ ایران مسئول هستیم. دنیا با سرعت هرچه تمامتر به سمت علوم پیشرفته در حرکت است و یکی از این علوم Coding است. به نظر میرسد که در آینده فروشگاههای آنلاین، دورههای مجازی آنلاین و بسیاری از امکانات دیگر که بر بستر وب و موبایل هستند به گونهای زندگی ما را تحتالشعاع قرار دهند که ناگزیر باشیم بخش قابلتوجهی از زندگی خود را با این فناوریها در تعامل باشیم.
علاوه بر این، خیلی دور از ذهن نیست که در آیندهای نه چندان دور، برنامهنویسی هم به عنوان درسی اجباری در مدارس ایران تبدیل شود؛ همانطور که برخی از کشورهای تراز اول دنیا بر آن شدهاند تا آموزش برنامهنویسی را همچون دروس ریاضی، علوم و غیره در مدارس به صورت اجباری درآورند که از آن جمله میتوان به کشور ژاپن اشاره کرد که دولت این کشور تصمیم گرفته تا برای بهبود بخشیدن به خلاقیت و ارتقاء تفکر منطقی در کودکان، آموزش برنامهنویسی را در مدارس این کشور اجباری کند به طوری که قرار است این برنامهٔ آموزشی در مدارس ابتدایی از سال ۲۰۲۰ و در مدارس راهنمایی از سال ۲۰۲۱ و در دبیرستان از سال ۲۰۲۲ اجرایی شود.
به غیر از ژاپن، برخی کشورها هستند که گوی سبقت را از سایرین ربوده و در آموزش برنامهنویسی به کودکان پیش قدم شدهاند که از آن جمله میتوان به کشورهای چین، ایالات متحده، انگلستان، استونی و … اشاره کرد. جالب اینجا است که چینیها آموزش کدنویسی را حتی از قبل از ورود به پیشدبستانی آغاز کردهاند و برخی خانوارهای چینی قبل از اینکه کودکانشان به پیشدبستانی بروند، برنامهنویسی را به آنها می آموزند. در بریتانیا هم کلاسهای آموزشی برنامهنویسی برای کودکان بالای پنج سال برگزار میشود. دولت آمریکا نیز از اهمیت آموزش برنامهنویسی در مدارس آگاه است و باراک اوباما رئیسجمهور وقت این کشور در ماه ژانویهٔ ۲۰۱۶ اعلام کرد که دولت مبلغ چهار میلیارد دلار برای اجرای این طرح آموزشی سرمایهگذاری کرده است. بسیاری از دیگر کشورها نیز اختصاص بودجه به آموزش کودکان زیر هفت سال را به خاطر اهمیت این موضوع در دستور کار خود قرار دادهاند که از آن جمله میتوان به استونی اشاره کرد.
کشورهایی نظیر انگلستان، آمریکا، استونی و … جزو کشورهاییاند که بستری برای یادگیری برنامهنویسی برای بچهها فراهم آوردهاند. باتوجه به اینکه کشورهای جهان اول معمولاً چیزی را میبینند که کشورهای جهان سوم و در حال توسعه از دیدن آن قاصرند، به طور حتم مدیران آموزش چنین کشورهایی نیازی را در آینده احساس کرده و به منظور برآورده نمودن آن، از همین امروز شروع به سرمایهگذاری کردهاند؛ لذا منطقی به نظر میرسد که در زمینهٔ آموزش برنامهنویسی، پا جای پای کشورهایی بگذاریم که در این زمینه صاحبنظر هستند و اصلاً صبر نکنیم تا آینده فرا رسیده و در آن زمان به فکر چاره باشیم! از این رو، همچون زبان انگلیسی که امروزه لازم و ضروری است، فراگیری اصول برنامهنویسی هم میتواند تأثیرات غیرقابلانکاری در زندگی کاری و فردی کودکان امروز -و بزرگسالان فردا- داشته باشد.
تأثیرات آموزش برنامهنویسی روی کودکان
نکتهای که امروزه به کرات دیده میشود، وابستگی بیش از حد کودکان به بازیهای کامپیوتری است. در واقع، این وابستگی چنانچه هدفمند نباشد میتواند کودک را به فردی مصرفکننده، غیرخلاق و تکبُعدی مبدل سازد. نیاز است تا کودکان از همین سنین ابتدایی خلاقیت خود را شکوفا سازند و مسئولیت پروژههای کوچکی همچون یک بازی کوچک، یک انیمیشن کوتاه و ... را بر عهده گیرند تا در سنین بزرگسالی بتوانند یک شرکت را رهبری کرده، تشکیل خانواده دهند و تأثیر مثبتی در جامعهٔ خود به جای بگذارند. به طور خلاصه، با آموزش اصول برنامهنویسی به کودکان خود به شکلی نوین، میتوان نسل دیجیتالی آیندهٔ ایران را به گونهای تربیت کنیم که متفاوت از نسلهای قبل فکر کنند، خلق کنند و تأثیرگذار باشند.
از سوی دیگر، جدای از نوع زبان برنامهنویسی، فراگیری اصول برنامهنویسی تأثیرات شگرفی بر نحوهٔ عملکرد کودکانمان در زندگی شخصیشان خواهد داشت. کسانی که در دنیای برنامهنویسی قدم میگذارند، خلاقیت در ایشان به مراتب شکوفاتر شده، تفکر انتقادی در ایشان شکل میگیرد و به مسائل از زوایای مختلف نگاه خواهند کرد.
حال با قرار دادن برنامهنویسی به عنوان یک سرگرمی در برنامهٔ روزانهٔ کودکان، این کار نه تنها میتواند متضمن ایجاد تأثیرات مثبت برنامهنویسی در زندگی فردی وی در سنین خردسالی و همچنین در بزرگسالی باشد، بلکه میتواند کودک را به منظور ورود به بازار کار یکی از پردرآمدترین مشاغل دنیا -یعنی توسعهٔ نرمافزار- نیز آماده سازد.
فراگیری برنامهنویسی همواره کاری دشوار بوده و اکثر کسانی که شروع به فراگیری این مهارت مینمایند پس از مدت زمان کوتاهی انگیزهٔ خود را از دست داده و در نهایت از ادامهٔ یادگیری باز میمانند. حال زمانی که قصد داریم آموزش اصول برنامهنویسی به کودکان را شروع کنیم، حساسیت این کار دوچندان شده و عوامل مختلفی دست به دست یکدیگر داده تا به هدفمان که همان آشنا کردن کودکان با مهارتهای مرتبط با برنامهنویسی است دست نیابیم.
با پیشرفت متدولوژیهای آموزشی -بالاخص آموزش به افرادی که در سنین پایین قرار دارند- شاهد ابداع یکسری زبانهای برنامهنویسی بودهایم که نه تنها دشوار نیستند، بلکه توانستهاند این مهارت نسبتاً دشوار و گاهی اوقات ناامیدکننده را به مهارتی لذتبخش برای کودکان تبدیل کنند. حال ممکن است این سؤال پیش بیاد که «اگر بچهٔ من نخواهد برنامهنویس شود چهطور؟» در پاسخ به این سؤال بایستی گفت همانطور که ما با یادگیری اصول نگارش فارسی اصلاً قصد نداریم که نویسنده، شاعر و مؤلف شویم، اما با استفاده از این مهارت میتوانیم کارهای روزمرهٔ خود را انجام دهیم، با سایرین مکاتبه کنیم و غیره، به همین منوال هم با یادگیری کدنویسی اصلاً قصد نداریم تا همهٔ بچهها را برنامهنویس کنیم بلکه این مهارتی است که با استفاده از آن میتوان خلاقیت بچهها را شکوفا کرد و کودکان باید بدانند چهطور این ابزار را با روشی خلاقانه، غیرمعمول و امتحاننشده نیز به کار ببرند. در ضمن، همانطور که با یادگیری خواندن و درک مطلب ما میتوانیم چیزهای جدیدی یاد بگیریم و بنویسیم، با یادگیری برنامهنویسی نیز میتوان مسائل جدید را با کدنویسی آموخت. آموزش برنامهنویسی به کودکان مزایای زیادی دارا است که در ادامه برخی از مهمترین آنها را برخواهیم شمارد:
- زندگی در عصر دیجیتال: از خودروهای بدون سرنشین گرفته تا رباتهایی که در جراحی کاربرد دارند و سایر فناوریهای روز دنیا، همگی با علوم کامپیوتری بهخصوص برنامهنویسی عجین هستند و این فناوری است که تمامی جنبههای زندگی ما را متحول ساخته است. کدنویسی یک مهارت اساسی است که بخش لاینفک تمامی فناوریهایی است که در محیط پیرامون خود مشاهده میکنیم که کودکانمان نیاز به فراگیری آن دارند تا بتوانند این جنبش فناوری را زنده نگاه داشته و به پیش برند.
- توانایی حل مسأله: برنامهنویسی یکی از راههایی است که از آن طریق میتوان تفکر ریاضیاتی را به بچهها آموزش داد. زمانی که کودکان یک برنامه را طراحی کرده و دست به دیباگ کردن یک برنامهٔ خراب میزنند، ایشان با مهارتهای حل مسأله دستوپنجه نرم میکنند. با کدنویسی، بچهها به صورت ناخودآگاه به یادگیری منطق میپردازند و باتوجه به اینکه این کار از طریق گیم صورت میگیرد، ایشان اصلاً از این کار خسته نمیشوند.
- توانایی تفکر انتقادی: همانطور که قبلاً اشاره شد، آموزش تکنیکهای کدنویسی به کودکان کمک میکند تا مهارتهای تفکر انتقادی و فرآیندهای حل مسئله را در خود افزایش دهند؛ مهارتهایی که نه فقط در علوم کامپیوتری بلکه در زندگی شخصی نیز حائز اهمیتاند. این مهارتها به آنها میآموزد تا دامنهٔ دیدشان را وسعت ببخشند و چالشهای بزرگ را به مشکلات قابلحلتر و کوچکتر تقسیم کنند. در واقع، آنها قادر خواهند بود تا میان مسائل مختلف روابط منطقی ایجاد کنند که به آنها کمک میکند تا بیاموزند چهطور شرایط مختلف را به درستی تحلیل کنند. داشتن این نوع از مهارت فقط مخصوص کسانی که میخواهند در آینده مهندس نرمافزار شوند نیست بلکه برای همهٔ افراد ضروری است چرا که به آنها کمک میکند تا به اهداف بزرگ و مهمی که در زندگی دارند دست یابند.
- شگفتیهای قصهگویی در حین کدنویسی: کدنویسی در حقیقت مانند نقل یک داستان است؛ اینکه بدانید چهطور بنویسید یا فاکتورهای گوناگون بر طبق کدام الگو به دنبال هم قرار بگیرند. بیشتر زبانهای برنامهنویسی که برای کودکان طراحی شدهاند معمولاً از بازیهای مختلف برای آموزش کدنویسی به بچهها بهره میگیرند و نیازمند این است تا بچهها یک خط داستانی را دنبال کنند یا حتی خودشان در حین بازی کردن و کدنویسی داستانی را روایت کنند.
- رشد خلاقیت: خیلی از بچهها ایدههایی دارند که گاهی اوقات نمیتوانند آنها را از حالت بالقوه به بالفعل درآورند و یا اگر هم بتوانند، نهایتاً در قالب یک فضای دوبُعدی همچون نقاشی، آبرنگ و … نمود عینی پیدا خواهند کرد اما با یادگیری مهارتهای کدنویسی، میتوان این خلاقیت را به شکلی نوین شکوفا ساخت. در واقع، با بهرهگیری از زبانهایی که برای کودکان طراحی شدهاند، کودکان قادر خواهند بود تا در قالب گیم، انیمیشن، داستانسرایی و … ایدههای خود را از بالقوه به بالفعل درآورند.
- تقویت اعتماد به نفس: زمانی که کودک یک پروژهٔ نرمافزاری -هرچند کوچک مثل یک بازی ساده- طراحی میکند و آن را با اعضای خانواده و همسن و سالانش به اشتراک میگذارد، این مسأله منجر به رشد اعتماد به نفس وی خواهد شد چرا که توانسته دست به پیادهسازی کاری بزند که در محیط پیرامونش کمتر کسی توانایی انجام آن را دارد!
- یادگیری سریعتر در سنین پایینتر: یادگیری کدنویسی همانند یادگیری یک زبان خارجه است به این شکل که هرچه در سنین پایینتر شروع شود، سریعتر فرا گرفته شده و بالتبع نهادینهتر خواهد شد. بسیاری از کسانی که در زمینهٔ علوم کامپیوتری صاحبنظر هستند بر این باورند که فراگیری یک زبان برنامهنویسی تا حد بسیار زیادی شبیه به یادگیری زبانی همچون زبانهای فارسی، عربی، انگلیسی و … است.
تحقیقاتی که در زمینهٔ فعالیت مغزی بشر از طریق امآرآی صورت گرفته نیز شاهد این ادعا است که ارتباطی مابین یک زبان زندهٔ دنیا و زبانهای برنامهنویسی وجود دارد چرا که وقتی فردی در دستگاه امآرآی قرار گرفته و از وی خواسته شد تا کاری را انجام دهد، دانشمندان مشاهده کردند که بخشهایی از مغز وی اکسیژن بیشتری استفاده کردند که این مسأله نشانگر آن است که بخشهای فوقالذکر مرتبط با کاری هستند که فرد مورد آزمایش انجام داده بود. این تحقیق نشان داد که مغز بشر در ارتباط با زبانهای برنامهنویسی نیز عملکردی به همان شیوهای خواهد داشت که در ارتباط با موسیقی، صحبت کردن، حل مسئله، حفظ کردن چیزی، تکرار کاری، استدلال کردن و … دارا است.
تحقیقات حاکی از آنند زمانی که ما قصد نواختن یک قطعهٔ موسیقی داریم، ناحیهای تحت عنوان Brodmann`s Area 40 که کمی بالای گوش قرار گرفته است فعال میشود. ده سال پس از این آزمایش، محققین از هفده برنامهنویس خواستند تا مادامی که داخل دستگاه امآرآی قرار دارند اقدام به تفسیر چند خط کد کنند و جالب است بدانید که نتایج از بسیاری جهات مشابه با نواختن موسیقی بود بهخصوص در ناحیهای که در بالا بدان اشاره شد. فرایند حل مسأله کاری است که ما هر روزه با آن سروکار داریم؛ از حساب کردن فاکتور خرید میوه گرفته تا محاسبهٔ امور مالیاتی یک شرکت بزرگ و این همان چیزی که با یادگیری کدنویسی، تقویت میگردد.
اتفاق جالبتر این که تحقیقات ثابت کردهاند همانطور که ما ماهیچههای خود را تمرین میدهیم، میتوانیم مغز خود را نیز تمرین دهیم. صحبت کردن و برنامهنویسی، هر دو بخش واحدی از مغز را درگیر میکنند؛ لذا این احتمال وجود دارد که برنامهنویسی منجر به بهبود عملکرد افراد در صحبت کردن شود (به واژهٔ احتمال خوب دقت کنید.) با این تفاسیر، میتوان نتیجه گرفت که فراگیری برنامهنویسی میتواند منجر به بهبود سایر مهارتهای فردی گردد.
- تقویت قدرت استدلال: در تمامی برنامههای کامپیوتری -از برنامههای بزرگ گرفته تا کوچک- برنامهنویس نیازمند استدلالهای دقیق است. کودکان در حین کدنویسی با مهارتهایی همچون منطق، تحلیل داده، تحلیل پروژه و شکستن آن به بخشهای کوچک قابلمدیریت آشنا میشوند. بسیاری از این مهارتها منجر به تقویت قدرت استدلال کودک شده که علاوه بر برنامهنویسی، در حل کردن سایر مسائل همچون ریاضیات نیز کاربرد دارند.
- کمک به درک مفاهیم انتزاعی: مفاهیم انتزاعی همچون ریاضیات برای بسیاری از بچهها به عنوان چالشی بزرگ است اما این در حالی است که با استفاده از برنامهنویسی، میتوان این مفاهیم را به شکلی بصری در معرض دید کودکان قرار داد و ریاضیات را از قالبی خشک، به فضایی توأم با بازی و سرگرمی برای کودکان مبدل ساخت.
نظر عموم بر این عقیده استوار است که برای موفقیت در کدنویسی، باید مهارتهای ریاضیاتی را تقویت کرد؛ به عبارت دیگر، هرچه مهارتهای ریاضیاتی شما بیشتر باشد، احتمال موفقیت شما در کدنویسی نیز بیشتر خواهد بود. واقعیت امر آن است که به این قضیه از بُعدی دیگر نیز میشود نگاه کرد. به عبارت دیگر، دانش کدنویسی به کودکان کمک میکند تا درسهایی همچون ریاضیات را بهتر متوجه شوند (تحقیقات میدانی در مدارس ایالات متحده نشان داده کودکانی که برنامهنویسی بلد هستند، در درس ریاضیات نمرههای بهتری کسب میکنند.)
- یاد گرفتن کار گروهی: امروزه شرکتهای تراز اول دنیا در فرایند استخدامی خود علاوه بر مهارتهای فنی، مهارتهای تیمی و کار گروهی را نیز بسیار باارزش قلمداد میکنند و به جرأت میتوان گفت که یادگیری مهارت کار گروهی چیزی است که در تمامی عرصههای زندگی به درد کودکانمان خواهد خورد. در برنامهنویسی هم بدون کار گروهی هرگز نمیتوان به موفقیتهای بزرگی دست یافت. کودکان با یادگیری برنامهنویسی، به این مهارت تجهیز خواهند شد و در آینده خواه برنامهنویس شوند و خواه به شغل دیگری مشغول شوند، این مهارت زندگی کاری ایشان را بسیار اثربخشتر خواهد ساخت.
- سختگوشی: بدون هرگونه تعارفی، برنامهنویسی کار نسبتاً دشواری است و اگر کسی بتواند در ابتدای راه فراگیری این مهارت انگیزهٔ خود را از دست ندهد، به طور حتم از عهدهٔ یکی از مهارتهای دشوار اما در عین حال لذتبخش بازار کار کنونی دنیا برآمده است. پس از شروع برنامهنویسی، به دلیل چالشهایی که این مهارت به همراه دارد، به صورت ناخودآگاه کودکان سختکوش میشوند و یاد میگیرند که با برخورد به اولین مانع، نمیبایست دست از کوشش و فعالیت خود بکشند.
آشنایی با روش جزء به کل در یادگیری کدنویسی
بعضی از افراد پیشنهاد میکنند تا هنگامی که علاقمند به برنامهنویسی شدید، بلافاصله باید وارد عمل شده و با استفاده از زبان برنامهنویسی مد نظر خود، ایدهای را به واقعیت تبدیل کنید. در طرف دیگر پیشنهاد میشود که از یک رویکرد از جزء به کل استفاده کرده، ابتدا مفاهیم اصلی برنامهنویسی را یاد گرفته و گامبهگام و با گذشت زمان شروع به ساختن برنامه یا اپلیکیشن نمایید. Semmy Purewal یک برنامهنویس در Netflix که سابقاً یک مدرس برنامهنویسی بوده، دربارهٔ تفاوت بین این دو روش اینگونه توضیح میدهد:
روش جزء به کل حاکی از اونه که بهتره کدآموز با یک اپلیکیشن یا فریمورک سطح متوسط کار کنه تا تشویق بشه کارش رو ادامه بده. تعداد زیادی از کتابها و منابع آنلاین هستن که کاملاً از یک روش جزء به کل در منابع خود استفاده میکنن که اغلب آموزش خود رو با معرفی متغیرها و دستورات شرطی و ... آغاز میکنن.
رویکرد جزء به کل از مباحث پایهای برنامهنویسی شروع میکنه سپس آهسته آهسته اطلاعات شما رو تکمیل میکنه. این روش که در مقابل روش کل به جزء قرار داره، این امکان رو برای کدآموز ایجاد میکنه تا چیزهایی که نامفهوم باشند رو برای شما به حداقل برسونه.
این برنامهنویس به همهٔ تازهکارها پیشنهاد میکند تا از روش جزء به کل در یادگیری یک زبان برنامهنویسی جدید استفاده کنند، چرا که شما را از پایه قوی بالا میآورد. پس از یادگیری کامل مقدمات، برای شما راحتتر و طبیعیتر خواهد بود تا نسبت به ساختن نرمافزارهای پیچیدهتر اقدام نمایید.
برای روشنتر شدن این مسئله، میتوان نوشتن یک رمان را مد نظر قرار داد. به طور مثال، اگر شما بخواهید یک رمان به زبان آلمانی بنویسید، ابتدا باید با الفبا و دستور زبان آلمانی آشنا شده و پس از تقویت خود از بُعد دامنه لغات و سایر مسائل مربوطه، خواهید توانست شروع به نوشتن رمان مد نظر خود به زبان آلمانی کنید.
درآمدی بر تاریخچهٔ آموزش برنامهنویسی به کودکان
باز هم همچون سایر حوزهها، ایالات متحده در این زمینه پیشتاز بوده به طوری که در دههٔ ۱۹۸۰، برخی مدارس ایالات متحده با استفاده از زبانهای Basic و Logo، اقدام به آموزش اصول برنامهنویسی به کودکان کردند اما بخش قابلتوجهی از این دورههای آموزشی با شکست مواجه شدند چرا که محیطهای برنامهنویسی که در آن زمان برای آموزش برنامهنویسی به کودکان استفاده میشدند خیلی خشک و بیروح بودند و کودکان تحت هیچ عنوان نمیتوانستند آموختههای خود را با دنیای واقعی مرتبط سازند و همین میشد که به مرور زمان انگیزهٔ خود را از دست میداند.
دانشمندان علوم کامپیوتری از شکست زبانهای بیسیک و لوگو در سالیان گذشته درس گرفته و سعی نمودند پلتفرمهایی برای آموزش برنامهنویسی به کودکان ایجاد کنند که از یکسو محیط خشکی نداشته و از سوی دیگر اصول برنامهنویسی را در قالب گیم (بازی) به کودکان بیاموزند و نتیجه این شد که نرمافزارها، سایتها و اپلیکیشنهایی که در ادامه معرفی مینماییم، ابداع شدند:
Kodable
این اپلیکیشنی برای رنج سنی 4 تا 11 سال برای پلتفرمهای آیپد، اندروید، مک، پیسی و تحت وب عرضه شده است.
Daisy The Dinosaur
این سرویس آموزشی برای گروه سنی ۶ تا ۱۰ سال برای پلتفرم آیپد است.
Move The Turtle
پلتفرمی برای آیپد و آیفون برای آموزش اصول کدنویسی به کودکان ۵ سال به بالا است.
CodeMonkey
یک محیط بازی آموزشی و سرگرمکننده که کودکان با استفاده از آن میتوانند کدنویسی را تجربه کنند.
Kodu
پلتفرمی برای ویندوز و ایکسباکس برای ساخت بازی است که در سال ۲۰۰۹ به دنیا عرضه شد.
Turtle Academy
این سایت مجموعه آموزشهای کاربردی برای زبان Logo را برای علاقمندان فراهم آورده است.
Code
این سایت در سال ۲۰۱۳ توسط برادران هادی و علی پرتوی شروع به کار کرد که جنبش آموزش برنامهنویسی به کودکان در سراسر دنیا در قالب Hour of Code (زنگ کدنویسی) را به راه انداختهاند.
Hopscotch
این سایت برای برای گروه سنی ۹ تا ۱۱ سال برای آیپد و آیفون است.
GameSalad
این سرویس برای سیستمعاملهای مک و ویندوز برای ساخت بازیهای ساده عرضه شده است.
AppInventor
این سایت نرمافزار تحت وب گوگل تحت رهبری دانشگاه MIT برای ساخت اپهای اندرویدی است.
kidsruby
این سرویس برنامهای برای یادگیری زبان روبی در پلتفرمهای مک، ویندوز، لینوکس است.
Tynker
پلفترمی برای آموزش اصول برنامهنویسی به کودکان است که در دستهبندیهای ۷ سال به بالا، ۱۰ سال به بالا و ۱۲ سال به بالا طراحی شده است.
Scratch
زبان برنامهنویسی اسکرچ در ماه مه سال ۲۰۰۷ به دنیا عرضه شد که در حال حاضر هم غولهای فناوری دنیا همچون گوگل، اینتل، اسباببازی سازی لِگو، آمازون، گیتهاب و غیره از جمله حامیان اصلی این زبان برنامهنویسی هستند. اسکرچ در قالب محیطی کاملاً بصری و منطبق بر نیازهای کودکان طراحی شده است؛ این زبان برنامهنویسی با هدف آموزش به کودکان ۸ الی ۱۶ سال طراحی شده است اما این در حالی است که افراد خارج از این طیف سنی نیز میتوانند بنا به نیاز خود از آن استفاده نمایند (استفاده از این زبان در دانشگاههای هاروارد و برکلی به عنوان زبان برنامهنویسی مقدماتی صورت میگیرد.)
معنی لغوی Scratch یعنی «سرهمبندی کردن» به این شکل که کودکان میتوانند بلوکهای کد مختلف را سرهمبندی کرده و پروژههای مختلفی خلق کنند. کودکان با فراگیری اصول زبان برنامهنویسی اسکرچ قادر خواهند گشت تا به ساخت انیمیشن، طراحی بازیهای کامپیوتری و حتی داستانسرایی بپردازند. از جمله مزایای زبان برنامهنویسی اسکرچ نسبت به سایر زبانها میتوان به موارد زیر اشاره کرد:
- پشتیبانی از بیش از ۴۰ زبان زندهٔ دنیا از جمله زبان فارسی
- قابلیت استفاده در سیستمعاملهای مختلف از ویندوز و لینوکس گرفته تا مکینتاش و حتی به صورت آنلاین
- برخورداری از جامعهای از کودکان برنامهنویس به تعداد بیش از یک میلیون!
- ایجاد بستری برای رشد خلاقیت کودکان
- امکان به اشتراکگذاری پروژههای کودکان به صورت آنلاین
- فراهم آوردن فرصتی برای کودکان به منظور رشد مهارتهای میان فردی و …
- گرفتن جلوی اشتباه کردن کودک
آشنایی با یکی از دولوپرهای موفق زبان اسکرچ
یکی از پروژههایی که توسط دختر 12 سالهای در Scratch انجام شده بود، یک کارت کریسمس با تصاویر کارتونی بابانوئل و گوزن بود. هر گوزن یک آلت موسیقی داشت که موقع کلیک بر روی آن، قسمتی از آهنگ «کریسمس مبارک» پخش میشد. این دختر جوان که با نام مستعار BlueSaturn در این سایت معروف است، برای تمام دوستانش لینکی از این پروژه را به عنوان هدیهٔ روز کریسمس فرستاد.
هنگامی که BlueSaturn بر روی کارت کریسمس کار میکرد، متوجه شد که از خلق شخصیتهای انیمیشنی لذت میبرد. بنابراین پروژهای شامل یکسری از شخصیتهای مختلف انیمیشنی از جمله دایناسور، اژدها، اسبپرنده و غیره ایجاد کرد و در مستندات مربوط به پروژه، BlueSaturn دیگران را به استفاده از این شخصیتها تشویق کرد. او شخصیتهای سفارشی را نیز مطابق درخواست کاربران ایجاد میکرد. در واقع، او یک سرویس مشاوره راهاندازی کرد که مؤسسین این سایت نیز هرگز تصور نمیکردند که وبسایت آنها به این روش نیز بتواند مورد استفاده قرار گیرد!
یکی از اعضای سایت درخواست یک یوزپلنگ برای استفاده در پروژهٔ خود در Scratch کرد و BlueSaturn انیمیشنی از یک یوزپلنگ بر طبق ویدئویی که در سایت نشنال جئوگرافیک دیده بود، ایجاد کرد. برای یکی دیگر از اعضای سایت، او یک پرنده ایجاد کرد و آموزش مرحله به مرحله ایجاد آن را نیز نوشت. در نهایت، BlueSaturn در سایت اسکرچ معروف شد و درخواستهایی برای پیوستن به تیمهای ساخت انیمیشنهای آنلاین دریافت کرد. در یکی از این تیمها، BlueSaturn با چهار نفر دیگر از کشورهای مختلف برای ایجاد یک گیم ماجراجویی حرفهای همکاری کرد. در واقع، BlueSaturn شخصیتهای انیمیشنی را ایجاد میکرد در حالی که اعضای دیگر سناریوی گیم، موسیقی و اِفِکتهای صوتی و طراحی پسزمینه را انجام میداند. در فرآیند انجام این پروژهها، BlueSaturn قطعاً مهارتهای برنامهنویسی را یاد میگرفت ولی در کنار آنها خیلی چیزهای دیگر را نیز آموخت که از آن جمله میتوان به موارد زیر اشاره کرد:
- یاد گرفت که چگونه یک مسئلهٔ پیچیده را به بخشهای سادهتر تقسیم کند
- یاد گرفت چگونه طرح خود را بارها و بارها اصلاح کند
- یاد گرفت چگونه باگها را شناسایی و رفع کند
- یاد گرفت چگونه با دیگران همکاری و مشارکت کند
- یاد گرفت چگونه در برابر چالشها استقامت به خرج دهد
- و از همه مهمتر هم اینکه یاد گرفت چگونه کار گروهی کند
به طور کلی، اعضای فعال وب سایت Scratch یاد میگیرند دربارهٔ خودشان متفاوت فکر کنند. آنها خود را به عنوان سازندگان و طراحان باور کردند که میتوانند چیزهایی را ایجاد کنند و خودشان را از طریق رسانهٔ دیجیتالی مطرح کنند و نه اینکه فقط جستجو کنند، چت کنند و گیم بازی کنند. در حالی که بسیاری از افراد میتوانند رسانهٔ دیجیتالی را بخوانند، افرادی که در Scratch فعالیت میکنند میتوانند رسانهٔ دیجیتالی را خلق کنند و در جامعهٔ دیجیتالی امروز سهیم باشند (لازم به ذکر است که سکان آکادمی افتخار دارد اولین دورهٔ جامع ویدیویی آموزش زبان اسکرچ را به صورت آنلاین و کاملاً رایگان با تدریس یک مدرس برنامهنویسی ۱۲ ساله عرضه کند.)
چرا اکثر دولوپرها خوشحال هستند؟
شبکهٔ اجتماعی لینکداین که به صورت تخصصی در حوزهٔ کسبوکار فعالیت میکند، هر ساله اقدام به انتشار آمار و ارقامی مرتبط با مشاغل مختلف میکند و جالب است بدانیم که در سال ۲۰۱۴، لیست منتشر شده توسط این شرکت که مرتبط با مهارتهایی بودند که اکثر شرکتهای تراز اول به دنبال آنها هستند، نویدبخش آیندهای بسیار درخشان برای برنامهنویسان بود. به عبارت دیگر، از این لیست ۲۵ آیتمی، ۱۰ مورد اول مرتبط با برنامهنویسی، توسعهٔ نرمافزار و سایر حوزههای وابسته بود.
بر اساس گزارشهای سرویس پرسش و پاسخ استک اورفلو در سال ۲۰۱۶، مشاغل مرتبط با برنامهنویسی همچون مدیر فنی، توسعهدهندهٔ موبایل، توسعهدهندهٔ وب و غیره در ایالات متحده سالانه چیزی مابین ۱۰۰ تا ۱۵۰ هزار دلار دریافتی دارد (همین آمار و ارقام نیز حاکی از آنند که چیزی در حدود ۷۰٪ از برنامهنویسان حرفهای دنیا به صورت خودآموز اقدام به فراگیری برنامهنویسی کردهاند.)
اگر شما هم جزو کسانی هستید که از حقوق اندک خود شاکی میباشید، جالب است بدانید که بر اساس تحقیقی که در ایالات متحدهٔ آمریکا انجام شد مشخص گردید که اکثر توسعهدهندگان یا بهتر بگوییم کسانی که از کدنویسی کسب درآمد میکنند از افرادی که به سایر مشاغل مشغولند خوشحالتر هستند و یکی از دلایل خوشحالی ایشان میزان درآمد نسبتاً بالای ایشان است.
این تحقیق که توسط سایت SkilledUp رهبری شد حاکی از آن است که ۸۸٪ از توسعهدهندگانی که مورد بررسی قرار گرفتند کاملاً از کار خود راضی بودند و ۱۱٪ هم تاحدودی راضی بوده و تنها ۱٪ از این گروه توسعهدهندگان از شغل خود ناراضی بودند (بیشتر این توسعهدهندگان خوشحال در زمینهٔ طراحی اپ موبایل و طراحی واکنشگرا فعالیت میکردند.)
نیاز به توضیح نیست که درآمد قابلتوجه برنامهنویسان در کشورهای غربی در زمینهٔ میزان خوشحالی برنامهنویسان مزید علت شده است. اکثر برنامهنویسان در این تحقیق حقوقی مابین ۵۰ هزار تا ۱۴۹ هزار دلار در سال داشتند که جالب است بدانیم ۸۲٪ از ایشان اظهار داشتهاند که ظرف ۶ ماه آینده قرار است تا ترفیع شغلی هم بگیرند.
این تنها تحقیقی نیست که حاکی از برتری درآمدی توسعهدهندگان نسبت به سایر مشاغل در سرتاسر دنیا بهخصوص ایالات متحده است بلکه تحقیق دیگری هم در سال ۲۰۱۵ توسط مؤسسهٔ CreerBliss انجام شد که بر اساس نتایج این تحقیق، توسعهدهندگی وب جزو ۱۰ شغل خوشحالکننده است. باتوجه به اینکه برنامهنویسان را اغلب میتوان پای یک لپتاپ شخصی یافت و اکثر ایشان از تنوع در محیط کار، گشتزنی و … محروم هستند، این سؤال به ذهن خطور میکند که چه میشود تا یک برنامهنویس تا اینقدر از شغل خود راضی باشد؟
تعادل کار و زندگی، تنوع شغلی، محل کار و … جزو چیزهایی هستند که منجر گردیده تا برنامهنویسان جزو پرسنل خوشحال جامعهٔ کاری محسوب گردند. برخی شرکتکنندگان در این تحقیق اظهار داشتند که ایشان حتی این فرصت را داشتهاند تا از منزل به کار خود ادامه دهند بدون اینکه نیاز باشد تا سختی تردد مسیر منزل تا محل کار را متحمل شوند.
با چیزهایی که در بالا به آنها اشاره شد، ممکن است وسوسه شده باشید که ای کاش میشد تا پا در دنیای برنامهنویسی میگذاشتید اما وقتی به این فکر میکنید که سواد آکادمیک در این زمینه ندارید، مایوس میشوید! خبر خوشحالکننده اینکه اکثریت این گروه توسعهدهندگان اظهار داشتند که داشتن مدرک دانشگاهی برای اخذ چنین موقعیت شغلی اصلاً مورد نیاز نیست و ۵۶٪ از ایشان هم اظهار داشتند که پیش از برنامهنویسی، ایشان در حرفهٔ دیگری مشغول به کار بودهاند و پس از آنکه وارد دنیای برنامهنویسی شدند، با دورههای در حین خدمت (OJT) و دورههای آنلاین آموزش برنامهنویسی، مهارتهای مورد نیاز را کسب کردند.
کلام آخر
بر اساس گزارشی که مایکروسافت در سال ۲۰۱۲ منتشر کرد، تا سال ۲۰۲۰ چیزی در حدود ۱/۴۰۰/۰۰۰ فرصت شغلی حوزهٔ آیتی و برنامهنویسی در ایالات متحدهٔ آمریکا به وجود خواهد آمد که دانشگاهها صرفاً ۴۰۰/۰۰۰ مورد آن را تأمین میکنند که در چنین شرایطی شاهد یک رشد بیش از ۲۰ درصدی بازار کار برنامهنویسی هستیم!
اگرچه فضای آموزشی و کسبوکار ایران تاحدودی متفاوت از سایر کشورهای دنیا است، اما به نوعی میتوان کمبود برنامهنویسان حرفهای در سالهای پیشرو را در فضای کسبوکار ایران نیز پیشبینی کرد. روی هم رفته، به عنوان والدینی دلسوز به اینکه فرزندتان میتواند با یک اسمارتفون یا تبلت کار کند راضی نباشید؛ امروزه این دیگر کافی نیست و کودکان برای موفقیت باید بیش از اینها بدانند و همانطور که بزرگتر میشوند بیشتر از گذشته خلق و ابداع کنند.
در یک کلام، کدنویسی یک مهارت ضروری است حتی قبل از مدرسه رفتن و شاهد چنین ادعایی هم اینکه در کشور استونی -کشوری که اسکایپ را به دنیا معرفی کرد- دانشآموزان در مدارس کدنویسی را میآموزند و کدنویسی یک زنگ اجباری در مدارس است. در یک کلام، نگذارید فرزندانتان از دنیای تکنولوژی عقب بمانند! در پایان هم به این سخن از استیو جابز -اسطورهٔ دنیای تکنولوژی- اکتفا میکنیم با این مضمون که:
اگر میخواهید بچههای خود رو خِنگ بار بیاورید، تلویزیون در اختیارشون قرار بدید و اگر هم میخواین اونها رو خلاق بار بیارید، کامپیوتر در اختیارشون بگذارید.