آموزش برنامه نویسی با سبک انیشتن

آموزش برنامه نویسی با سبک انیشتن

آموزش برنامه نویسی با سبک انیشتن

انیشتن یکی از نوابغ و یکی از بزرگترین دانشمندانیست که تاکنون زندگی کرده است. در سال ۱۹۰۵ او چهار مقاله علمی که پایه و اساس آن فیزیک مدرن، تغییر دیدگاه ها در فضا، زمان، جرم و انرژی بود، منتشر کرد. بعدها نامش با این چهار مقاله برقرار شد و در ادامه به خاطر توضیحش در مورد پدیده ی شناخته شده ای به عنوان اثر فوتوالکتریک برنده جایزه ی نوبل در سال ۱۹۲۱ شد.

ما می توانیم از زندگی انیشتن و روش های او، در کار و یادگیری الگو بگیریم. شاید ما نتوانیم مانند انیشتن، نابغه شویم، اما هنوز هم الگوهایی وجود دارد که ما می توانیم در زمینه های متعدد، خصوصا توسعه نرم افزار، مطالعه نماییم و آن ها را شبیه سازی کنیم.

موفقیت های بزرگ سرنخیست برای ما و نشان دهنده ی این است که چگونه می توانیم از هر کسی چیزی را یاد بگیریم.

افرادی مانند مایکل جردن یا آرنولد شوارتزنگر توسعه دهندگان نرم افزار نیستند، اما اعمال سنجیده شده و نگرش آن ها نشان دهنده ی برخی الگوهای تکراریست، که هم توسعه دهندگان نرم افزار و هم افراد عادی می توانند آن ها را پیاده سازی کنند.

افرادی که بهترین ها را انجام می دهند معمولا با عادات غیر معمول، مثل تمرکز بر کارهای درست و تمرین خلاقیت، خودشان را متمایز می کنند. آنها، نه تنها نسبت به هم سن و سال های خود، بلکه نسبت به غیر هم سن و سال های خود بیشتر و موثرتر کار می کنند و همچنین یادگیری را به عنوان روش زندگی در نظر می گیرند.

آنتونی رابینز می گوید :” مهمترین عامل موفقیت، عطش برای کسب آن و پایداری بر این عطش است.” بهترین برنامه نویسان دنیا هرگز عطششان فرو نمی نشیند. آنها تشنه پیشرفت، تشنه کمک به دیگران و تشنه بخشش اند.

به عقیده او عطش بسیار مهمتر از هوشمندی است، چرا که انسان های تشنه ی موفقیت، هرگز با شکست خوردن از حرکت نمی ایستند.

آموزش نحوه ی یادگیری

انیشتن می گوید: “جنون انجام همان کاریست که بارها و بارها انجام می دهیم و انتظار نتایج متفاوت را داریم.”

آموزش نحوه ی یادگیری

اگر شما می خواهید به نتایج متفاوتی دست یابید باید کارهایی متفاوت تر از آنچه که دیگران انجام می دهند انجام دهید. وقتی شما مانند دیگران یاد می گیرید، شما به طرف همان نتایجی که دیگران رسیدند حرکت می کنید. شما باید به عمق موضوع حرکت کنید و به گفته ی انیشتن چیزهای متفاوتی را فراگیرید.

شما باید واقعا به چیزی علاقمند باشید، تا آن را در سطح عمیقی بیاموزید، موضوعات را درک کنید و در آینده پاسخ های بسیاری برای همین سوال داشته باشید. علاوه بر این شما همچنین باید متفاوت تر از بسیاری از افراد بیاموزید.

اکثر دانش آموزان تنها برای امتحان مطالعه می کنند چون می خواهند نمره ی خوبی بدست بیاورند. آن ها بیش از آنچه که امتحان نهایی نیاز دارد، یاد نمی گیردند،چه برسد به اینکه زمان بیشتری برای مطالعه موضوعات بعد از امتحان نهایی صرف کنند.

به طور مشابه بسیاری از توسعه دهندگان نرم افزار برای حل یک مشکل، راغبند تا از گوگل استفاده کنند، درحالی که آن ها می توانند یک مشکل را با بیشترین سرعت حل کنند.

