Technical Writing: Engineering च्या विद्यार्थ्यांसाठी alternate career

सदर post, मुग्धा वैरागडेद्वारा लिखित http://punetech.com/technical-writing-an-alternate-career-for-engineering-students/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे.

तुम्ही Computer Science/Engineering चे undergraduates आहात का? किंवा तुम्ही  graduates आहात आणि नेहमीच्या software development किंवा testing च्यापेक्षा वेगळा career चा मार्ग शोधताय? तसं असेल तर, technical writing या career option चा विचार केलाय? शक्यता अशी आहे की, तुम्ही नाही विचार केला, कारण तुम्हाला technical writing बद्दल फारशी माहिती नाहीये.

Technical writing मधे career सुरू करण्यासाठी तुम्हाला काही आवश्यक असेल तर ते म्हणजे, क्लिष्ट technical विषय आत्मसात करण्याची क्षमता (जी तुमच्याकडे असेलच कारण, तुम्ही engineering चे विद्यार्थी आहात.) आणि चांगलं English.

लोकांना technical writing बद्दल इतकं थोडं माहिती आहे की, या क्षेत्रातील आकर्षक नोकरीच्या संधी ते गमावतात. इथे, technical writing म्हणजे नक्की काय आणि तुम्ही हे career option म्हणून का विचारात घ्यायला हवं ते स्पष्ट करण्याचा मी प्रयत्न करीत आहे.

Organizations ना technical documentation ची गरज व महत्व लक्षात येऊ लागल्याने सर्व पातळीवरील अनुभवी technical writers ची मागणी वाढू लागली आहे.

Technical writer ची मागणी व ओघाने, pay packages सुद्धा आता software development व testing professionals इतकीच (किंबहूना त्यापेक्षा जास्त) आहे.

हा career option, cool वाटतोय, नाही का? तुम्हाला technical writing बद्दल आणखी जाणून घ्यायचयं? चला तर मग, जाणून घेऊ, technical writers कोण आहेत आणि काय करतात?

Technical writers वेगवेगळ्या organizations मधे वेगवेगळ्या नावांनी ओळखले जातात. जसं की, technical communicators, software
documentation experts, वा information developers.

Technical writers कडे दोन महत्वाच्या characteristics असायला हव्यात.

  • Strong Technical Background- Technical writers ना क्लिष्ट technical concepts, applications, वा services, document करण्यासाठी समजल्या पाहिजेत, हे विचारात घेता  Strong Technical Background ची गरज स्पष्ट आहे. जसं की, OSS/BSS systems, genomic-analysis
    application, किंवा अगदी web-services for airline reservation systems.
  • लिहिण्याचे कौशल्य (Writing Skills) – हो, technical writers चं English भाषेवर प्रभूत्व असायलाच हवं, तेही साधं व्यावसायीक भाषेतलं English, जे global audience ला समजेल. त्यामुळे तुम्ही अलंकृत किंवा साहित्यिक भाषेत लिहीणं अपेक्षित नाहीये तर, अगदी साधं, संक्षिप्त स्वरूपात लिहीणं अपेक्षित आहे.

त्याचप्रमाणे, तुम्हाला स्वत:चं आणि इतरांचं कामही, technical documentation साधं, संक्षिप्त व उपयुक्त व्हावं या दृष्टीने संपादीत (edit) करता यायला हवं. तुम्हाला

Software Document लिहिण्यासाठी technical writers नी प्रथम त्या software चा अभ्यास करणं आणि अपेक्षित श्रोतावर्ग कोण आहे हे पाहाणे गरजेचे आहे. यासाठी technical writers, (शक्य असल्यास) software शी interact करून function designs आणि developer documentation, व interview Subject Matter Experts (SMEs) चा अभ्यास करतात.
मग technical writers, documentचे overall structure define करतात आणि त्या structure मधून तो काय शिकला ते लिहीतात. मग, हे document, technical व editorial teams कडे समीक्षणासाठी (review) पाठविले जाते. जर ते document त्या team कडून approve झाले तर आवश्यक format मधे (Online Help, PDF, XML, अगदी MS Word) प्रकाशीत केले जाते.
या प्रक्रियेमधील सर्वात आव्हानात्मक भाग म्हणजे technical jargon चे भाषांतर अपेक्षित श्रोतावर्गाला समजेल व उपयुक्त ठरेल अशा प्रकारे करायचं. यामधे application वर काम करण्यासाठी अपेक्षित श्रोतावर्गाला काय माहिती असायला हवं त्याचा अंदाज घेऊन ते समाविष्ट करणं आणि अनावश्यक ते काढून टाकणं याचाही समावेश होतो. पुन्हा तुमचं software development चे exposure, background ला काय चालू आहे आणि अपेक्षित श्रोतावर्गाच्या बाजूला त्याचा काय परिणाम होतो ते समजायला मदत करतं.

