الأربعاء، ديسمبر 30، 2009

كيف توجد فكرة لبرنامج تطوره و تبيعه؟

بسم الله و الحمد لله و الصلاة و السلام على رسول الله و بعد...

لطالما شغل المبرمج كيف يوجد فكرة يستطيع تحويلها إلى برنامج يمكن بيعه, و كنت واحدا ممن شغلهم الأمر نفسه, فخطرت لي فكرة لتوليد أفكار البرامج, فأحببت أن أبثها عسى أن ينتفع بها منتفع.

باختصار: قالوا قديما عن أسباب تأليف الكتب:
«ينبغِي أَن لا يخلُوَ التَّصنيفُ من أَحد المعاني الثّمانية؛ الّتي تُصنِّف لها العلماءُ؛ وهي:
أوّلاً: « اختراعُ معـدوم»؛ أَي: لم تُسبَق إليه - فيما تعلم وتعتقد -.
ثانياً: « جَمِـعُ مُفتَـرقٍ »؛ أي: مسأَلة مُشتّتة وَأَدلَّتُها في بطون الكُتب؛ تَجمعها في كتاب واحد.
ثالثاً: «تكميـلُ ناقـصٍ »؛ أَي: أنَّ الموضوع لم يكتمل فيه جانب من الجوانب؛ فتُكمِلُه أَنتَ.
رابعاً: «تفصيـلُ مجمـلٍ»؛ أي: أَنَّك تفصِّل المسأَلةَ شيئاً فشيئاً حتّى يذهبَ تراكم المعاني، ويتضّح المراد.
خامساً: «تهـذيبُ مطـوَّلٍ»؛ أي: أَنّك تلجأُ إلى الاختصار دون الإخلاَل.
سادساً: «ترتيـبُ مُخلَّـطٍ»؛ أَي: أَنّك تقدِّمُ وتؤَخّر في ترتيب المادّة أوِ الموضوع.
سابعاً: «تعيـينُ مبهـمٍ »؛ أَي: أنّك تعيّن وجود موضع خفيّ في مسأَلة أو نقطة أو نكتة لتظهرها، وتجلّي أمرها.
ثامناً: «تبيـينُ خطـإٍ»؛ أَي: أَنّك تصحّح خطأَ الغَير إذا أَيقنت صواب ما أَنت عليه.»
--------
فيمكننا الاستفادة من هذه الأسباب في إيجاد أفكار لبرامجنا,
بل هذه الطريقة تصلح لإيجاد أفكار لأي مشروع تجاري, ولنضرب على ذلك أمثلة:
1- اختراعُ معـدوم: - فكرة برنامج جديدة لم يسبق لها مثيل
2- جَمِـعُ مُفتَـرقٍ: أفكار مفترقة في برامج كثيرة تجمعها في برنامج واحد
3- تكميـلُ ناقـصٍ: برنامج ينقصه قيمة معينة تضيفها أنت
4- تفصيـلُ مجمـلٍ: برنامج عام يقوم بأشياء كثيرة, تفرقه أنت إلى عدة برامج و تفصل في كل واحد منها
5- تهـذيبُ مطـوَّلٍ: برنامج به خصائص كثيرة غير مستخدمة و تغلي سعره, اعمل أنت الخصائص الأساسية و بعها بسعر رخيص
6- ترتيـبُ مُخلَّـطٍ: برنامج جيد لكنه صعب الاستخدام, اعمله أنت بثوب جديد
= هذا منتشر في البرامج القديمة التي لم تكن أدوات اليوم متاحة لصانعيها, و هذه غالبا تكون غالية لأنها بُذل فيها مجهود
= عندك الفكرة, أعد عملها بأسلوب جديد مستغلا أدوات اليوم
7- تعيـينُ مبهـمٍ: كأن تؤلف كتابا تشرح فيه تقنية جديدة مثلا.
8- تبيـينُ خطـإٍ: برنامج يقوم بعمل وظيفة ما, ولكن به أخطاء كثيرة, و الناس يقبلونه على مضض لاحتياجهم إليه. فإذا قمت أنت بعمل برنامج يصحح هذه الأخطاء تكن لك فرصة ثمينة.
-----
فمن يدلنا على طرق أخرى؟

هل أبرمج على آي فون أم على أندرويد؟ Should I Develop for iPhones or Android?

بسم الله و الحمد لله و الصلاة و السلام على رسول الله و بعد...
ليس لي خبرة سابقة في برمجة الهواتف الجوالة, لكني هممت أن أبدأ تعلمها, فوقعت على هذه المقالة التي تقارن بين هاتف الآي فون iPhone من شركة آبل Apple و بين الأندرويد Android من شركة غوغل, فلخصتها مع أهم تعليقات قرائها ثم ترجمتها, ثم أردفتها ببعض الأسئلة للمناقشة, فكان هذا الجدول:








































Android أندرويد
iPhone آي فون
وجه المقارنة
أي كمبيوتر
كمبيوتر ماك (Mac)
متطلبات التشغيل
25 دولار
100 دولار
رسوم التسجيل في الأسواق لكي تبيع برامجك
30%
30%
النسبة المقتطعة من ربحك للشركة
1 دولار
دولار 250 الحد الأدنى من المبيعات الذي يمكنك بعده أن تجني أموالا
لا
نعم, و قد يرفضون برنامجك من غير إبداء الأسباب. و لكن يمكنك تقليل نسبة رفض برامجك
بالاتباع الجيد لسياسة شركة آبل Apple.
هل هناك قيود على قبول البرامج؟
Java للبرامج الكاملة, و لكن يمكنك استخدام الـ C/C++ في البرمجيات الداعمة (المكتبات
مثلا code libraries)
Objective-C
لغات البرمجة المستخدمة في تطوير البرامج
أسهل
أصعب
سهولة البرمجة
قد تواجهك بعض المشاكل لكي تعمل برامجك على مختلف أجهزة أندرويد التي تختلف بشدة في
مواصفات عتادها.
أي برنامج ستطوره سيعمل بسلاسة على أجهزة الأي فون (iPhone) و الآي بود (iPod)
التوافق مع العتاد
- السوق مازال في مرحلة التأسيس, و لا يشتري زبائنه بكثرة كما يشتري زبائن الآي فون.