مشکل اصلی آن ها این است که می خواهند در مقابل مدیران خود به عنوان یک فرد سازنده ظاهر شوند. آن ها هیچ زمانی را برای درک یک مسأله در سطح عمیق تری، صرف نمی کنند.

یا اینکه کارآمدترین راه را برای حل مشکل بدست نمی آورند. آن ها به اندازه ای که سر و ته مسأله را ببندد راضی می شوند.

البته ممکن است، مواردی هم به وجود آیند که شما را تحت فشار قرار دهند و شما خیلی سریع آن مشکل را حل کنید. با این حال نباید اجازه دهید که چند مورد کوچک شما را از یادگیری مستمر منحرف کند.

حالا که ما می دانیم یادگیری چطور ما را به موفقیت می رساند، بیایید ببینیم که چطور ما می توانیم با آموختن بهتر، توسعه دهنده ی نرم افزار قابلی شویم.

۱- آموختن مبانی علوم کامپیوتر

با توجه به زندگینامه انیشتن، انیشتن ۱۵ ساله بود که به حساب دیفرانسیل و انتگرال مسلط بود، چون او ریاضیات را به عنوان راهی برای درک طبیعت در نظر گرفته بود. این مفاهیم اساسی بعد از مفید بودن آن ها در کار فیزیک، معلوم شد.

آموختن مبانی علوم کامپیوتر

اکثر مردم از یادگیری اصول اجتناب می کنند و می خواهند میوه ی کار خود را در کمترین زمان بچینند. برای مردم،رضایت بخش تر است که شما برنامه تان را برای دانلود در اینترنت قرار دهید و به آن ها بگویید که برنامه را دانلود کنند، تا اینکه برای آنها توضیح دهید که برنامه را چگونه ساخته اید، و بر اصول اولیه ی آن تمرکز کنید.

آموزش مبانی علوم کامپیوتر، ساختمان داده ها، الگوریتم ها و … را به صورت عالی بیاموزید. شما باید قابلیت اجرای بیشتر کارهای معمولی با استفاده از الگوریتم ها و ساختمان داده ها را بدون استفاده از کتاب داشته باشید.

وقتی در نهایت آن ها را در سطح عمیق درک کردید، باید توانایی حل مسائل دنیای واقعی در توسعه نرم افزار را از یک راه بصری که می تواند سریع تر و کارآمدتر باشد به دست بیاورید.

در توسعه نرم افزار تجربه ی فکری قبلی، نیاز به یک پایه محکم در اصول را دارد.

توروالدز توسعه دهنده ی لینوکس می گوید:”من در واقع ادعا می کنم، تفاوت بین یک برنامه نویس خوب و بد این است که کدهایش مهم است، یا ساختمان آن؟ برنامه نویس بد نگران کدهایش است اما برنامه نویس خوب نگران ساختمان داده و روابط آنها می باشد.”

شرکت های فن آوری بزرگ مانند مایکروسافت، گوکل، آمازون، توسعه دهندگان نرم افزار خود را با استفاده از به چالش کشیدن آن ها در مصاحبات فنی سخت، که عمدتا بر مبنای مفاهیم اساسی می چرخد، استخدام می کنند.

به عبارت دیگر مهم نیست چه نوع زبان برنامه نویسی استفاده می کنید، مهم این است که کد خود را تنها با الگوریتم ها و ساختمان داده ها به زیر سطح آن بیان کنید.

۲- یادگیری نه فقط با تماشای آموزش، بلکه با حل مسائل

یادگیری نه فقط با تماشای آموزش، بلکه با حل مسائل

انیشتن غالبا از کالج ها فراری بود. او دوست نداشت در کلاس ها شرکت کند. و متوجه چیزی جذاب تر و رضایت بخش تر شده بود. او زمان خود را برای تمرکز در حل مشکلات سختتر و بازی وسواس گونه با ایده ها و معادلات خود می گذراند.

کتاب ها و آموزش های بسیاری هستند که می توانند به شما برنامه نویسی را آموزش دهند. اما آن ها اغلب مفاهیم جدید را با عمق کمتری به شما معرفی می کنند. این در حالیست که حل مشکلات دنیای واقعی با استفاده از این مفاهیم است.

زیر این تصور غلط، که شما با تماشای سرعت یک توسعه دهنده ی وب اپلیکیشن چیزی را یاد می گیرید خط بکشید.