हे कामाचं स्वरूप आव्हानात्मक वाटतयं ना? मग तुम्हाला जाणून घ्यायचे असेल की technocal writting साठी काही प्रशिक्षण उपलब्ध आहे का? सध्या, अनेक संस्था technical writing मधे short term diploma certificates, provide करतात. परंतू अनेक training program हे documentation tools वरच भर देतात.जसं RoboHelp, FrameMaker, Visio etc.

Training program निवडताना technical writing व concepts यावर भर देणारा program निवडा. तुमची technical background असल्याने, तुम्हाला documentation tools शिकणं खूप सोपं जाईल. आणि जर तुमचे technical writing चे concepts चांगले असतील, तर organizations तुम्हाला कामावर नियुक्त करून, ते वापरत असण्या‍र्‍या documentation tools चे प्रशिक्षण नक्की देतील.(tools अनेक आहेत)
TechStart’09 च्या उपक्रमाअंतर्गत technical writers साठी मी weekend mentoring sessions घेतले होते. मी CS च्या विद्यार्थांना technical writing च्या concepts जसं Documentation Development Life Cycle (DDLC),standards, editing, and basic word processing tools याबद्दल मार्गदर्शन केलं. निकाल अतिशय आशादायी होता.

आत्तापर्यंत जर तुम्ही technical writing करण्याचं मनात योजलं असेल तर Microsoft® Manual of Style for Technical Publications and The Chicago Manual of Style च्या अभ्यासाने तुम्ही तयारी सूरू करू शकता.तसेच, तुमचा word processor (जसं MS Word, OpenOffice Writer etc) वापरून तुम्ही editing व review करायला सुरूवात करू शकता. technical writing concepts, techniques, व नोकरीच्या संधींबद्दल जाणून घेण्याकरता Technical Writers of India किंवा Technical Writers in Pune groups ला join करू शकता. तुम्ही जर मार्गदर्शन सत्र आयोजीत करू इच्छित असाल तर मला mugdha at techatom dot in वर संपर्क करू शकता.

मुग्धा वैरागडे
या Senior Software Documentation Expert असून त्यांनाSoftware Development मधे ८ वर्षाहूनही अधिक अनुभव.आहे.IT-related विषयावरील अनेक उल्लेख्ननीय लेख आणिwhite papers लिहीले आहेत. त्यांनी अनेक नामांकित संस्था जसं की IBM, Intel, व CNET यांच्याबरोबर काम केले आहे.
Mugdha सध्या Senior Information Developer म्हणून पुण्यात एका services company मधे काम करतात.
त्यांना Java, Linux, XML, Open Source, तसेच Wireless Application Development या विषयांत विशेष रूची व प्राविण्य आहे.

अधिक माहितीसाठी त्यांची website पहा.

सदर post, मुग्धा वैरागडेद्वारा लिखित http://punetech.com/technical-writing-an-alternate-career-for-engineering-students/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे.

Design Thinking या विषयावर POCC ची सभा (Meet)

विषय: Design Thinking या विषयावर POCC (Pune Open Coffee Club)ची सभा (Meet)
स्थळ: Room 707, SICSR, ओम सुपर मार्केट, मोडेल कोलनी, शिवाजीनगर , पुणे

सभेची वेळ: दु. ४:०० ते रात्री ८:०० पर्यंत
दिनांक: ३ एप्रिल २०१०

नकाशा: http://www.sadakmap.com/p/SICSR/


सभेविषयी:  Design thinking या विषयावर अधिक जाणून घेण्यासाठी या सभेचे आयोजन करण्यात आले आहे. Design thinking हे उपयुक्त Interface Design करण्याची कला, एवढ्यापुरतंच मर्यादीत आहे, असं नाही. प्रसिद्ध उद्योजक, याविषयी त्यांचे अनुभव सांगण्यासाठी POCC च्या सभेमधे येत आहेत.

१. सतिश गोखले: हे प्रसिद्ध Design तज्ञ असून त्यांचे नविन project म्हणजे  TATA swach. हा वेगळ्या प्रकारचा water purifier आहे, तो चालण्यासाठी वीजेची आवश्यकता नसते आणि अतिशय कमी किंमतीत (रू १००० फक्त ) उपलब्ध आहे.
सतिश गोखले, यांनी अनेक प्रसि्द्ध products, design केली आहेत.

२.दिपेन्द्र बावनी: हे Lemon Design चे संस्थापक आहेत. दिपेन्द्र बावनी यांना Transportation Design ( Audi International Design Competition – 1996, Nagoya Car Design Competition -1997) and Web Design ( Macromedia) चे पुरस्कार मिळाले आहेत.
Design व technology चा उपयोग, बाजारात चांगल्या संधी निर्माण करून/ओळखून, ग्राहक व stakeholders ला त्याचा योग्य फायदा कसा देता येईल यात त्यांना रस आहे.