- المكافئات على البرامج المتميزة (premium applications) قد تكون مجزية جدا خاصة إذا
ما فازت إحداها في مسابقات مبرمجي أندرويد(Android Developer Contest).


- يمكنك عمل برامج مجانية و التربح من الإعلانات.
- أندرويد لها سوق واعد على المدى
البعيد.
-السوق مستقر, و هناك الملاين من الزبائن الذين يشترون بالفعل.


- هناك الكثير و الكثير من البرامج مما يصعب فرصة إيجاد فكرة جديدة.
حجم السوق و فرص الربح

أسئلة للمناقشة (برجاء التعليق):
1- هل حقا برمجة الأندرويد أسهل من الآي فون؟
2- هل حقا برامج الآي فون أكثر ربحية من برامج الآندرويد؟
3- لمن تتوقعون أن يكون المستقبل – بإذن الله – للآي فون أم للأندرويد؟
4- ماذا عن الآخرين: ويندوز موبايل(Windows Mobile) – ليمو(LiMo) – سيمبيان (Symbian) – ريم (RIM

في انتظار مناقشاتكم... و السلام.

الاثنين، ديسمبر 21، 2009

برمجة الحاسبات... حقائق و أوهام

بسم الله و الحمد لله و الصلاة و السلام على رسول الله و بعد...
فهذه بعض الأفكار التي قد تدور في خَلَََََد (بال/خاطر) من يهِمّ بتعلم البرمجة...

1- أدوات البرمجة غالية
- هذا وهم
- كثير من الأدوات و البرمجيات الجيدة التي تساعد في البرمجة مجانية - بله مفتوحة المصدر-
- هناك فرق بين تعلم البرمجة و بين بناء برمجيات تجارية, فبعض أدوات البرمجة - وليس كلها - يُسمح باستخدامها في الأغراض التعليمية و لا يُسمح باستخدامها في الأغراض التجارية.

2- تحتاج إلى شهادة جامعية متخصصة لكي تصبح مبرمجا
- هذا وهم
- لا شك أن التعليم المتخصص يساعد لكنه ليس شرطا في التعلم على الإطلاق.
- حدثني بعض أصحابي المتخصصون في البرمجة - و هم على درجة عالية من الكفاءة في البرمجة - عن استفادتهم الجمة من مهندس إنشائي! بل إن هذا المهندس الذي حدثوني عنه كان يزعم أن المهندسين المتخصصين لا يفقهون في البرمجة شيئا!

3- تعلم البرمجة يحتاج لسنين عديدة
- حقيقة و وهم
- البرمجة علم واسع, و متجدد باستمرار, و لغات البرمجة الحديثة تظهر بين الحين و الحين, هذا فضلا عن تطور اللغات الموجودة.
- و مع ذلك فتعلم أساسيات البرمجة لن تأخذ منك الكثير من الوقت, و هذ لا يعني أن البرمجة كلها سهلة, بل لا شك أن بها بعض الأشياء التي تحتاج لبض الوقت لهضمها جيدا.

4- البرمجة لصغار السن فقط
- وهم
- لا يشترط السن في تعلم البرمجة, و لكن إن كنت جادا و أحببت البرمجة, و أعطيتها وقتا كافيا لتعلمها و ممارستها, فستتعلمها.

5- سأحتاج إلى حاسب ذي إمكانات خيالية لأستطيع البرمجة عليه
- وهم
- بالطبع استخدام حاسب قوي سيسهل عليك البرمجة إلا إنه في الوقت ذاته سيصعب عليك تجربة البرنامج, حيث ستحتاج إلى تجربته على حاسبات أخرى ذات إمكانات أقل للتأكد من عمل البرنامج بشكل صحيح على مثلها.

6- المبرمجون يدمنون البرمجة!
- حقيقة
- البرمجة ما هي إلا مهارات لحل المشاكل و تطويع لتلك الآلة الصماء المسماة "حاسب", وهذا يعطي المبرمج إحساسا بالسعادة لا يعرفه إلا من يجرب!

7- لغات البرمجة دائما تتغير(1)
- وهم
- لغات البرمجة تمر بمراحل تطور و تحسين - مثل أي شيء في عالم الحاسبات-
- إذا اخترت أن تتعلم لغة برمجة نضجت منذ حين, فهذا يعني أن التغييرات التي ستطرأ عليها لن تكون كبيرة, و أغلب هذه التغييرات ستكون في تطبيقات اللغة و الأدوات الملحقة بها و ليست في صلب اللغة.

8- إذا تعلمت لغة برمجة واحدة, سيصبح تعلم لغات البرمجة الأخرى سهلا
- حقيقة
- أساسيات و مفاهيم البرمجة ثابتة لا تتغير في كثير من اللغات, بل بعض اللغات ليست متشابهة في المفاهيم و حسب, بل في بناء اللغة أيضا!
- فإن اختلف بناء اللغات, فهذا لا يعني أن المفاهيم قد اختلفت.

المصدر: كتاب Beginning Programming بتصرف
--------------------------------
(1) هذه النقطة تكمل النقطة الثالثة و لا تعارضها, فانتبه!