مصاحبهای با برنده مسابقه سالانهی کدنویسی متنباز شرکت گوگل، ایثان چیئو
با برنده مسابقه سالانهی کدنویسی متنباز شرکت گوگل، ایثان چیئو، یک دانشآموز دبیرستانی باانگیزه و کوشا صحبت میکنیم. هدف پروژهی ایثان گرد آوردن دانشآموزان است تا با نظارت بر دوستان خود، به یکدیگر در درسهای مدرسه کمک کنند. اما چه چیز الهامبخش او برای این کد بود؟
چرا تصمیم گرفتید در این مسابقه کدنویسی شرکت کنید؟
چون این مسابقه در تابستان بود، میدانستم زمان بیشتری داشتم که کد فوقالعادهای بنویسم! بنابراین میخواستم دانش فعلیام را از برنامهنویسی به چالش بکشم و یک برنامه کاربردی وب بنویسم که به جامعه کمک کند.
ایدهی StudyTogether را چگونه یافتید؟
این ایده را از هممدرسهایهایم که معلم خصوصی هستند و دوستانم که از سیستم تدریس خصوصی دانشآموزان مدرسهمان کمک میگیرند گرفتم. سیستم تدریس خصوصی دانشآموزان مدرسه ما واقعاً جالب است؛ رایگان و در دسترس همه دانشآموزان است. این سیستم به مدرسان خصوصی، سابقه آکادمیکی و تجربهی تدریس میدهد، بقیه دانشآموزان نیز فرصت پیدا میکنند در یک موضوع درسی دشوار با کمک یک معلم خصوصی رایگان پیشرفت کنند.
بااینحال فهمیدم که این سیستم هنوز جوانب منفیای دارد. هیچ فرایند مؤثری در این سیستم تدریس خصوصی دانشآموزان وجود نداشت. این سیستم نامرتب بود زیرا به چندین بخش مختلف برای هر مبحث تقسیم شده بود. دانشآموزان مجبور بودند که برای دسترسی به سیستم تدریس خصوصی دانشآموزی، معلمان بخصوصی را جستجو کنند. مهمتر اینکه بسیاری از دانشآموزانی که در تقلای یافتن معلم بودند، حتی از این سیستم مطلع نبودند زیرا این سیستم بهطور شفاهی منتقل میشد. بهعلاوه این سیستم یک برنامه زمانی نامنعطف و سخت، هم برای مدرس و هم دانشآموز تعیین میکرد. دانشآموزانی که کمک نیاز داشتند، غالباً کمک کافی برای پیش بردن کلاسهای آینده دریافت نمیکردند و معلمان خصوصی باید یک برنامه زمانی پرزحمت را دنبال میکردند؛ جالبتر از همه آنکه من تا قبل از آخرین هفتههای مدرسه در مورد آن نشنیده بودم. بنابراین تلاش میکنم که سیستم فعلی تدریس خصوصی دانشآموزان را دسترسپذیرتر، مقیاسپذیرتر و انعطافپذیرتر کنم. هدف اولیهام ساخت یک برنامه کاربردی است که به دانشآموزانی که نیاز به کمک در همه درسهای مدرسه دارند، امکان برخورداری رایگان را فراهم کند.
هنگام ساخت برنامه کاربردی، مطمئنم شدم که به مدرسهام کمک میکنم. سعی کردم سه ارزش اصلی را تلفیق کنم: سازمان، انعطافپذیری و امنیت. برنامه کاربردی وب خود را اینگونه تخیل میکردم که هم معلمان خصوصی دانشآموز و هم دانشآموزان بتوانند سریعاً باهم قرار ملاقات بگذارند. بهعلاوه دانشآموزان نیز بتوانند معلم خصوصی خود را برحسب دانش، دسترسی و زمانبندی انتخاب کنند؛ ضمن اینکه معلمان خصوصی نیز بتوانند قبل از جلسه در مورد سؤالهای دانشآموزان خود مطلعتر باشند. این سیستم، تحت نظارت و امن است و مدیران که معلم مدرسهاند آن را کنترل میکنند. اگر تدریس خصوصی رودررو امکانپذیر نیست، دانشآموزان و معلمان خصوصی دانشآموز میتوانند از طریق سیستم ویدئوکَم یا اینباکس ارتباط برقرار کنند. معلمان خصوصی میتوانند جلسات تدریس خصوصی ویدئویی خود را (که همیشه ضبط میشود) بر یوتیوب پست کنند تا دیگران نیز بتوانند بیاموزند.
در کل میخواهم این برنامه کاربردی وب به دانشآموزان کمک کنند. امیدوارم در آینده نزدیک، بعد از چند آزمون در مدرسهام، بتوانم آن را به سیستمهای دیگر مدارس توسعه بدهم تا یک شبکه قدرتمند از منابع ایجاد شود.
چه بخشهایی از کدنویسی دشوار بود؟
دشوارترین بخش کار وقتی بود که CSS را برنامهنویسی میکردم. معمولاً یافتن اشتباهاتی که ممکن بود پروژهام به دلیل آن دور انداخته شود، دشوار بود. مثلاً چند ساعت وقتم گرفته میشد که بفهمم z-index -ی دو کلاس css مختلف را که ترتیب پشته را خراب میکرد جابجا کردهام.
اگر زمان بیشتری داشتید، چه تفاوتی در کارتان بود، یا چه چیزی اضافه میکردید؟
اگر زمان بیشتری داشتم، مطمئناً بیشتر روی backend تمرکز میکردم و عملکردهای پایهای و مرکزی کار وبسایت را بهکار میانداختم. مثلاً کاش میتوانستم زمان بیشتری بر ثبت ورود (login)، تقویم و بخشهای ویدئوکمِ (videocam) برنامه کاربردی صرف کنم. درکل ریسک بیشتری میکردم، مثل چارچوبهای مختلف frontend مثلاً AngularJS .
کدام دوره برای انجام این پروژه مفیدتر بود؟
دورههای HTML/CSS، JavaScript، دورههای مهارت jQuery به من پایه محکمی برای رشد دادند. دورههای مهارتهای توسعه وب مانند ساخت وبسایتهای تعاملی، به من دید مناسبی به وبسایتهای زیبا دادند. در کل این دورهها به من کمک کردند بتوانم یک وبسایت را از پایه بسازم.
در انجام پروژه کجا کمک گرفتید؟
برای این پروژه واقعاً قصد داشتم همهچیز را خودم اشکالیابی کنم زیرا میخواستم تا جایی که ممکن است خودم را به چالش بکشم. به غیر از Inspect Elem و خواندن اسناد Bootstrap کمک چندانی نگرفتم. قبل از پروژه وقتی به کمک برنامهنویسی احتیاج داشتم، همیشه به گروه فوقالعاده فیسبوکی با نام هَکاتون هکرها (Hackathon Hackers) رجوع میکردم؛ یک جمعیت فوقالعاده از توسعهدهندگان حامی هستند.
حال که از حمایت یک مهندس از Codecademy برخوردارید، امیدوارید چگونه پروژه را پیش ببرید؟
با حمایت مهندسی از «کدآکادمی»، امیدوارم که بخش backend اصلی، کارکردهای تقویم و برنامه زمانبندی وبسایتم را درست کنم. همچنین میخواهم UI/UX وبسایتم را بهتر کنم. در دو سال گذشته از پلتفرم کدآکادمی استفاده کردهام، برایم عجیب است که چطور دائماً میتوانند طراحی وبسایتشان را بهتر کنند. از آن مهمتر، میخواهم عادات برنامهریزی مناسبی را در خودم پرورش بدهم و از تجربیات یک مهندس کدآکادمی بیاموزم.
امید دارید کارکرد این پروژه در آینده چگونه باشد؟ کارکرد ایدئال آن چگونه خواهد بود؟
برنامهام این است که سیستم ایمیل مدرسهام را با وبسایت یکپارچه کنم تا ورود (Login) سریع شود. حتماً قصد دارم سه حساب کاربری متفاوت بسازم: دانشآموز، مدرس خصوصی، و مدیریت (معلمان). قصد دارم یک سیستم تقویم منعطفتر و ازلحاظ زیباییشناسی، شکیلتر بسازم و با ترکیب بهترین مؤلفههای Doodle و Google Calendar زمانبندیها بهتر شود.
بعد از توسعه کارکرد مرکزی، امیدوارم سیستمی ایجاد کنم که کاربران بتوانند اطلاعات پایهای خود را تایپ کنند تا بتوانند بهترین همتای خود را پیدا کنند. بهعلاوه قصد دارم یک سیستم جلسات ویدئویی نیز که در آن مدرسان خصوصی میتوانند به دانشآموزان خود تدریس کنند، در سیستم قرار بدهم. در آخر میخواهم برای کاربران تلفن همراه وبسایتم را کاربرپسند کنم.
بعدازاین چه میکنید؟
همینالان با passport.js بر کارکرد login کار میکنم. وقتیکه کارم با سیستم آن به پایان رسید، کارکرد مرکزی راهاندازی سیستم تقویم را به پایان میرسانم. شکی نیست سرعت آموزشم زیاد است. من واقعاً تجربه توسعه backend را نداشتهام، بنابراین امیدوارم که دوره SQL-ی کدآکادمی را بیاموزم و از آنجا پیشروی کنم.
به غیر از کار بر این پروژه، یک frontend برای یک شرکت نوپا با نام UScanTechnologies توسعه میدهم و فاز توسعهی یک شرکت نوپا (startup) را با نام DrumSense همراه با دیگر مؤسسان مدیریت میکنم، بهعلاوه WellesleyHacks را تأسیس کردم و هدایت میکنم؛ که یک هاکتون دهساعته برای دانشآموزان دبیرستانی است. هدف WellesleyHacks کمک به افراد در هر سطحی از ساخت کد سختافزاری، تلفن همراه، و وب است. بهعلاوه هاکتونهای مختلفی را در طول سال شرکت میکنم. در هفته آینده در اولین هاکتون خودم خارج از ایالاتمتحده شرکت میکنم (HackTheNorth) و واقعاً هیجانزدهام!