وانمود نکنید که چیزی که هنوز یاد نگرفته اید را درک می کنید.

انیشتن می گوید :” کسی که زیاد مطالعه می کند اما از اندیشه خود، کمتر استفاده می کند، گرفتار تنبلی فکر می شود. ”

در عوض شما باید به منظور یادگیری مفاهیم جدید در حل مسائل به طور فعال مشغول باشید. ممکن است مشکلات فنی پیدا کنید که می توانید با درکیات خود از اصول پایه و با مراجعه آنلاین از سایت هایی مثل LeetCode, Codility, HackerRank, CodeChef, CodeForces آن ها را تست کنید.

همچنین می توانید در پروژه های open source سایت GitHubبه منظور رفع مشکل، بهینه سازی ویژگی های موجود با پیاده سازی کارآمد، مشارکت کنید.

کار بر روی پروژه ی افراد دیگر می تواند به شما پیاده سازی دیدگاه های خود را آموزش دهد، و شما را برای بدست آوردن راه حل های جدید، به چالش بکشد.

اگر شما یک کار تمام وقت دارید یا حتی شما یک پیمانکار مستقل هستید، باید دائم به دنبال کارهای چالش برانگیز برای ارتقا سطح فعلی از تجربه ی خود باشید.

از درخواست مدیر پروژه ی خود نترسید و خودتان را به آن ها اختصاص دهید. به جای دور شدن از این فرصت ها، مشتاق باشید و احساس امتیاز گرفتن برای یادگیری انجام کاری که قبلا نمی دانستید را داشته باشید.

انیشتن می گوید:”رشد فکر، باید در هنگام تولد آغاز و تنها در هنگام مرگ پایان یابد.”

علاوه بر این، برای شروع یک پروژه، درنگ نکنید. لازم نیست که برای تصویب ساخت برنامه خود ۵ سال انتظار بکشید. شما می توانید همین حالا شروع به توسعه یک برنامه کوچک کنید و برنامه ریزی آن در مقیاس بیشتر به منظور یادگیری خود انجام دهید.

کدهای خودتان را در GitHub منتشر کنید و سعی کنید با دیگر برنامه نویسان از طریق ایمیل یا شبکه های اجتماعی تعامل برقرار کنید و از آن ها بخواهید در مورد برنامه تان نظر دهند.

۳- بهبود درکیات خود با نوشتن تست ها

بهبود درکیات خود با نوشتن تست ها

جاکوب عموی انیشتن، برادرزاده اش را برای اثبات فیثاغورث در سالهای اولیه به چالش کشید. انیشتن می گوید:” پس از تلاش های بسیار، من در اثبات این قضیه براساس شباهت مثلث موفق شدم.”

انیشتن بسیاری از کارهای سخت را درون خود ایجاد و از طریق اثبات، آن ها را درک می کرد. به عنوان نتیجه ی کلی اینکه: او تنها قادر به یادگیری چیزهای کلی نبود، اما او به اندازه ی کافی اعتماد به نفس داشت و سعی داشت چیزهای دیگر را در خود حل کند.

اثبات قضایا در نوشتن تست های برنامه نویسی، مشابه است. شما باید یکی از ویژگی های وب سایت که در آینده واقعا کارآمد است را، با مواردی تست و سپس انتظار داشته باشید، یک قابلیت خاص انجام شود و یا اینکه یک خروجی را به وسیله ی یک open source تولید کنید.

تست کردن، یک روش جایگزین برای یادگیری چیزهای جدید است، که زمان و تلاش بیشتری نسبت به تماشای یک آموزش می برد.

برخی از توسعه دهندگان جدید می ترسند که وارد عرصه ی آزمایش شوند. اما آن نشان دهنده ی یکی از موثرترین روش ها، برای درک روند اجرا و ویژگی های یک قطعه نرم افزار است. این می تواند به ویژه برای افرادی که در یک پروژه ی جدید هستند و می خواهند به یادگیری ساختار و نحوه کار کردن آن بپردازند مفید باشد.

اگر شما می خواهید نحوه ی کار با فریم ورک open source را یاد بگیرید، می توانید درک خود را با نوشتن تست هایی بهبود بخشید. با این روش شما یاد نمی گیرید که این فریم ورک بهتر است، اما تست های شما می تواند در پروژهای بهتر مشارکت داده شود.