३. चिन्मय कुलकर्णी: हे Brand Strategy Consulting Firm मधे Business Design सल्लागार आहेत. ते Skoda, Prudential, Gera Developments इ. संस्थामधे सल्लागार म्हणून कार्यरत आहेत, आणि global brand IKEA चे एकमेव SE Asian सल्लागार आहेत.

ह्यानंतर POCC च्या २र्‍या वर्धापन दिनानिमित्त १ तास general networking साठी ठेवला आहे.

ही सभा सर्वांसाठी विनामूल्य आहे. कोणत्याही नोंदणीची आवश्यकता नाही.

अधिक माहितीसाठी पहा- http://punestartups.ning.com/events/occ-pune-meet-on-design

Design thinking बद्दल अधिक महितीसाठी पहा: http://en.wikipedia.org/wiki/Design_thinking

अवश्य या!

Java पेक्षा Python का चांगली?

सदर post, नविन काब्रा द्वारा प्रकाशित http://punetech.com/why-python-is-better-than-java/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर मंदार वझे यांनी केले आहे.

धनंजय नेने ह्यांनी नुकतीच Python वापरायला सुरुवात केली, आणि त्यांना असे जाणवले की, Python वापरताना त्यांना जास्त मजा येते. त्यांनी त्यांच्या blog वर त्याबद्दल सविस्तर लिहीले आहे :

गेल्या काही महिन्यात मला असे प्रकर्षाने जाणवले की python मधे programming खूप सोपे आणि मजेशीर आहे. म्हणजे साधी आणि gear ची सायकल चालवण्यात जसा फरक आहे ना, तसाच. म्हणजे gear ची सायकल चालवताना असं वाटतं की, कमी प्रयत्नात जास्त दूर जाता येतं. परंतु विज्ञान सांगतं की खरं तर दोन्ही करता तेवढयाच प्रयत्नांची गरज लागते. जास्त सुविधा असल्यामुळे काम सोपे वाटत असेल. पण मला असं का वाटतं? कदाचीत Python च्या खालील features मुळे असेल (अर्थात, पुढील यादी कुठल्याही प्राधान्यक्रमानुसार नाही.)

* सुटसुटीत : code साधारण पणे जास्त आटोपशीर असतो. कमी फापटपसारा (verbosity)
* Dynamic Typing : Data type declaration आणि inheritance hierarchies, विशेषत:सर्व interfaces and implementations साठी योग्य आहेत की नाही, ह्याची काळजी करण्याची गरज नाही. वेगवेगळे objects एकाच inheritance hierarchy मधे असण्याची सुध्दा गरज नाही. Object मधे method असल्यास आपण त्याचा वापर करू शकता. अर्थात ही दुधारी तलवार आहे, परंतु त्यामुळे dynamic type environment मधे programming सोपे होते, हेही तितकेच खरे.
* सोपे runtime reflection: Java मधे सर्व प्रकार च्या reflection capabilities आहेत. पण Python पेक्षा Java मधे त्या वापरणे खूपच त्रासदायक आहे. Python मधे सगळे constructs (classes, sequences etc.) reflection साठी उपलब्ध आहेत. जर तुम्हाला metaprogramming constructs ची गरज असेल, तर Python ला खरोखरच पर्याय नाही.
* जास्त अंतर्गत सुविधा : list comprehensions किंवा functions ना objects प्रमाणे वापरणे.
* नीट नेटका code असण्याची सक्ती (indentation requirement) : मला ह्याची सवय होण्यासाठी २-३ दिवस लागले, पण त्या मुळे Python चा code वाचायला खूप सोपा होतो, कारण जर code व्यवस्थीत indent केलेला नसेल तर चालतच नाही. (code is rejected)


मी स्वत: Perl programmer आहे, आणि माझे Perl बद्दल असेच मत आहे. अर्थात मला Python ची indentation ची सक्ती आवडली नाही. पण जे programmer, भाषेच्या सुविधांचा गैरवापर करणार नाहीत, Perl त्यांच्याच साठी योग्य आहे. बेशिस्त programmers साठी Python ची indentation ची सक्ती ही चांगलीच गोष्ट आहे.
असो, आपण संपूर्ण लेखच वाचा. तुम्ही, त्यांनी त्यांच्या पुढच्या project साठी python निवडली, तेंव्हा लिहीलेला लेख सुद्धा वाचा. त्यापेक्षा तुम्ही त्यांच्या blog ला subscribe करा ना.
जर तुम्ही techie असाल तर तुम्ही त्यांचे सखोल आणि अभ्यासपूर्ण लेख जरूर वाचले पाहिजेत. जर तुम्हाला programming languages मधे रुची असेल तर मी त्यांचे “Contrasting java and dynamic languages”, आणि “Performance Comparison – C++ / Java / Python / Ruby/ Jython / JRuby / Groovy” हे लेख सुचवीन. ..आणि जर तुम्ही स्वत: blogger असाल तर त्यांच्या software/programming blogging बद्दलच्या सुचना वाचा.

