نکات مصاحبه فنی برای IT کارها

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

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

این پست دامون رو هم ببینید

Eureka, Eureka! یافتم، یافتم

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

اینجا با یک تیمی از آدمهای متوسط یک خروجی هایی تولید می شه، کامل نیست، خیلی هم نقص داره، خیلی هم بد طراحی شده، ولی کار می کنه! چطور چنین چیزی ممکنه؟ پروسه اینو تضمین می کنه که خروجی همون خروجی مورد انتظار باشه. الان مثال از پروسه تولید نرم افزار خودمون می زنم شیر فهم شوید:

برنامه نویس که کار رو انجام میده، باید مشخص هم بکنه که چطوری باید Unit تست بشه، Test Case ها رو می نویسه، خودش بر اساس اونها تست می کنه، یک برنامه نویس دیگه هم باید این تست ها رو Review کنه، اینجا شاید نظر بده که این Test Case ها کفایت نمی کنه، یک سری Test case های دیگه هم اضافه کنند. بعدش باید System Test بشه، یعنی یک جایی مثل Production درست می شه و تغییرات اعمال می شه و تست انجام می شه. بعد Business Owner و IT Owner و Change Manager باید تایید کنند که چنین تغییری رو می خواهند در سیستم اعمال کنند بعدش توی یک محیط جداگانه ای اعمال می شه برای User Acceptance Test یا UAT (یو ای تی) کاربر نهایی اینجا تست می کنه، تایید که کرد اعمال می شه توی Staging دوباره تست می شه که مشکلی نداشته باشید، میره برای Production. سیستم های Staging و Production دست DBA هاست و تیم تولید دسترسی برای تغییر آن را ندارد.

قرار بود یک Job در SQL Agent زمان شروعش از 7:45 به 7 تبدیل شه. همه این مراحل براش طی شد، درسته اعصاب من نمی کشید، امروز توی این محیط اعمال کنم، فردا بیام ببینم توی ساعت 7 اجرا شده، بعد تو محیط بعدی، دوباره فرداش بیا ببین حله، بعدیها رو بده DBA ها به همین ترتیب انجام بدهند! آخرش هم که انجام شد همه به هم تبریک میگن! انگار شق القمر شده!

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

من اعصاب ندارم می بینم Table هاشون Primary Key نداره، ولی کار درست رو اینا می کنند. اینطور نیست؟

مانور ذوالفقار 3 با رمز یا علی

دیروز قرار بود توی شرکت پروسه BCP بصورت آزمایشی اجرا شود. BCP یعنی Business Continuity Planning . شرکت خودش را برای روزی آماده می کند که یک مشکل داخلی مثل حمله هکرها یا ویروس، یک مشکل منطقه ای مثل زلزله و یا حملات تروریستی (مثل حملات یازده سپتامبر) یک مشکل ملی مثل بیماری فراگیر (بعنوان مثال سارس)  بروز کند. شرکت باید قادر باشد سیستم های خود را در همه سطوح بازیابی کرده و به سرویس خود ادامه دهد.

قضیه BCP خیلی گسترده تر از گرفتن پشتیبان از دیتابیس ها و نگهداری آن در یک ساختمان یا شهر دیگر است. در شرکت برای هر کدام از سرورهای موجود یک سرور پشتیبان برای BCP در شهر دیگر (ملبورن) در نظر گرفته شده است و در بازه های زمانی مشخص بروز می شوند. مهمتر از همه زندگی کارمندان هست. یک رویه مشخصی تعریف شده که یک نفر شروع می کند به تماس گرفتن با یکی دو نفر دیگر و از زنده بودن آنها اطلاع حاصل می کند و اطلاع می دهد که BCP شروع شده است، آنها هم باید باید با چند نفر دیگر تماس گرفته و پروسه را دنبال کنند و الی آخر. در نهایت هم مشخص می شود کی زنده است کی مرده، و هم همه خبر دار می شوند که پروسه BCP شروع شده و هر کسی باید وظیفه خودش را انجام دهد تا همه چیز بطور کامل Recover شود و شرکت همانند زمان قبل از اتفاق به حیات خود ادامه دهد.

