PDA

View Full Version : مصاحبه های نرم افزاری - قسمت اول : Tabbles



Mehdi Asgari
جمعه 08 مرداد 1389, 10:47 صبح
مطابق روشی که برای "review نرم افزار ها" در پیش گرفتم ، قصد دارم از این به بعد هم در سایت و هم مجله ، بخش مصاحبه رو راه بندازم. مصاحبه ها با برنامه نویسان اصلی یا صاحبان شرکت های نرم افزاری انجام خواهد شد. اگر شرکت خاصی هست که می دونید ممکنه برای review محصولش یا انجام مصاحبه ، نظر مثبتی داشته باشه (یا خودتون صاحب محصولی هستید) می تونید ایمیل بنده (mehdi.asgari@yahoo.com) رو بهش بدید؛
توجه: برای انجام review محصولات نرم افزاری ، شرکت مورد نظر باید یک لایسنس معتبر برای محصولی که قراره review بشه در اختیار ما قرار بده. (در واقع باید به نوعی به یک نسخۀ غیر دمو دسترسی داشته باشیم)
برای قسمت اول ، همون شرکت سازندۀ Tabbles رو در نظر گرفتم (به دلیل آشنایی با این برادران). معرفی و review این محصول رو قبلا (http://barnamenevis.org/forum/showthread.php?t=233598)انجام دادم.
Maurizio برنامه نویس اصلی شرکت (تنها برنامه نویس!) و Andrea مسئول روابط عمومی شرکت Yellow Bue Soft هست.

من: سوال اول. لطفا خودتون رو معرفی کنید.
Maurizio: من یک مدرک دانشگاهی علوم کامپیوتر دارم. چند سالی در مورد هوش مصنوعی مطالعه کرده و در مورد درک زبان طبیعی و معنا تحقیق کردم (تلاشی برای این که یک ماشین متوجه بشه ما چی میگیم!). در زمینۀ بازی های کامپیوتری هم تجربه دارم و یک بازی تنیس نوشتم. یک بازی تنیس دیگه هم نوشتم که رایگان بوده و روی لینوکس اجرا میشه (http://freetennis.sf.net) با حدود 30 زبان برنامه نویسی آشنا هستم ولی علاقۀ اصلیم زبان های تابعی (مثل اف شارپ) و زبان های منطق (مثل پرولوگ) هستند. البته مدتی هم طراحی و ایجاد وب سایت می کردم که فکر نمی کنم این بخش زیاد توجه شما رو جلب کنه!

من: ایدۀ اصلی Tabbles در ابتدا چطور به ذهنتون رسید ؟ و چطور شد که شما سه نفر تصمیم به تاسیس این شرکت گرفتید ؟
Maurizio: ایدۀ اصلی اینه که بتونیم مفاهیمی رو انتخاب کرده و فقط فایل هایی رو نمایش بدیم که به مفاهیم انتخاب شده مرتبط هستند. ایده ، به صورت مستقل به ذهنمون رسید. حالا Andrea داستان خودش رو خواهد گفت ؛ ولی برای من چند سال پیش اتفاق افتاد ، زمانی که یک مدیر فایل به نام seguoLand (http://segusoland.sourceforge.net/) ایجاد کردم که توسط اون می شد مفاهیم رو با چند کلیک ماوس انتخاب کنیم. این برنامه رایگان بوده و روی لینوکس اجرا میشه. ایدۀ اصلی ، "کاهش و فیلتر" بود، یعنی شما یک شی یا فعل رو انتخاب می کردید، و سپس تمام اشیای غیر سازگار با اون شی/فعل ، حذف می شدند ، که این باعث می شد انتخاب چیزی که در نظر دارید راحت تر باشه. در Tabbles ما این ایده رو کنار گذاشتیم چون مطمئن نبودیم که آیا کاربران غیر فنی همچین چیزی رو قبول خواهند کرد یا نه، اما مفهوم Combine رو داریم که فکر می کنم خیلی قابل فهم و طبیعیه (البته به شرط این که رابط کاربری رو از ابتدا با در نظر داشتن این مفهوم طراحی کرده باشید)
Andrea: من قبلا در یک شرکت به مدت 3 سال مسئول بخش فروش و بازاریابی بودم. وقتی که فهمیدند من می تونم با فتوشاپ و Illustrator کار کنم ، مسئولیت ایجاد هلپ و مستندات رو هم به عهده گرفتم. بعد از حدود یک سال حجم فایل هایی که باهاشون سر و کار داشتم خیلی زیاد و غیر قابل مدیریت شد و یک سال بعدش از من خواسته شد که نام فایل هام رو تغییر بدم تا بقیۀ همکاران هم بتونن اون ها رو پیدا کرده و استفاده کنن (یه کابوس واقعی!). پس از چند جلسه که صرف طراحی ساختار فولدر و قرار دادن فایل ها در ساختار مذکور (که زیاد هم درش موفق نبودیم) فهمیدم که چیزی که من اغلب مواقع می خواستم فقط توانایی قرار دادن یک فایل در چندین فولدر ، بدون انجام عمل کپی بود. پس از این واقعه! سعی کردم یک راه حل ساده برای این مسئله پیدا کنم ، ولی با تعجب زیاد موفق به این کار نشدم. پس از چندین ماه مرور وب و جستجو ، با کلی از ابزار مدیریت اسناد (DMS (en.wikipedia.org/wiki/Document_management_system)) و مدیریت دارایی های دیجیتالی (DAM (en.wikipedia.org/wiki/Digital_asset_management)) و ابزار تگ گذاری آشنا شدم ولی باز هم چیزی رو که مد نظرم بود نتونستم پیدا کنم.
سپس پس از 3 ماه شب بیداری و فکر کردن به این مسئله ، فهمیدم که خودم باید این کار رو انجام بدم... اینجا بود که ایده ام رو با Maurizio در میون گذاشتم؛ ما از دوران دبیرستان با هم دوست بودیم و علایق مشترک زیادی داشتیم ، در ضمن قبلا هم هر دو برنامه نویس بازی های کامپیوتری بودیم. این موضوع بر می گرده به نوامبر 2008؛ یک ماه بعد یعنی دسامبر ، اون اولین کد های پروژه رو نوشت. اون موقع ما یک نفر رو هم برای انجام امور قانونی/مدیریتی/مالی نیاز داشتیم و خوشبختانه یکی از دوستان دوران دانشگاهیم (Irmante) این نقش رو به عهده گرفت و از اونجا تیم Tabbles شکل گرفت.
اما الان Tabbles چیه ؟ یک ابزار تگ گزاری بر روی فایل ها که به زودی با رلیز ویژگی shared-tabbles (http://tabbles.net/forum/introducing-social-tagging-lan-and-cloud-t296.html) تبدیل به یک ابزار تگ گزاری اجتماعی هم خواهد شد (در واقع ممکنه موقع انتشار مصاحبه ، این ویژگی منتشر شده باشه). قصد ما از ایجاد این ابزار ، ساده کردن زندگی افرادیه که هر نوع از اسناد رو تولید کرده و نیاز دارند که روی اون ها کار کنند.
ممکنه سوال کنید چرا از Knowledge Tree یا Alfresco (http://en.wikipedia.org/wiki/Alfresco_(software))یا فایل های M برای انجام این کار استفاده نکردیم.
اول رابط کاربری: ما به رابط کاربری محصولمون که کار باهاش راحت و سریعه افتخار می کنیم؛ ما می خوایم که کار با Tabbles لذت بخش باشه و امیدواریم که الان در حال انجام همین کار باشیم.
دوم این که محصول ما مبتنی بر دسکتاپ هست نه وب ، بنابراین کارهایی مثل کپی پیست ، درگ دراپ ، مانتیور کردن دیسک و ... رو می تونه انجام بده.
سوم این که نصب و نگه داریش خیلی ساده است، و نیازی به سرور دیتابیس نداره. در حال حاضر فایل ها رو در یک فایل XML ذخیره می کنیم که نیازی به نگه داری یا دستکاری تنظیمات شبکه یا فایروال نداره.
و در آخر فن آوری مبتنی بر فایل tables-sharing که به کاربرا اجازه میده با استفاده از سرویس های ذخیره سازی ابری (مثل PowerFolder، Dropbox، Sugarsync ، Microsoft Live Sync و ...) فایل ها رو تگ زده و اون ها رو با دوستان و همکارانشون در هر جای دنیا به اشتراک بگذارند (فقط با تنظیم یک فولدر در Tabbles). تا جایی که من اطلاع دارم ما تنها کسانی هستیم که این کار رو در حال حاضر انجام می دیم. فکر کنم کافی بود ، نه ؟

من: چرا از F# برای توسعۀ هسته و منطق محصولتون استفاده کردید ؟ (در واقع منظور من از این سوال ، اینه که بدونم استفاده از یک زبان تابعی چه مزایایی برای یک بیزینس نوپای نرم افزاری داره ؟)
Andrea: اف شارپ ویژگی هایی مثل توابع مرتبه بالاتر ، type inference، pattern matching ، list comprehensions ، توابع لامبدا ، استایل تابعی محض (مقادیر غیر قابل تغییر) و ... داره که به ما اجازه میده استایل کد رو مشابه چیزی که فکر می کنم تغییر بدم ، نه برعکس. کد در این زبان خواناتر و در نتیجه نگه داریش راحت تره. در ضمن ما شروع کردیم به نوشتن یک سری از مقالات در مورد F# که قسمت اول رو می تونید در وبلاگمون ببینید:
http://tabbles.net/blog/2010/07/29/fsharp-tutorial-how-fsharp-adapts-to-how-we-think-part1/

من: آیا توسعۀ نسخه ای برای لینوکس هم در نظر دارید ؟
Andrea: نه واقعا. امیدواریم که روزی بتونیم یک نسخه برای Mac بیرون بدیم.کاری که ما می تونیم بکنیم اینه:
- مشخصات دیتابیسمون رو رلیز کنیم تا شاید یک نفر نسخه هایی از Tabbles برای پلتفرم های دیگه ایجاد کنه
- یک نسخۀ مبتنی بر وب از Tabbles تولید کنیم که روی ASP.NET/Silverlight اجرا بشه.
- یک سیستم API ایجاد کنیم که دیگر برنامه ها بتونن با Tabbles تعامل داشته و روی دیتابیس عملیات خوندن/نوشتن رو انجام بدن. (ما یه خورده روی این ایده کار کردیم (http://tabbles.net/forum/ok-to-add-items-to-tabble-by-editing-db-xml-t320.html#injection) )
اخیرا چندین ایمیل از افرادی دریافت کردیم که خواستار کمک در توسعۀ Tabbles بودن و ما هم از این ایده خوشمون اومد و این تاپیک (http://tabbles.net/forum/help-to-develop-tabbles-t321.html) رو در سایتمون و این wave (https://wave.google.com/wave/waveref/googlewave.com/w+OsNtHUDjB) رو نیز ایجاد کردیم. به همه هم خوشامد میگیم!

من: به غیر از Shared-Tabbles ، چه ایده های دیگری برای آیندۀ محصولتون دارید ؟
Andrea: همین Shared-Tabbles هم ویژگی بزرگیه؛ توسط اون می تونید تگ گذاری رو در LAN یا حتی Cloud به اشتراک بذارید و نیازی هم به سرور نداره؛ در واقه تنها پیش نیازش یک فولدر shared هست. در مورد ویژگی های بیشتر، می تونید صفحۀ roadmap (http://tabbles.net/en/support-file-tagging-document-management/tabbles-roadmap.html)مون رو ببینید.

من: شما توی شرکت Yellow Blue Software آیا علاوه بر Tabbles کار دیگری هم می کنید ؟
Andrea: نه. ما در حال حاضر از خونه کار می کنیم و شبانه روزی هم روی همین Tabbles وقت می گذاریم. البته برای آیندۀ نزدیک یه ایده هایی داریم!

من: شما دارید از خونه کار می کنید و با این حال یک بیزینس موفق دارید. میشه در مورد "کار از راه دور" و مزایا و معایبش توضیح بدید ؟
Andrea: برای این که بتونید از خونه کار کنید ، باید زیاد حرف بزنید و ارتباط برقرار کنید (البته نه بیش از حد) و هر چیزی رو که نیاز هست ، با هم به اشتراک بذارید، همین. البته پی بردن به این که چقدر ارتباط نیازه و چقدر "کم" یا "زیاد" هست ، نیاز به تجربه و صبر داره. البته باید منتظر یه سری سو تفاهم ها و برداشت های غلط هم باشید (بیشتر از وقتی که هر روز همه همدیگه رو رودررو ببینید.
مزایا: ما می تونیم موقع کار پیژامه (یا کم تر از اون!) بپوشیم. هر وقت دلمون خواست کار می کنیم. و هزینه هامون هم خیلی کمه چون دفتر نداریم.
معایب: ارتباط انسانی کمه (صحبت از طریق Skype نمی تونه جای دیدار حضوری رو بگیره). امکان سو تفاهم و ایجاد برداشت های غلط زیاد تره. خیلی زود پیژامه ها بو میدن و اون وقت متوجه میشید که ساعت 3:40 صبح فقط وقت چک کردن ایمیل نیست (البته فکر کنم اگه دفتر هم داشتیم باز هم این اتفاق می افتاد!)

من: سوال آخر: لطفا از تجاربتون در مورد ایجاد یک بیزینس نرم افزاری برای ما توضیح بدید؛ توصیه تون برای برنامه نویسا و گیک هایی که میخوان بیزینس خودشون رو شروع کنن چیه ؟ (در واقع میخوام بدونم یک گیک (و نه کسی که MBA داره) چطوری از پس یه شرکت نرم افزاری بر می یاد)
Andrea: راستش چون هنوز به سوداوری اصلی نرسیدیم ، زیاد مطمئن نیستم که آیا ما می تونیم در این زمینه نصیحت بکنیم یا نه، ولی به هر حال این نظر منه:
- بازاریابی خیلی مهم تر از خود محصوله. یادتون باشه که مردمی هستن که با خرید فضله و فروش اون به عنوان کود دارن پول در می یارن.
- سعی کنید وارد یک بازار خاص بشید و محصولتون رو به مخاطبای خاص اون بازار تبلیغ کنید. اگه به زبون اون ها صحبت کرده و ادعا کنی می تونی مشکلاتشون رو حل کنی، به حرفت گوش میدن (اوکی ، باید بگم که شرمنده ام چون حرفی که زدم مخالف کاریه که الان داریم می کنیم؛ ولی ما هم سعی می کنیم وارد بازار خاصی بشیم)
- هر چه سریع تر محصول خود رو رلیز کرده و اون رو بر اساس فیدبک کاربرانتون بهبود ببخشید.
برای کسانی که میخوان بیزینسی شروع کنن ، مطالعۀ وبلاگ Jason Cohen (http://blog.asmartbear.com/) و Balsamiq (http://balsamiq.com/blog)رو پیشنهاد می کنم.

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

Alireza_Salehi
جمعه 08 مرداد 1389, 11:28 صبح
جالب بود، متشکرم

حسین فلاحی
جمعه 08 مرداد 1389, 11:35 صبح
کاش دکمه تشکر فعال می شد!