धनंजय पुण्यातील, १७ वर्षाचा अनुभव असलेले software Engineer आहेत. त्यांना software engineering, programming, design आणि architecture ह्याबद्दल विशेष आवड आहे. अधिक माहिती करता त्यांचे PuneTech wiki profile वाचा.

सदर post, नविन काब्रा द्वारा प्रकाशित http://punetech.com/why-python-is-better-than-java/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर मंदार वझे यांनी केले आहे.

फिबोनाकी सिरीज- Fibonacci Series

सदर  post, वेदांग मणेरीकर द्वारा प्रकाशित  Fibonacci Numbers या लेखाचे भाषांतर असून,   http://mytechrants.wordpress.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर अभिजीत वैद्य  यांनी केले आहे.

माझ्या मते हा ब्लॉग वाचणार्‍या सगळ्यांना, फिबोनाकी सिरीज (Fibonacci series) माहीत असेल. ही सिरीज अशी आहे –

0, 1, 1, 2, 3, 5, 8, 13, 21, 34…, infinity पर्यंत

या सिरीजमध्ये प्रत्येक संख्या ही आधीच्या २ संख्यांची बेरीज असते.

F(n) = F(n-1) + F(n-2)

आणि ,

F(0) = 0

F(1) = 1

एक सोपी युक्ती
मैल या परिमाणात व्यक्त केलेले अंतर किलोमीटरमध्ये कसे रुपांतरीत करायचे ? तुम्ही फिबोनाकी सिरीज वापरू शकता. ५ मैल म्हणजे ८ किलोमीटर.(अधिक अचूकपणे ८.०४५ किमी.) ८ मैल म्हणजे १३ किमी(१२.८७ किमी.), १३ मैल म्हणजे (तुमचा अंदाज बरोबर आहे !) २१ किलोमीटर. (२०.९१७ किमी.). पण हे तर फक्त फिबोनाकी नंबर्सनाच चालते. जरा थांबा ! समजा तुम्हाला २० मैल चे किलोमीटर मध्ये रुपांतर करायचे आहे. तर मग २० ला फिबोनाकी नंबर्सच्या बेरजेमध्ये व्यक्त करा.

२० = १३ + ५ + २
आता प्रत्येक संख्या मैल-किलोमीटर सूत्रानुसार रुपांतरीत करा.
= २१ + ८ + ३
= ३२

अचूकपणे, २० मैल म्हणजे ३२.१८ किमी. होते.

याच्यामागचे Logic काय आहे याचा अंदाज येतोय का ? त्याचे कारण असे आहे –

मैल मधून किलोमीटर मध्ये रुपांतर करण्यासाठी १.६०९ ने गुणावे लागते. फिबोनाकी सिरीज ची एक अत्यंत interesting property आहे – फिबोनाकी सिरीज मधील लागोपाठच्या २ संख्यांचा ratio (१. ६१८) हा Golden ratio च्या आसपास जातो.  आता कळले रहस्य ?

सदर  post, वेदांग मणेरीकर द्वारा प्रकाशित  Fibonacci Numbers या लेखाचे भाषांतर असून,   http://mytechrants.wordpress.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर अभिजीत वैद्य  यांनी केले आहे.

Software Specifications घेताय? तुमच्यासाठी काही Tips:

सदर post, पल्लवी केळकर द्वारा प्रकाशित http://pallavikelkar.wordpress.com/2009/07/19/taking-software-specifications-tips-for-you/ या लेखाचे भाषांतर असून,http://pallavikelkar.wordpress.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर पल्लवी केळकर यांनीच केले आहे.

मी personally, Software Specifications घेण्याच्या प्रक्रियेत involve आहे. हे अतिशय कौशल्यपूर्ण व आव्हानात्मक काम आहे, असं मला वाटतं. Specification ची Software Development मधे अतिशय महत्वाची भूमिका आहे. तुम्हाला जेवढा त्याचा अनुभव येईल, तेवढी तुमची mastery होईल. आपण जर त्या घेताना चूक केली, तर आपल्याला ब‌र्‍याच changes मधून जावे लागते.
मला उपयुक्त वाटणारे काही मुद्दे मी reference साठी देत आहे.
१. काळजीपुर्वक ऐका: ऐकणं हेही एक कौशल्य आहे. client नक्की कशाबद्दल बोलतोय याची स्पष्ट कल्पना तुम्हाला यायलाच हवी. Client नेहमीच त्याची संकल्पना मांडण्याचा प्रयत्न करत असतो. तुम्हाला ती तंतोतंत पकडता आली पाहिजे. जर तुम्ही त्याचे म्हणणे काळजीपूर्वक ऐकत असाल, तुमचं त्याच्या बोलण्याकडे पूर्ण लक्ष असेल, तर तुम्ही आणि client एकाच track वर राहाल. नाहीतर client काहीतरी वेगळंच बोलतोयं, तुम्ही वेगळंच समजलात तर नंतर त्याचा खूप त्रास होऊ शकतो.