من با این مانور واقعاً موافقم. چون یک ضرب المثل چینی هست که میگه بک آپی که تا حالا Restore نشده روش حساب نکن، چون فرقی با وجود نداشتنش نمی کنه. با مانور ذوالفقار 3 واقعاً بیشتر مشکلاتی که ممکنه در روز واقعه داشته باشید تجربه می شود. فکرش را بکنید شرکتی که دفتر مرکزی آن در برج های دوقلو قرار داشتند به فرض اگر همه کارمندانش هم زنده مانده باشد باید برود غاز بچراند؟ یا واقعاً می تواند پس از یکی دو روز خودش را پیدا کند و به سرویسش ادامه بدهد؟

یک مقدار در مورد پروسه BCP در اینترنت گشتم، برای خودش داستانی دارد. British Standards Institution یا BSI برای آن استاندارد BS 25999 را وضع نموده است. بخوانید، یاد بگیرید، به ما هم بگویید.

نکاتی در خصوص کار برای IT کارها

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

یک مسئله ای که هست، دوستان هم این مشکل رو دارند اینه که زمانی که برای یک کار در نظر می گیرند خیلی زیاده! یک کار کوچک رو اسمشو میذارن پروژه، کلی نیرو هم بهش اختصاص می دهند، شما هم اگر سریع انجامش دادید، بیکار می مونید! این قضیه توی شرکت های بزرگتر بیشتره. شرکتهای کوچکتر سعی می کنند کار بکشند. ولی در هر صورت چون کارمندها اینجا خیلی به ریلکس بودن عادت کرده اند این قضیه زیاد دیده می شه. سه تا از دوستان (با خودم چهار نفر) از کار راضی نیستند، دلیلش هم اینه که احساس می کنند کار بیشتر و مفید تر از این می توانند انجام بدهند و الان داره نیروشون هرز میره! دو تا از دوستان دیگر مشکلی از این نظر ندارند که یکیشون توی شرکت کوچک و یکیشون توی یک شرکت مشاوره نرم افزار کار می کنند.

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


تو ایران می نشستیم فکر می کردیم اینجا آخر متدولوژی هستند. از این جور چیزا خبری نیست! موقع مصاحبه ازتون می خواهند که بلد باشید، خصوصاً متدولوژیهای Agile مثل XP و Scrum و Test Driven Development، در عمل می بینید بزن برویی عمل می کنند. حالا چطوریه که اینها وضعشون از ما بهتره من نمی دونم.

یک چیزی که برام جالب بود اینه که یکی دو جا مثل بانک ANZ و اداره راه و ترابری (RTA) دیدم  سیستم های تحت داس دارند (منظورم صفحه سیاهه، شاید هم یونیکس و ... باشه) با Telnet وصل می شوند و استفاده می کنند. و چقدر تعجب می کنید وقتی که می بینید توی بانک برای اینکه حساب برای شما باز کنه اطلاعاتتون رو در دو سیستم مختلف وارد می کنه و بعد میاد توی وب چک می کنه که هر دو تا یکی باشند و Spaceهای اضافه رو حذف می کنه که دو تا رو یکی کنه! اگه به کاربر ایرانی بگید با چنین سیستمی کار کنه دو روزه سیستم رو هوا می کنه! با این وجود این بانک داره سرویسش رو به بهترین نحو می ده، شما همه کارهای بانکی تان را از طریق اینترنت می تونید انجام بدهید، و مشخصه که چند تا سیستم رو که توی پلتفرم های مختلف هستند به هم لینک کرده اند که تونسته اند چنین امکاناتی برقرار کنند. کارهای Integration یا EAI هم کم نبود اون موقع که دنبال کار می گشتم. نرم افزارهای Web Methods و نرم افزارهای شرکت TIBCO و Biztalk و ... رو استفاده می کنند. الان هم که خوره Sharepoint و Infopath و ... شده اند. 

حالا به نظر شما چه جور جایی آدم بره کار کنه خوبه؟