اين روزها افراد زيادي به دنبال يادگيري كدنويسي هستند اما هيچ ايدهاي در مورد هدف خود ندارند. قطعا اگر برنامهنويسها از هدف خود آگاه باشند به خوبي ميتوانند از اين راه به درآمد برسند، اما تعداد زيادي از افراد بدون داشتن هيچ ذهنيتي اين كار را شروع ميكنند.
در طي چند سال گذشته يك شعار گمراهكننده به شدت رواج پيدا كرده است: هر شخصي ميتواند كدنويسي را ياد بگيرد بنابراين همه بايد يك زبان برنامهنويسي محبوب را ياد بگيرند. تازهواردها فكر ميكنند با گذراندن چند ماه وقت در Codecademy و FreeCodeCamp ميتوانند تبديل به يك كدنويس ماهر شوند.
اما اين حقيقت ندارد. در واقع بسياري از افرادي كه به دنبال برنامهنويسي ميروند از انتخاب آن پشيمان ميشوند، دليل اصلي اين پشيماني اين است كه برنامهنويسي طبق انتظار و ذهنيت آنها نيست و خيلي سريع گيج ميشوند. براي اجتناب از قرار گرفتن در اين موقعيتها در ابتدا بايد چند سؤال را از خود بپرسيد و با خود صادق باشيد.
هستهي اصلي برنامهنويسي فرآيند حل مسأله است. اين فرآيند ابعاد زيادي دارد اما عامل اصلي موفقيت هر برنامهنويس، انگيزه و محرك ذاتي و دروني او براي خلق مسئله و برطرف كردن خطا است.
ميگويند يك برنامهنويس معمولا ۱۰ درصد از زمان خود را صرف نوشتن باگ و ۹۰ درصد را صرف اشكالزدايي و برطرف كردن باگها ميكند و هر شخصي كه كدنويسي را به شكل جدي تجربه كرده باشد ميتواند با اين ذهنيت ارتباط برقرار كند. پس برنامهنويسي در واقع هنر اشكالزدايي است.
هر كسي ميتواند دستورالعملهاي يك زبان برنامهنويسي را ياد بگيرد و با جزئيات دقيق محيط توسعهي يكپارچه (IDE) آشنا شود. هر شخصي ميتواند به ايدهي يك اپليكيشن جديد فكر كند؛ اما در مواجهه با خطا چه واكنشي نشان ميدهد؟ در اين مرحله به يك شخصيت خاص و ويژه نياز است.
برنامهنويس موفق كسي است كه بتواند در مواجهه با يك خطاي عجيب كامپايلر، يك كتابخانهي كد پر از اشكال، يا يك ويژگي زباني گيجكننده به دنبال پاسخ باشد. برنامهنويس موفق كسي است كه ساعتها وقت خود را صرف پيدا كردن يك راهحل كند و تا زماني كه راهحل موردنظر را پيدا نكرده نااميد نشود.
ميتوان از يك زاويهي ديگر هم به برنامهنويسي نگاه كرد: انگيزههاي بيروني در مقابل انگيزههاي دروني. آيا به خاطر پاداش به دنبال برنامهنويسي هستيد؟ يا به خاطر علاقه اين كار را انجام ميدهيد؟ اگر علاقهاي به برنامهنويسي نداشته باشيد مسير درستي را انتخاب نكردهايد.
آيا به دنبال خلق كردن هستيد؟
اغلب تازهكارهاي برنامهنويسي همان سال اول اين كار را رها ميكنند. با اينكه دلايل زيادي براي تسليم شدن وجود دارد اما شايد مهمترين دليل گيج شدن در منحني يادگيري و تضعيف روحيه باشد.
برنامهنويسي يك رشتهي گسترده با صدها زبان و حوزهي قابل بررسي است. در هر زمينهاي با هزاران كتابخانه و فريمورك مختلف روبهرو ميشويد و به الگوهاي سطح بالايي ميرسيد كه در موقعيتهاي مختلف قابل پيادهسازي هستند.
به طور خلاصه، هرگز نميتوانيد برنامهنويسي را به صورت كامل ياد بگيريد بنابراين بايد هدف دقيق خود را مشخص كنيد. شايد يك برنامهنويسي گرافيك سهبعدي در ساخت وبسايت هيچ تجربهاي نداشته باشد يا بهترين كدنويس هوش مصنوعي هيچ ذهنيتي در مورد ساخت اپليكيشنهاي موبايل نداشته باشد.
قبل از شروع به يادگيري كدنويسي، در مورد هدف خود به صورت دقيق فكر كنيد. اگر به دنبال ساخت وبسايت هستيد، انرژي خود را متمركز بر يادگيري جاوا اسكريپت كنيد. اگر ميخواهيد اپليكيشنهاي OS X بسازيد، بهتر است سوئيفت را ياد بگيريد. اگر ميخواهيد بازيسازي كنيد #C و يونيتي را بياموزيد.
شايد يك مجموعه مفاهيم كه براي يك شخص مهم تلقي ميشوند براي شخص ديگر بياهميت باشند. براي مثال معماري MVC براي برنامهنويسي وب ضروري است درحاليكه الگوي مؤلفه، موجوديت براي توسعهدهندگان بازي مفيد است.
نكتهي اصلي اين است كه هدف نهايي شما (وبسايت، بازي يا موارد ديگر)، مسير يادگيري را مشخص ميكند بنابراين لازم است از ابتدا با اين مسير آشنا شويد. مطمئنا هميشه ميتوانيد مسير خود را تغيير دهيد و در زمينههاي ديگر به كسب تجربه بپردازيد، اما وقتي هدف واحدي داشته باشيد برنامهنويسي و كدنويسي آسانتر خواهد شد.
سرگرمي يا شغل؟
آيا ميخواهيد پروژههاي كدنويسي را صرفا براي پر كردن وقت آزاد خود انجام دهيد يا قصد داريد براي كار تمام وقت وارد صنعت برنامهنويسي شويد. پاسخ به اين سؤال تأثير زيادي بر موضوع مطالعه، روش مطالعه يا مسير كلي پيشرفت شما خواهد داشت.
شايد هدف شما ساخت يك بازي ويدئويي باشد. شغل خود به عنوان يك حسابدار را دوست داريد و قصد ترك آن را نداريد و ميخواهيد در روزهاي آخر هفته روي يك پروژهي برنامهنويسي هم كار كنيد. در اين صورت ميتوانيد هر زبان يا موتور مورد علاقهي خود را ياد بگيرد. تا وقتي كه هدف شما صرفا سرگرمي باشد چه تفاوتي خواهد داشت؟
-----------------------------------------------------------------------
تبليغات ميان متني
براي خريد محصولات تخصصي نياز داريد كه از يك مرجع كاملا متخصص مشاوره بگيريد. هموطنان ايراني مي توانند انواع جك برقي و قيمت جك برقي را در سايت قائم الكترونيك دنبال كنند. / انواع دوربين مداربسته و نماترموود و تجهيزات شبكه را نيز ديگر محصولات شركت قائم است.
همچنين مي توانيد كركره برقي و قيمت كركره برقي را در وبسايت قائم الكترونيك و از كارشناسان اين شركت استعلام كنيد. ما 24 ساعت شبانه روز آماده خدمت به شما عزيزان هستيم.
تبليغات ميان متني
از سوي ديگر اگر ميخواهيد به عنوان يك شغل به توسعهي بازيهاي ويدئويي بپردازيد بايد به طور جدي به يادگيري يك زبان يا موتور مثل C++، Unreal Engine 4 يا جاوا و LibGDX بپردازيد. اگر هم به دنبال توسعهي بازي با استفاده از Ruby و Gosu هستيد نميتوانيد به صورت جدي بازيسازي را دنبال كنيد.
مدرك دانشگاهي ميتواند به كمك شما بيايد اما وجود آن ضروري نيست. اينترنت به عنوان منبع خودآموزهاي عالي، كتابهاي رايگان برنامهنويسي و دورههاي رايگان است و دانشگاه به عنوان محلي براي برقراري ارتباط با افراد متخصص و ورود به بازار كار ميتواند مفيد باشد. پس صرفنظر از اينكه برنامهنويسي را به عنوان يك شغل يا سرگرمي انتخاب ميكنيد، بايد زمان زيادي را صرف تمرين كنيد.
تا چه اندازه به دنبال آن هستيد؟
برنامهنويسي كار دشواري است. صرفا يادگيري كدنويسي (به اين دليل كه از هر فرآيند ديگري دشوارتر است) يا اشكالزدايي (به اين دليل كه اغلب خطاها تقريبا مستقيم هستند) كار سختي نيست، بلكه كل فرآيند برنامهنويسي نياز به اراده و استقامت بالايي دارد.
هر پروژهي كدنويسي تركيبي از برنامهنويسي و اشكالزدايي است؛ دو فرآيندي كه از نظر ذهني به انرژي زيادي نياز دارند. هر پروژه، ماراتوني از حل مسئله است و با پيچيدهتر شدن مسائل خم شدن زير بار آنها سادهتر خواهد شد. حتي اگر بگويند يادگيري برنامهنويسي زياد هم سخت نيست، براي رسيدن به قله به اطلاعات زيادي نياز خواهيد داشت. برنامهنويسي مثل يك تردميل بيپايان از مفاهيم، الگوها، زبانها و ابزار جديد است. بسيار سرگرمكننده و جذاب و درعينحال بسيار هم خستهكننده است.
اما سختترين بخش كار، اين است كه هميشه احساس ميكنيد بهاندازهي كافي خوب عمل نميكنيد. حتي پس از هزاران ساعت تجربه و تمرين هنوز هم ممكن است احساس كنيد چيزي نميدانيد. مربيان و همكارها ميتوانند در شرايط سخت، به شما كمك كنند اما نياز به ارادهي آهنين داريد.
به همين دليل پشتكار، ويژگي اصلي بهترين برنامهنويسها است. صرفنظر از استرس بالاي برنامهنويسي بايد سعي كنيد در مسير خود مصمم باشيد. براي يادگيري هر زبان جديد يا روبهرو شدن با خطاها يا اشكالهاي متعدد و هر پروژهاي كه سختيهاي منحصربفردي داشته باشد، بايد عزم خود را جزم كنيد.
بدون پشتكار، كارتان تمام است و متأسفانه اغلب اوقات اين اتفاق براي برنامهنويسها رخ ميدهد. به عنوان يك خبر خوب، اين نااميدي هميشگي نيست. حتي اگر مشكلاتي سر راهتان قرار گرفت، بدانيد كه هميشه راهي براي غلبه بر آنها وجود دارد.
بسته به پاسخهايي كه به اين سؤالها داديد ميتوانيد تشخيص دهيد برنامهنويسي برايتان مناسب است يا دقيقا خلاف انتظارات و ذهنيت شماست. معمولا اغلب افراد براي برنامهنويسي ساخته نشدهاند. اگر به اين نتيجه رسيديد كه براي اين كار ساخته نشديد ميتوانيد آن دسته از مشاغل فناوري را انتخاب كنيد كه نيازي به كد نويسي ندارند.
تبليغات درون متني/
اگر تمايل داريد براي شركت خود اقدام به طراحي سايت كنيد پيشنهاد مي كنم ابتدا مقالات مربوط به تفاوت طراحي سايت شركتي و طراحي سايت فروشگاهي را مطالعه كنيد. من به شما پيشنهاد مي كنم خدمات طراحي سايت پيام آوا را براي اين كار نگاه كنيد. شركت پيام آوا بهترين و با كيفيت ترين خدمات طراحي سايت را در قالب طراحي سايت ارزان و مقرون به صرفه به شما ارائه مي كند.
تبليغات درون متني
در ادامه به سوالات شركتها از مهندسين كامپيوتر مي پردازيم. اين بخش براي كساني است كه كد نويسي را شروع كرده اند و در ميانه راه قرار دارند ومي خواهند وارد بازار كار شوند.
اكثر مصاحبه هاي كاري حوزه مهندسي نرم افزار، روي مهارت هاي فني و تخصصي شما (مثل ميزان تسلط به زبان هاي برنامه نويسي) تمركز دارند. اما مصاحبه كننده ها به مهارت هاي ديگري مانند ميزان دقت شما به جزييات، قدرت حل مسئله و مهارت هاي سازماني شما نيز توجه خواهند كرد.
اگر به تازگي وارد اين حوزه شده ايد و مي خواهيد در يك شركت استخدام شويد، توصيه مي كنيم اين 10 سوالي كه از شما خواهند پرسيد را با دقت مطالعه نماييد.
1. چرا مي خواهيد يك مهندس نرم افزار شويد؟
اين يكي از سوالات رايجي است كه در مصاحبه هاي كاري پرسيده مي شود. شما به عنوان يك شخص علاقه مند و عاشق مهندسي نرم افزار، بايد تأكيدتان بر روي شوق و اشتياق تان به توسعه نرم افزار و كار با سيستم هاي كامپيوتري باشد.
حتماً به علاقه ي خودتان به برنامه نويسي و كد نويسي را نشان دهيد و اگر يك پروژه كوچك شخصي (مثلاً يك وبسايت) در دست ساخت داريد و مشغول كار و تمرين بر روي آن هستيد، حتماً به آن اشاره كنيد.
2. نقطه ضعف شما چيست؟
مصاحبه كننده اين سوال را مي پرسد تا زير و بم توانايي هاي شما را بشناسد.
آيا واقعاً شما پتانسيل لازم براي مهندسي نرم افزار را داريد؟ آيا واقعاً آن چيزهايي كه براي اين شغل لازم است را در وجود خود داريد؟ براي اثبات ارزش خود ، صادق و راستگو باشيد.
زماني كه نوبت اين سوال رسيد، خيلي هوشمندانه مسئله را به شكل مثبتي بيان كنيد. مثلاً به نقاط ضعفي كه قابل جبران هستند اشاره كنيد و بگوييد كه در حال رفع اين نقاط ضعف هستيد.
مثلاً ممكن است سرتان كه شلوغ شود و كارهاي متنوع زيادي به شما سپرده شود، نتوانيد آن ها را مديريت كنيد و گاهي بخشي از آن ها را فراموش كنيد. مي توانيد بگوييد كه مدتي است همه كارهاي خود را در نرم افزارهاي برنامه ريزي (مانند Trello) ثبت مي كنيد و در حال رفع اين نقطه ضعف خود هستيد.
3. آيا مي توانيد فرآيند توسعه نرم افزار را توضيح دهيد؟
در طول مصاحبه كاري خود، شما با سوالات تخصصي زيادي مواجه خواهيد شد. يكي از سوالات محتمل، همين فرآيند توسعه و ساخت نرم افزار است.
تمامي استرس ها و اضطراب هايي كه براي رفتن به مصاحبه كاري را داريد، پشت در مصاحبه جا بگذاريد، يك نفس عميق بكشيد و جوابي كه از قبل براي اين سوال آماده كرده ايد را خيلي رسا و واضح بيان كنيد.
با اعتماد بنفس خود و بيان جزييات كار (اگر در مصاحبه وقت كافي به شما داده شود) به آن ها نشان دهيد كه با چرخه توليد و توسعه نرم افزار به خوبي آشنا هستيد.
4. به كدام زبان برنامه نويسي _براي استفاده در كار_ علاقه بيشتري داريد؟
ترفند خوب براي جواب دادن به اين سوال، ليست كردن زبان هاي برنامه نويسي است كه نسبت به آن شناخت داريد؛ اما مراقب باشيد كه نگوييد كه دوست داريد با همه اين زبان هاي برنامه نويسي كار كنيد!
زماني كه نوبت كد نويسي مي شود، هر مهندس كامپيوتري ترجيح مي دهد كه با يك يا مجموعه مشخصي از نرم افزار ها كار كند. پس آن زبان هايي كه كار با آن ها را بيشتر دوست داريد را به مصاحبه كننده بگوييد و تخصص و ميزان تسلط تان را به او نشان بدهيد.
يك كار خوبي كه مي توانيد قبل از مصاحبه انجام دهيد، اين است كه درباره آن شركت تحقيق كنيد و ببينيد كه آن ها با چه زبان هايي، كد نويسي مي كنند.
اگر جواب شما با زير ساخت هاي آن ها يكي باشد، شانس استخدام تان خيلي زيادتر از ديگران خواهد بود.
5. در گذشته بر روي چه پروژه هايي كار كرده ايد؟
اين سوال دانش، قدرت تفكر شما در شرايط بحراني و مهارت حل مسئله شما را تست خواهد كرد.فارغ از اين كه يك پروژه شخصي يا يك پروژه تيمي را براي آن ها شرح مي دهيد، بايد به تجربياتي كه در طول ساخت اين پروژه ها به دست آورده ايد و مهارت هايي كه كسب كرده ايد، اشاره كنيد.
خيلي مهم است كه دانشي كه در اين پروژه به دست آورده ايد و رشدي كه داشته ايد را خيلي شفاف و دقيق براي كارفرما بيان كنيد.
6. در پروژه هاي قبلي خود با چه چالش هايي مواجه شده ايد؟
جواب اين سوال بايد كاملاً صادقانه باشد. در واقع كارفرما و مصاحبه كننده مي خواهند ميزان تجربه و شناخت شما نسبت به چالش ها و موانع موجود در مسير توسعه نرم افزار و وبسايت را بفهمند.
اگر با چالش هايي در طول پروژه مواجه بوديد و بر آن ها غلبه كرده ايد، حتماً آن ها را طوري بيان كنيد كه مهارت حل مسئله و توانايي مديريت و رهبري شما را نشان دهد.
بگوييد كه چگونه از بازخورد كاربران نهايي سايت يا نرم افزار، چگونه مشكل را تشخيص داده و آن را حل كرده ايد و چگونه از اين اشتباهات درس گرفته ايد و در پروژه هاي بعدي نيز از اين تجربيات فني استفاده كرده ايد.
7. در هنگام بازبيني كدهاي برنامه نويسي، چه چيزي را جستجو مي كنيد؟
زماني كه قرار است ميزان دقت شما به جزييات و مسئوليات كلي شما به عنوان يك مهندس كامپيوتر سنجيده شود، مصاحبه كننده سوالاتي مشابه سوال 7 از شما خواهد پرسيد.
شما نيز براي نمايش سطح دقت و مهارت خود بايد مختصر و كوتاه و ساخت يافته به اين سوال پاسخ دهيد. اما به صورت تيتر وار جواب ندهيد. هر نكته اي كه بيان مي كنيد يك دليل كوتاه هم برايش بيان كنيد.
مثلاً مي توانيد بگوييد: «من به عملكرد ،خوانايي و تميز يا كثيف بودن كدهاي نوشته شده دقت مي كنم. مي بينم كه نقاط ضعف كدهاي زده شده چيست؟ چه چيزهايي را بايد حذف كنم، چه بخش هايي را بايد بازنويسي كنم و چه چيزهايي را بايد به اين كدها اضافه كنم؟»
8. آيا در اوقات فراغت خود بر روي پروژه اي كار مي كنيد؟ آن ها چه پروژهايي هستند؟
مهندس كامپيوتري كه در خانه هم كد مي زند و در حال طراحي سايت يا توسعه نرم افزار است، به ساير كانديداهاي استخدامي ارجحيت دارد. در واقع اين نكته، عشق و علاقه شما به اين كار و حرفه را نشان مي دهد.
درباره كارهايي كه در خانه انجام مي دهيد، صحبت كنيد؛ اگر پروژه انجام مي دهيد بگوييد كه چه تجربه اي در اين پروژه كسب كرديد و اگر هم در خانه مشغول يادگيري زبان برنامه نويسي جديدي هستيد، بگوييد كه اين زبان جديد چه مزايايي براي استفاده در پروژه هاي كاري خواهد داشت.
9. چرا شركت ما را انتخاب كرده ايد؟
اين هم يكي ديگر از سوالات معروف مصاحبه هاي كاري است؛ اما با اين حال بايد خيلي با دقت به اين سوال پاسخ دهيد. مدير عامل شركت مي خواهد بداند كه چه كسي از متقاضيان استخدام مي خواهد واقعاً در شركت او كار كند.
اصلاً در جواب اين سوال انگيزه هاي مالي و درآمدي را مطرح نكنيد. به جاي آن مي توانيد به انگيزه هايي مانند گسترش مهارت و توانايي هاي خود در اين صنعت اشاره كنيد.
10. آيا مي توانيد اين مسئله برنامه نويسي را حل كنيد؟
شايد ترسناك ترين و دلهره آورترين سوالي كه با آن موجه شويد، همين سوال باشد. در برخي مصاحبه هاي كاري به شما تكاليفي را واگذار مي كنند تا هم مهارت حل مسئله شما و هم توانايي كنترل ذهن و كار در فشار و استرس را در شما بسنجند. البته فراموش نكنيد كه قبل از هر چيز بايد مهارت فني داشته باشيد و بتوانيد كد بزنيد!
كلام آخر
تمرين اين سوال و جواب ها به شما كمك مي كند تا اعتماد خود را بالا ببريد و همين طور با شبيه سازي جلسه مصاحبه، استرس تان كمتر شده و با آرامش بيشتري در جلسه مصاحبه حاضر شويد. تمامي اين موارد شما را يك سر و گردن بالاتر از ساير رقباي تان قرار مي دهد و شانس استخدام تان به شدت بالا خواهد رفت.
پس حتماً اين سوالات را با صداي بلند و رسا تمرين كنيد، تا ملكه ي ذهن شما شوند و در شرايطي كه استرس داريد و تمركزتان به شدت كاهش مي يابد، آن ها را به خوبي به ياد و به زبان بياوريد.
سخن پاياني
بازاريابي و تبليغات به ركن اساسي جامعه امروز ما تبديل شده است. سئو و بهينه سازي سايت براي موتورهاي جست و جو و همچنين تبليغات گوگل ادوردز از جمله مهمترين روش ها براي بيشتر ديده شدن سايت شما به حساب مي آيد. شركت پيام آوا خدمات طراحي سايت تهران و سئو را با مناسب ترين قيمت به شما ارائه مي دهد.