२. जेव्हा तुम्ही ऐकता तेव्हा parallel thinking करु नका: आपण जेव्हा कुठलीही गोष्ट ऐकत असतो तेव्हा दुस‌र्‍या गोष्टींशी त्याचा संदर्भ लावत असतो. उदा. जर आपण एखद्या software च्या संकल्पनेबद्दल ऐकत असू, तर त्याचा संदर्भ दुस‌र्‍या कुठल्यातरी software शी, जे आपण पाहिले आहे किंवा वाचले आहे, त्याच्याशी लावू पाहातो. असे parallel विचार जर चालू राहिले तर, काही मुद्दे वगळले जाण्याची शक्यता असते. असा विचार आपण नंतरही करू शकतो. हे parallel विचार करणं, मूळ संकल्पनेबद्दल खूप confusion आणि गैरसमज निर्माण करू शकतं.

३. Client ची व्यावसायीक पार्श्वभूमी(Professional Background) consider करा: Client ची व्यावसायीक पार्श्वभूमी जसं की field ( commerce/ management इ.), job profile वगैरे, माहिती करून घेणं फार महत्वाचं आहे. Client जे शब्दप्रयोग करतात, ते समजून घ्यायला तुम्हाला याची मदत होईल. उदा. जर ते commerce background चे असतील, तर तुम्हाला दिसेल की, ते बरीचशी उदाहरणं accounts मधील देतील. जर तुम्हाला तुमची संकल्पना मांडायची असेल तर तशाच प्रकारची उदाहरणं तुम्ही त्यांना देउ शकता, त्यामुळे त्यांना जास्त चांगल्या प्रकारे व लवकर समजेल.

४. प्रश्न विचारा: बोलण्याच्या दरम्यान जर तुम्हाला असं वाटलं की कुठलीतरी link, logic अनुसार वगळली जातीये किंवा कुठलातरी भाग तुम्हाला समजला नाहीये तर तिथे प्रश्न विचारा. यामुळे doubts स्पष्ट होतात आणि idea जास्त चांगली समजते. जर तुम्ही प्रश्न विचारलेत तर आपसूकच त्याविषयीची विस्तृत माहिती तुम्हाला मिळेल.

५. Analyze [Input- Process- output]: प्रत्येक software चे हेच structure आहे. तुम्हाला जर एकूण Input ची संख्या, कोणत्या process होतात आणि अपेक्षित output काय आहे, याची कल्पना आली, तर software specification चा सर्व भाग पूर्ण झाला.
प्रत्येक process व Logic चा या format मधे विचार करा. Missing links असतील तर त्या तुम्ही पकडू शकाल.

६.  पडताळणी करा (Verify): तुम्हाला  ज्या काही software requirements समजल्या आहेत, त्याची client बरोबर पडताळणी (verification)  करून घ्या. त्यामुळे तुम्हाला आणि client ला, काय समजले आहे याची स्पष्ट कल्पना येईल.

७. Key points ची नोंद करा: ऐकत असताना महत्वाचे मुद्दे तुमच्या भाषेत लिहून ठेवा. पुढील संदर्भासाठी हे अतिशय उपयुक्त आहे. कालांतराने काही मुद्दे miss होऊ शकतात, त्यावेळी हे तुम्हाला नक्की उपयोगी पडेल.

८. Technical शब्द टाळा: तुम्ही ज्यांच्याशी बोलताय त्यापैकी अनेक लोक non-technical असतील. जड जड technical शब्द वापरू नका, जे त्यांना समजायला अवघड जातील. ही गोष्ट त्यांच्यासाठी अडथळा ठरू शकते आणि communication मधे disturbance ठरू शकते. अगदी सोपी आणि सहज समजणारी भाषा वापरा.

९. जे process मधे involve आहेत, त्यांच्याशी बोला : अनेकदा ज्या माणसाकडून तुम्ही specification घेता, तो actual process मधे involve नसतो. जे involve असतात, त्यांच्याशी बोला, काम करताना येणा‍‍र्‍या practical issues बद्दल, ते तुम्हाला जास्त चांगलं मार्गदर्शन करतील. त्याची खूप मदत होते.
उदा. जर तुम्ही Inventory System ची specification घेत असाल, तर stock department चा head तुम्हाला process बद्दल व real time issues बद्दल चांगली माहिती देईल.

१०. Add your own value: सर्व शक्य solutions आणि अधिक ideas आणि सूचना, तुमच्याकडून add कशा करता येतील यावर विचार करा. हे नक्की value add करेल आणि client नक्की खूष होईल.

सदर post, पल्लवी केळकर द्वारा प्रकाशित http://pallavikelkar.wordpress.com/2009/07/19/taking-software-specifications-tips-for-you/ या लेखाचे भाषांतर असून,http://pallavikelkar.wordpress.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर पल्लवी केळकर यांनीच केले आहे.

मी Ruby का शिकावी ?


सदर post, Nick Adams  द्वारा प्रकाशित  http://punetech.com/why-you-need-to-learn-ruby-and-rails/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर अभिजीत वैद्य  यांनी केले आहे.

Ruby ही python, perl, php आणि इतर बऱ्याच unix आधारित भाषांसारखी interpreted language आहे. १९९२ मध्ये युकीहीरो मात्सुमोतो या जपानी संगणक तज्ञाने Ruby विकसित केली. पण २००५ मध्ये Ruby on Rails हे web development framework आल्यावर Ruby एकदम प्रसिद्धीच्या झोतात आली. या लेखात मी प्रथम Ruby बद्दल, नंतर Rails बद्दल आणि शेवटी यात वेगळे काय आहे याविषयी माहिती देईन.

Ruby च्या बाबतीत सर्वप्रथम लक्षात येणारी गोष्ट म्हणजे तीचा सरळ सोपा syntax:

5.times {print “Hello Pune !”}

semi colon, variable declaration इत्यादी ची गरज नसल्यामुळे Ruby चा code हा जास्त readable होतो आणि coding करण्यास गरजेपेक्षा जास्त वेळ लागत नाही.

Ruby ही १००% object oriented आहे. Ruby मध्ये variables सकट सगळ्या गोष्टी या object असतात. सुरुवातीला हे जरा टोकाचे वाटू शकेल, पण जेंव्हा तुम्ही Ruby on Rails framework वापरता आणि जेव्हा तुम्हाला “String” या basic class मध्ये on the fly बदल करायचे असतील तेंव्हा त्याची खरी ताकद कळते. Ruby ही फारच flexible आहे. Ruby मध्ये blocks, iterators तसेच higher level language मधली string reverse, string capitalize सारखी व इतरही अनेक features आहेत.

Rails हे web development framework आहे. Rails कडे नुसतेच “web design साठी नवीन Classes आणि Methods चा संग्रह” हा दृष्टीने बघून चालणार नाही. माझ्या मते Rails शिकण्यापूर्वी दोन गोष्टी शिकणे आवश्यक आहे. एक म्हणजे MVC pattern. MVC pattern हे Application logic वेगवेगळ्या भागांत विभागून development वेगवान, scalable, logical बनवते. दुसरे म्हणजे Rails चे convention. हे जरी थोडे गोंधळात टाकणारे असले तरी ते समजून घेवून framework कसे design केले आहे हे समजून घेणे हे तुमचे Application परिपूर्ण बनवण्यासाठी जास्त उपयोगी ठरेल.

Rails चे वेगळेपण कशात आहे ? नुकताच मी java, php आणि Rails मध्ये web development केलेल्या एकाची मुलाखत घेतली. मला त्याच्यामध्ये Rails मध्ये काम करण्याची आंतरिक उर्मी दिसली. जर तुम्ही कधी .net, php, jave मध्ये web development केले असेल तर तुम्ही Rails चे नक्की कौतुक कराल. Rails हे वेगवान, modular आहे. त्यांनी तुम्हाला clean, readable coding करता येते. आणि हे फुकट आहे. Ajax आणि Web-2.0 ची वैशिष्ट्ये वापरणे सोपे आहे. Application चे Unit testing करणे सोपे आहे. नवीन कल्पना महिन्यांत विकसित करण्यापेक्षा आठवड्यात विकसित करा. setup करणे हे कोणत्याही environment साठी सोपे आहे. पण open source असल्यामुळे Linux आणि Mac सारख्या ‘nix based environment साठी जास्त सोयीस्कर आहे.

भारी वाटते आहे ना ? माझ्या मते web बद्दल माहिती असणारे आणि ज्यांनी database base driven web applications तयार केली आहेत, त्यांना Rails जास्त चांगले समजेल. Rails हे पूर्वीपासून प्रचलित गोष्टींवर आधारित आहे. ही नवीन जादुई web development language नाही. Rails प्रचलित गोष्टी वेगवान, सोप्या करते. Web समजून घ्या. Web applications समजून घ्या, MVC समजून घ्या, मग Rails शिका. मग तुम्हाला कधीही मागे वळून पाहण्याची वेळ येणार नाही.

Nick Adams हे Entrip चे सह-संथापक आहेत. Entrip सहल नियोजनासाठी map-based interface पुरवते, तुमचा अनुभव multimedia स्वरुपात साठवून तो मित्रांसोबत share करण्यास मदत करते. SapnaSolutions हि Entrip साठी Ruby on Rails App विकसीत करणारी कंपनी आहे जी ग्राहकांसाठी web apps बनवते. Nick Adams यांच्याशी nick [at] entrip [dot] com  या mail id  वर संपर्क साधू शकता.

सदर post, Nick Adams  द्वारा प्रकाशित  http://punetech.com/why-you-need-to-learn-ruby-and-rails/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर अभिजीत वैद्य  यांनी केले आहे.

५ गोष्टी ज्यावर Computer Science च्या विद्यार्थ्यांनी लक्ष केंद्रित करायला हवं?

सदर post,  नविन काब्रा द्वारा प्रकाशित http://punetech.com/5-things-that-computer-science-engineering-students-should-focus-on/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर पल्लवी केळकर यांनी केले आहे.

विद्यार्थ्यांनी नक्की कशावर लक्ष केंद्रित करायला हवं – अलिकडेच मला कुणीतरी हा प्रश्न विचारला. समजा, २ र्‍या वा ३ र्‍या Degree च्या वर्षाचा विद्यार्थी आहे. काही वर्ष, मधे शिक्षण पूर्ण करण्यात जातील आणि पहिल्या नोकरीत, गोष्टी शिकायला काही वर्षं जातील.
तेव्हा त्याचं खरं career सुरु होण्याआधीची ही ५ वर्ष असतील. त्यावेळी software technology नेमकी कशी असेल आणि अशी कोणती skills (कौशल्य) आहेत ज्यावर तो आत्तापासून काम करू शकेल, जी आत्मसात केल्याने तो निश्चितपणे, चांगल्या पद्धतीने पुढे जाऊ शकतो.
५ वर्ष हा नक्कीच खूप मोठा कालावधी आहे आणि Neils Bohr ने कथन केल्याप्रमाणे, “Prediction is always difficult ,especially about future” म्हणजे, “भविष्यकथन नेहमीच अवघड असते, खासकरून भविष्याविषयी”. तरीही मला असे वाटते, की काही basic trends अगदी स्पष्ट आहेत आणि अजूनही कालातीत कौशल्य आहेत, ज्याकडे लक्ष देता येईल. यावर आधारीत, मी मला वाटणार्‍या आवश्यक गोष्टींची यादी इथे देत आहे.

जरा थांबा!

मला तुमचा कोणताही पुर्वग्रह होवून द्यायचा नाहीये. माझी यादी वाचण्याआधी, comment section मधे जा आणि तुमची यादी द्या. मग माझी यादी वाचा व परत comment section मधे त्यावर अवलोकन करा.
तुमच्याशी यावर चांगली चर्चा होईल, ज्यामुळे विद्यार्थांना फायदा होईल, अशी आशा आहे.
तर ही माझी यादी.

  • The next billion customers: पुढील करोड ग्राहक: IT मधील क्रांती जगातील करोडो लोकांपर्यंत पोहोचली आहे. पुढील ५ वर्षांत ती आणखी काही करोड लोकांपर्यंत पोहोचेल.या लोकांच्या श्रेणीत फरक असेल. त्यातले बरेच लोक साक्षर असतील- तेव्हा तुम्हाला non-text, non-English interfaces – video, animations, voice recognition यांवर लक्ष केंद्रीत करायला हवे. “English Seekho” यांवर search मारा, मला काय म्हणायचे आहे याची तुम्हाला कल्पना येईल. बर्‍याच लोकांकडे वीज (electricity ) व computer घ्यायला पैसे नसतील, त्यामुळे Mobile Devices राज्य करतील. त्यामुळे तुम्ही mobile platform जसं की Android शी खेळायला चालू करायला हवे. In general, “the next billion” वर search मारा, तुम्हाला Nokia आणि MIT ने दिलेले खूप interesting material मिळेल, कशावर लक्ष केंद्रीत करायचे याची कल्पना येईल.
  • Usability म्हणजे उपयुक्तता: IT क्षेत्र अधिकाधिक लोकांच्या आयुष्यात प्रवेश करीत आहे, त्यातील कमीत कमी लोकं “computer savvy” ( Computer प्रेमी) असतील, computing devices कडे पाहून, ही अशी गोष्ट आहे की जी शिकायला पाहिजे असं वाटणारीही कमी असतील. त्यामुळे, ती products यशस्वी होतील, जी वापरायला सोपी असतील. आणि काहीतरी सोप्पं बनवणं हे खरंतर जास्त कठीण आहे. ही computer science ची sub-discipline आहे, त्यात बरीच theory, बरेच well-defined algorithms आणि बर्‍याच पद्धती आहेत. गोष्टी सोप्या करण्यासाठी तुम्ही त्या वापरू शकता. या विभागाला HCI (Human Computer Interaction) म्हणतात आणि UCD (User Centered Design) हा त्याचा एक भाग आहे. या विभागाशी तुम्ही familiar असायलाच हवं.
  • Computer Science Fundamentals : हे कधीच out of fashion होणार नाही, आणि हो, जेव्हा मी college मधून बाहेर पडलेल्या विद्यांर्थ्यांना बघतो, तेव्हा हा भाग दुर्लक्षित असल्याचे जाणवते. विशिष्ट Programming Language व विशिष्ट “technology” वर जास्ती भर देणे, ही चूक आहे. Data structures आणि Algorithms शिका. जर तुमचे आवडते Data structure नसेल आणि असा कुठलाच algorithm नसेल जो तुम्हाला   भावतो(आवडतो), तर तुमचे Computer science चे शिक्षण अपूर्ण आहे. जर algorithm पाहिल्यानंतर, पहिला विचार Algorithm च्या Complexity (O(n), O(log n)इ.) बद्दल नसेल, तर तुम्हाला तुमची पुस्तकं परत चाळण्याची गरज आहे. जर तुम्ही फक्त Java किंव्वा C# शिकला असाल आणि तुम्हाला pointers, heaps, stacks काहीच कळत नसेल तर आज ना उद्या त्यामुळे तुमचं नुकसान होईल. Basics समजून घ्या. ते करतानाच, Mathematics आणि Statistics सुद्धा शिका.
  • Presentation Skills हे Computer Science चे skill नाही पण हे अतिशय महत्वाचे skill आहे, ज्याची Computer Science च्या विद्यार्थ्यांत कमी भासते. तुम्ही Program Design व Algorithm एवढेच किंबहूना जास्तच महत्व Presentation ला द्यायला पाहिजे. आणि तुम्ही जरुर Presentation शिकण्यासाठी (पुस्तकातून, वर्गामधे, सराव करून) वेळ दिला पाहिजे, जसा Programming language आणि Computer Science subjects शिकण्यासाठी देता. मला खात्री आहे, तुम्ही असं केलं नसेल, म्हणून ही गोष्ट माझ्या यादीत आहे. चांगलं कसं लिहायचं हे तुम्हाला माहिती पाहिजे. फक्त papers आणि documents नव्हे तर त्याहूनही अधिक महत्वाचं म्हणजे emails, blog posts, facebook wall postings आणि tweets. तुम्ही user/reader/client ला काय महिती करुन घ्यायला आवडेल याचा विचार करायला हवा ( तुम्हाला काय माहिती आहे आणि काय सांगायचे आहे याऐवजी). आणि of course, तुम्हाला चांगलं बोलताही आले पाहिजे. तुमचा कामाबद्दल रहस्यमय facts ची यादी देण्यापेक्षा गोष्टीरूपाने कशी सांगता येईल, ज्या गोष्टी तुम्हाला खूप interesting वाटल्या पण श्रोत्याला नाही वाटणार, त्या कशा टाळायच्या? इ. तुम्हाला आले पाहिजे.
  • Economics: Scott Adams, Dilbert चे निर्माते म्हणतात: “जेव्हा तुमच्याकडे economics कसं चालतं याचं ज्ञान असेल, तर ती एक mild super power असल्यासारखीच आहे.” Basically, जर तुम्हाला economics चा पाया समजला, तर technologies आणि लोकं, यश आणि अपयश हे नक्की कसं चालतं, याला चालना कशी मिळते हे तुम्ही पाहू आणि समजू शकता, ज्यांना economics समजत नाही त्यांच्यापेक्षा कितीतरी जास्त. मला IIT मधे Computer Science च्या अभ्यासक्रमात, economics चा अभ्यास करावा लागला, याचा मला तिरस्कार वाटत आला होता. तो संपूर्णपणे वेळेचा अपव्यय आहे असं वाटत होतं. पण आता मागे पाहताना असं वाटतं की तो अभ्यास फार महत्वाचा होता.

तर, तुम्हाला काय वाटतं, विद्यार्थ्यांनी नक्की कशावर लक्ष केंद्रित करायला हवं?

सदर post,  नविन काब्रा द्वारा प्रकाशित http://punetech.com/5-things-that-computer-science-engineering-students-should-focus-on/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर पल्लवी केळकर यांनी केले आहे.

आम्ही comments भाषांतरीत केलेले नाहीत. कृपया मूळ post वर जावून interesting चर्चा जरूर वाचा.