در مواردی که شما در حال کار کردن بر روی پروژه های بزرگ هستید و چیزهایی برای شما مبهم است، می توانید اجرای جریان را به اجزای مختلف بشکنید، و تست های مختلف برای هر کدام از آن ها بنویسید. نوشتن تست ها تنها به درک شما کمک نمی کند، آن به شما این امکان را می دهد تا باگ های خود را بیابید و به عنوان یک نتیجه خوب به پروژه تان کمک می کند.

۴- تمرکز عمیق

تمرکز عمیق

ما در عصری که انحرافات، بسیار زیاد است زندگی می کنیم. از لحظه ای که صبح از خواب بیدار می شویم، کششی ما را به سمت تلفن همراه می کشد و ما پیام ها و ایمیل هایمان را چک می کنیم.

بدیهی است که انیشتن تلفن همراه نداشت، اما او هم چیزهای را داشت که حواسش را پرت کند. البته راه هایی برای مقابله با آن ها هم داشت که ما می توانیم فراگیریم.

پسر او می گوید:”حتی بلند ترین گریه نوزاد هم نمی توانست افکار پدر را به هم بزند”

و اضافه می کند که: “او می توانست کار خود را به طور کامل انجام دهد و هیچ صدایی روی او نفوذ نمی کرد.”

توانایی های او همراه با تمرکز عمیق و کار برای مدت زمان طولانی و بدون وقفه، به او برای دستیابی به پیشرفت های تاریخی کمک کرد.

“من قادرم تا کار یک روز کامل را در دو یا سه ساعت انجام دهم. بخش باقیمانده روز من بر روی ایده های خود کار می کنم. انیشتن مدیریت زمان خود را در کار فکریش در اداره ثبت اختراع برن که به او زمان با تمرکز بر درگیری بیشتر بر روی چالش ها را می داد صرف کرد.”

توسعه دهندگان نرم افزار می توانند از انیشتن بیاموزند و چیزهایی که حواسشان را پرت می کند را مسدود کنند. وانمود نکنید که بعد از کار بی شمار تنها با چک کردن پیام فیسبوک تان قادر به تمرکز با همان سطح و همان شدت هستید.

تیم Ferriss، نویسنده کتاب پرفروش می نویسد”آماده سازی تنها، یک قدرت فوق العاده است.”

او می افزاید:” در یک اقتصاد دیجیتال که در آن حواس پرتی یک ارز است، اگر شما می توانید بر روی یک چیز ۳ تا ۵ ساعت در یک زمان تمرکز و از تمام حواس پرتی جلوگیری کنید، شما قادر به انجام کاری عمیق و اتصال نقطه ای بی ارتباط هستید.”

سعی کنید یک توافق با مدیر خود برای تعیین بخش خاصی از روز برای برقراری ارتباط ایجاد کنید و در بخش های باارزش دیگر سرمایه گذاری کنید و سعی کنید تا برای شناختن، یادگیری مفاهیم، و یا فن آوری جدید و نوشتن کد مصر باشید.

هنگامی که ما قادریم تا خودمان را دور از این وقفه ها قرار دهیم و خوب بر مهارت زمان مدیریت کنیم، شانس ما برای غوطه ور شدن عمیق در یادگیری را افزایش می دهیم و به عنوان نتیجه، ما تبدیل به یک سازنده می شویم.

۵- کنجکاو باشید و عاشق یادگیری

کنجکاو باشید و عاشق یادگیری

توسعه ی نرم افزار در زمان ما، یکی از مهمترین و پرتقاضاترین حرفه هایست که مدام فرصت های شغلی جدید برای جذب جوانان و افرادی که در حال حاضر در این رشته مشغول هستند را دارد.

آن ها می دانند که شما می توانید یک حقوق و دستمزد واقعا خوب را به عنوان یک توسعه دهنده ی نرم افزار دریافت کنید، و در نتیجه آن ها با جاه طلبی بزرگ وارد این حرفه می شوند.

اگر شما به یک کار در توسعه نرم افزار دست یابید، و عاشق یادگیری و برنامه نویسی باشید، تبدیل به یک آدم بزرگ می شوید. این تنها یکی از چند حرفه ایست که شما می توانید در آن چیزهای جدیدی را فراگیرید.

