Ask the Expert
|
Feedback
|
About us
|
Contact us
|
Pratibha Home
 
కొలువుకు కోడింగ్‌

అంకుర (స్టార్టప్‌) సంస్థలూ, పెద్ద సంస్థలూ తమ నియామకాల్లో అభ్యర్థులను ఎంచుకునేందుకు ఆన్లైన్‌ కోడింగ్‌ పరీక్షలవైపు మళ్ళుతున్నాయి. ఇటీవలి ధోరణి ఇది. ఆ విశేషాలు...
కోడింగ్‌ పరీక్షలకు ప్రాముఖ్యం రావటానికి ప్రధాన కారణం... ఉద్యోగార్థులు ఎక్కువ కావటం, వారిలోనుంచి సరైనవారిని ఎంచుకోవడం కష్టం కావటం. విలువైన సమయం వెచ్చించి అనేకమంది అభ్యర్థులతో ముఖాముఖి పరీక్షలు జరిగినప్పటికీ కావలసిన సామర్థ్యాలు లేక చాలామందిని వెనక్కి తిప్పిపంపాల్సివస్తోంది.
అందుకే కేవలం రెజ్యూమేను చూసి ఇంటర్‌వ్యూకు పిలిచేయకుండా కోడింగ్‌ పరీక్షల ద్వారా ముందు అభ్యర్థులను వడపోస్తున్నారు. అందులో నెగ్గినవారికి మాత్రమే ఇంటర్వ్యూకు అవకాశం ఇస్తున్నారు. ఈ విధానంలో ప్రాథమిక అంశాలపై పట్టులేనివారు మొదటి దశలోనే వెనుదిరుగుతారు.
వీటి ద్వారా ఎక్కువగా లభించే ఉద్యోగాలు అన్ని స్థాయుల్లోని సాఫ్ట్‌వేర్‌ ప్రోగ్రామర్లు/డెవలపర్లు, ఎస్‌డీఈటీ (సాఫ్ట్‌వేర్‌ డెవలప్‌మెంట్‌ ఇంజినీర్స్‌ ఇన్‌ టెస్ట్‌).
ఏ కంప్యూటర్‌ ప్రోగ్రాముకైనా రెండు ప్రధాన లక్ష్యాలుంటాయి.
1) ఇచ్చిన ఇన్‌పుట్‌కి సరైన అవుట్‌పుట్‌ ఇవ్వడం (కచ్చితత్వం)
2) ఇచ్చిన సమస్యను సాధ్యమైనంత వేగంగా పరిష్కరించడం (వేగం). కాంపిటిటివ్‌ ప్రోగ్రామింగ్‌ ఈ రెండు నైపుణ్యాలనూ పరీక్షిస్తుంది.
ఏమిటీ ప్రోగ్రామింగ్‌?
ప్రతి అభ్యర్థికీ కొన్ని ప్రోగ్రామింగ్‌ సమస్యలను ఇస్తారు. ఆ సమస్యలను బాగా అర్థం చేసుకుని నిర్ణీత సమయంలో వాటిని పరిష్కరించడానికి ప్రోగ్రాముని రాయాలి. అభ్యర్థి రాసిన ప్రోగ్రాముని సర్వర్‌కి సమర్పించగానే రహస్యంగా ఉంచిన కొన్ని టెస్టు కేసుల మీద రన్‌ చేస్తారు. వీటన్నిటికీ ఆ ప్రోగ్రామ్‌ సరైన అవుట్‌పుట్‌ ఇవ్వగలగాలి. అప్పుడే ప్రోగ్రాం సరైనదని అర్థం.
ఒక్కో టెస్టు కేసుకు కొన్ని మార్కులుంటాయి. అన్ని టెస్ట్‌ కేసులూ పాసవగలిగితే పూర్తి మార్కులు వస్తాయి. అందులో ఏ ఒక్కటి తప్పు సమాధానం వచ్చినా రాసిన కోడ్‌ సరైంది కాదని అర్థం. ఒక్కోసారి ప్రోగ్రాం చిన్న అవుట్‌పుట్‌కు సరిగా పనిచేసినా ఇన్‌పుట్‌ పరిమాణం పెరిగేకొద్దీ అది బాగా నెమ్మదించవచ్చు. అలాంటపుడు దాన్ని వేగంగా పనిచేసేవిధంగా తిరిగి రాయగలగాలి.
సమస్యను పరిష్కరించడానికి ప్రధానంగా రెండు నైపుణ్యాలు కావాలి.
1) సమస్యను సాధించటానికి సరైన అల్గారిధమ్‌ను రూపొందించడం. సాధారణంగా ఇది ప్రోగ్రామింగ్‌ లాంగ్వేజ్‌తో సంబంధం లేకుండా ఉంటుంది.
2) అల్గారిధమ్‌ని ఏదో ఒక ప్రోగ్రామింగ్‌ భాషలో అమలు చేయటం. సరైన డేటా స్ట్రక్చర్‌ వాడటమూ ఇందులో భాగమే.
ప్రోగ్రామింగ్‌ లాంగ్వేజ్‌ ఎంచుకోవడంలో కూడా అభ్యర్థికి సౌలభ్యం ఉంటుంది. సాధారణంగా సంస్థలు సీ, సీ++, జావా, సీ#, పైథాన్‌ లేదా జావా స్క్రిప్ట్‌ లాంటి ఏ లాంగ్వేజ్‌లోనైనా ప్రోగ్రాం రాసేందుకు అనుమతిస్తాయి. అయితే ఇందులో ఏదో ఒక లాంగ్వేజ్‌ మీద మంచి పట్టు ఉండటం ఉపకరిస్తుంది. వేగంగా టైపు చేయటం కూడా ముఖ్యమే.
ఎలా సిద్ధం కావాలి?
కోడింగ్‌ పరీక్షలో నెగ్గాలంటే సాధనకు మించిన మార్గం లేదు. ఆన్‌లైన్లో తరచూ ఏదో ఒక వేదిక మీద ప్రోగ్రామింగ్‌ పోటీలు జరుగుతూనే ఉంటాయి. వీలున్నప్పుడల్లా వాటిలో పాల్గొనడం, సాధ్యమైనన్ని ప్రోగ్రాములు రాయటం, తెలియని ప్రశ్నలకు పోటీ అయిన తర్వాత శోధించి సమాధానాలు తెలుసుకోవడం చేస్తూవుంటే క్రమంగా వీటిమీద పట్టు వస్తుంది.
ప్రతి ప్రశ్నా ఏదో ఒక ప్రాథమిక భావనను ఆధారం చేసుకునే ఉంటుంది. ఎక్కువ సమస్యలు గణితశాస్త్రం, డేటా స్ట్రక్చర్స్‌, అల్గారిధమ్స్‌ ఆధారంగా తయారుచేసినవే అయివుంటాయి.
సాధారణంగా సమస్యలు ఇచ్చినపుడే దానికి ఎలాంటి ఇన్‌పుట్స్‌ ఇస్తారు, వాటి పరిధి ఎంత అనేది కూడా తెలియజేస్తారు. కాబట్టి ప్రోగ్రాం రాయగానే వారిచ్చిన పరిధిలోని అన్ని ఇన్‌పుట్స్‌కి అది సరిగ్గా పనిచేస్తుందా లేదా అనేది పరీక్షించాలి. ఒకవేళ సరిగ్గా పనిచేయకపోతే అందులో లోపం ఎక్కడుందో కనిపెట్టగలిగే నైపుణ్యాన్ని (డీ బగ్గింగ్‌ స్కిల్‌) అలవర్చుకోవాలి.
విద్యార్థులు బృందాలుగా ఏర్పడి సాధన చేస్తే మరింత ఫలితం కనిపిస్తుంది. ఒకరికి తెలియని పరిష్కార మార్గాలు మరొకరినుంచి అడిగి తెలుసుకోవచ్చు. నేర్చుకోవలసిన అంశాలు విభజించుకుని తర్వాత ఒక్కొక్కరు మిగతావారికి నేర్పించవచ్చు. సాధన మరింత సులభతరమవుతుంది.
కాంపిటీటివ్‌ ప్రోగ్రాంలో పాల్గొనేందుకు ప్రోగ్రామింగ్‌పై పట్టున్న ఎవరైనా అర్హులే. కానీ అమెజాన్‌, గూగుల్‌ లాంటి పెద్ద సంస్థలు బీఈ/బీటెక్‌ లేదా ఎంసీఏ ఉన్నవారిని మాత్రమే అనుమతిస్తున్నాయి. భవిష్యత్తులో ఇది మారే అవకాశం ఉంది.
నేర్పు ఉంటే చాలు...
కాంపిటీటివ్‌ ప్రోగ్రామింగ్‌కి ఉన్న మంచి లక్షణం ఏమిటంటే... విద్యార్థి ఏ కళాశాలలో ఉన్నా, మార్కులు తక్కువైనా ఫరవాలేదు. కేవలం సమస్యలను ప్రోగ్రామింగ్‌ ద్వారా పరిష్కరించగలిగే నేర్పు ఉంటే చాలు. ఏదైనా సంస్థ నుంచి ముఖాముఖికి రమ్మని ఆహ్వానం అయినా అందుతుంది.
ఐఐటీలు, ఎన్‌ఐటీలు లాంటి ప్రతిష్ఠాత్మక సంస్థల నుంచి మాత్రమే అభ్యర్థులను ఎంచుకునే గూగుల్‌, ఫేస్‌బుక్‌, అమెజాన్‌, మైక్రోసాఫ్ట్‌ లాంటి పెద్దపెద్ద సంస్థలు ఆన్‌లైన్‌ వేదికలపై తమ కోడింగ్‌ నైపుణ్యాలను నిరూపించుకున్న ఎవరికైనా... వారు చదివిన కళాశాలతో సంబంధం లేకుండా అవకాశం కల్పిస్తున్నాయి!
సాఫ్ట్‌వేర్‌ అభివృద్ధి చేయడం అంటే కేవలం కోడింగ్‌ కాదు. అందుకనే అభ్యర్థులు కోడింగ్‌ మాత్రమే సాధన చేయకుండా ముందుగా పరిష్కరించాల్సిన సమస్యలను సరిగ్గా అర్థం చేసుకోవడం, వాటిని విశ్లేషించి సరైన అవగాహనకు రావడం, ప్రాజెక్టుల రూపకల్పన (డిజైన్‌), భవిష్యత్తులో మార్పులకు అనుగుణంగా ఇతరులు చదివి అర్థం చేసుకోగలిగేలా కోడ్‌ రాయడం... ఇవన్నీ ముఖ్యమే.
కొన్ని కాంపిటీటివ్‌ ప్రోగ్రామింగ్‌ సైట్లు
1. http://hackerrank.com
2. http://hackerearth.com
3. http://codechef.com
4. http://topcoder.com
5. http://codeforces.com
ప్రతి సంవత్సరం గూగుల్‌ నిర్వహించే కోడింగ్‌ కాంపిటీషన్‌ గూగుల్‌ కోడ్‌ జామ్‌: https://code.google.com/codejam/
ఫేస్‌బుక్‌ నిర్వహించే హ్యాకర్‌ కప్‌: https://www.facebook.com/hackercup/
For High school and +2 students, International Olympiad in Informatics (http://www.ioinformatics.org/index.shtml)
For College students, ACM ICPC (International Collegiate Programming contesst) https://icpc.baylor.edu/)
ఇవే కాకుండా భారత్‌లో అనేక కళాశాలల్లో ఇలాంటి పోటీలు జరుగుతూవుంటాయి.
పుస్తకాలు
* The Algorithm Design Manual by Steven Skiena
* Programming challenges by Miguel Revilla, Steven S. Skiena
* http://www.comp.nus.edu.sg/~stevenha/myteaching/competitive_programming/cp1.pdf
(ఉచితంగా డౌన్‌లోడ్‌ చేసుకోవచ్చు)


Back..

Posted on 26-04-2016