این ها تنها مفاهیمی نیست که شما باید بدانید. شما باید خودتان را با آخرین فن آوری های برنامه نویسی، منطبق و همگام کنید. شما باید برای انطباق با تغییرات در بازار، هر چیز جدیدی که در حال حاضر به عنوان ارزش مطرح است را فراگیرید.

شما باید مدام و به صورت زیاد مغزتان را درگیر یادگیری کنید و باید کنجکاو و فروتن باشید.

اغلب برنامه نویسان، کارمندانی را براساس دانش خودشان استخدام کرده و تصور می کنند که نیازی نیست که آن ها چیزی را بیاموزند. در این صورت شما فقط می توانید به عنوان یک توسعه دهنده ی نرم افزار وارد شوید.

اگر شما کنجکاو و دوست دار یادگیری هستید، به عنوان یک نیاز هیچ وقت متوقف نشوید.

در نوامبر ۱۹۱۵ انیشتن بعد از نوشتن ۲ صفحه نامه به پسرش ، او را به تلاش برای یادگیری فراخواند و گفت:” وقتی در حال انجام کاری هستی با چنین لذتی آن کار را انجام بده که متوجه گذشت زمان نشوی”

باید در مورد نحوه ی کارکرد یک فریم ورک و ساختار آن کنجکاو شوید. وقتی شما چیزی را یاد می گیرید، تصویر روشنی از مکانیسم و ویژگی های آن بدست می آورید.

به سادگی قبول نکنید که ریل های فریم ورک بزرگ برای سرعت بخشید به توسعه ی برنامه های کاربردی وب است. بیاموزید که چطور ریل ها پشت صحنه عمل می نمایند.

توجه داشته باشید که بیش از حد نگران پول نباشید، البته همه ی ما برای پرداخت صورت حساب یا مسائل خانواده به پول احتیاج داریم، اما اگر شما می خواهید در توسعه نرم افزار بدرخشید شما باید شور و شوق یادگیریتان را پرورش دهید و آن را توسعه بخشید. شما باید عاشق برنامه نویسی باشید و خوشحال از اینکه که با نوشتن چند خط کد می توانید فرصتی برای ایجاد تاثیر مثبت در زندگی میلیون ها نفر بگذارید.

انیشتن معتقد بود که عشق یک معلم، بهتر از احساس وظیفه ی آن است.

آنچه ما می توانیم به عنوان یک توسعه دهنده ی نرم افزار از این سخن بیاموزیم، این است که مهم نیست ما حقوق و دستمزد خوبی بگیریم، ازآنجاییکه ما عاشق یادگیری و کارمان هستیم، یک کنجکاوی ذاتی ما را به طرفی حرکت می دهد که حتی تعطیلات آخر هفته هم ما درگیر آن هستیم.

همیشه به یاد داشته باشید : برنامه نویسی دوره ای از یادگیری در زندگیست.

برنامه نویسی دوره ای از یادگیری در زندگیست

گذشته از روش های آموزش انیشتن، او یکی از چهره های بانفوذ در علم فیزیک است. کار او کمک کردن به حوزه های علمی گوناگون از تولید انرژی هسته ای گرفته تا هماهنگ سازی ماهواره های GPS …

شاید نبوغ و دستاوردهایش خارج از دسترس ما باشد، اما اخلاق کاری، فروتنی و کنجکاوی و سرسختی او ارزش تقلید توسط هر کسی را دارد.

اگر می خواهید به موفقیت دست یابید می توانید زمان خودتان را با تکرار رفتار افراد موفق ذخیره کنید. گرچه انیشتن یک برنامه نویس نبود اما زندگی او به ما برخی از الگوهای الهام بخش را می آموزد که ما می توانیم در زمینه ی توسعه نرم افزار از آن ها تقلید کنیم.

انیشتن می تواند مشوقی برای تمرکز بر روی یادگیری اصول آموزش با حل مسائل و نوشتن تست برای پروژه های مختلف، تمرکز عمیق و مهمتر از همه عشق به یادگیری باشد.

اگر ما می خواهیم در حرفه مان موفق شویم، پس باید تبدیل به فرد پرشوری در مورد یادگیری و تشخیص آن به عنوان بخش مهمی از زندگی مان شویم.

دانلود مقاله

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *