నేను నా మొదటి వెబ్‌సైట్‌ను నిర్మించడానికి కూర్చున్నప్పుడు, ఆ ఉత్సాహం నిజంగా అద్భుతంగా ఉంది. కోడింగ్ నేర్చుకోవడమే కష్టమైన పని అని నేను అనుకున్నాను—ట్యాగ్‌లను గుర్తుంచుకోవడం, ఫంక్షన్‌లను అర్థం చేసుకోవడం, సింటాక్స్‌ను సరిగ్గా రాయడం వంటివి. నేను పొరబడ్డాను. కోడ్ రాయడం చాలా సులభమైన పని అని తేలింది. అసలైన సవాలు ఏమిటంటే, ఆ కోడ్ లైన్లను ప్రజలు ఎటువంటి గందరగోళం లేదా అసహనం లేకుండా ఉపయోగించుకోగలిగే విధంగా మార్చడం. డెవలప్‌మెంట్ అంటే ఒంటరిగా టైప్ చేయడం మాత్రమే కాదు, మీ టెక్నాలజీ స్టాక్ (stack) గురించి పట్టించుకోని మనుషుల సమస్యలను పరిష్కరించడం అని ఆ మొదటి ప్రాజెక్ట్ నాకు నేర్పింది. నేను చేసిన కొన్ని తప్పుల వల్ల నా సమయం, నిద్ర మరియు ప్రారంభ వినియోగదారులు (users) కోల్పోవాల్సి వచ్చింది. వాటిలో ఐదు ముఖ్యమైన తప్పులు ఇక్కడ ఉన్నాయి.

షిప్పింగ్ చేయకముందే పరిపూర్ణత కోసం వెతకడం (Chasing Perfection Before Shipping)

నేను ఏదైనా పరిపూర్ణమైనది అని పిలవడానికి అర్హత రాకముందే, ఆ 'పర్ఫెక్షన్ ట్రాప్'లో పడిపోయాను. ఒకే షేడ్ కోసం హెక్స్ కోడ్‌లను మార్చడం, బోర్డర్-రేడియస్ (border-radius) విలువలను ఎనిమిది పిక్సెల్స్ నుండి పది పిక్సెల్స్‌కు మార్చడం, మరియు ఒక్క సందర్శకుడు కూడా పేజీని చూడకముందే హెడ్‌లైన్ కాపీని ఐదుసార్లు తిరిగి రాయడం వంటి పనుల కోసం నేను సాయంత్రాన్ని గడిపాను. నేను నా పనిని మెరుగుపరుస్తున్నానని నన్ను నేను నమ్మించుకున్నాను, కానీ నిజానికి నాణ్యత పేరుతో నేను పనులను వాయిదా వేస్తున్నాను. ఫలితం? నేను మూడు వారాల ఆలస్యంగా లాంచ్ చేశాను. సైట్ చివరకు లైవ్ అయినప్పుడు, నేను ఎంతగానో శ్రమించిన బటన్ కర్వ్ (button curve) గురించి ఒక్క వినియోగదారుడు కూడా ఏమీ అనలేదు. ఫారమ్ ఎటువంటి లోపాలు లేకుండా సబ్మిట్ అవుతుందా లేదా అనేదే వారికి ముఖ్యం.

ఆ పాఠం నా మనసులో బలంగా నాటుకుపోయింది: ముందుగా మీ పనిని విడుదల చేయండి (ship your work). మీకు అందని ఫీడ్‌బ్యాక్ ఆధారంగా మీరు మార్పులు చేయలేరు. నిర్మాణాన్ని బలంగా ఉంచండి, ప్రధాన ఫంక్షన్‌లు సరిగ్గా పనిచేస్తున్నాయని నిర్ధారించుకోండి మరియు దానిని లైవ్ చేయండి. మెరుగుదలలు (Refinement) వెర్షన్ 2 కి సంబంధించినవి, వెర్షన్ 0 కి కాదు. ఏది నిజంగా పాడైపోయింది మరియు ఏది కేవలం మీరు ఊహించుకున్న లోపం అనేది మీ వినియోగదారులే మీకు చెబుతారు.

అతి త్వరగా, అతిగా నిర్మించడం (Building Too Much Too Soon)

నా ప్రాజెక్ట్ పుస్తక సిఫార్సులను పంచుకోవడానికి ఒక సాధారణ సాధనంగా ప్రారంభమైంది. అదే దాని ప్రధాన ఉద్దేశ్యం. రెండో వారం నాటికి, నేను యూజర్ లాగిన్ సిస్టమ్, డైనమిక్ రేటింగ్ గ్రాఫ్, నెస్టెడ్ కామెంట్ సెక్షన్, డార్క్-మోడ్ టోగుల్ మరియు ఈమెయిల్ డైజెస్ట్‌లను కూడా ప్లాన్ చేసేశాను. వాటిలో ఏదీ సరిగ్గా పనిచేయలేదు. లాగిన్ ప్రక్రియ సగం సమయం విఫలమయ్యేది. గ్రాఫ్‌లో ప్రదర్శించడానికి సరైన డేటా లేదు. కామెంట్ సెక్షన్‌లో డూప్లికేట్లు వచ్చేవి. ఇంతలో, సైట్ ఉనికికి అసలైన కారణమైన ప్రాథమిక బుక్-లిస్టింగ్ ఫీచర్, సరిగ్గా పూర్తికాని ఇతర ఫీచర్ల కింద నలిగిపోయింది, ఇది హోమ్‌పేజీకి వచ్చే ఎవరినైనా అయోమయానికి గురిచేసేది.

పది పనులను సరిగ్గా చేయలేని సంక్లిష్టమైన సైట్ కంటే, ఒక సమస్యను చక్కగా పరిష్కరించే సాధారణ సైట్ ఎప్పుడూ మెరుగ్గా ఉంటుంది. మీరు మరో లైన్ కోడ్ రాయకముందే, మీ ఉత్పత్తి వినియోగదారుడి కోసం చేసే ఒకే ఒక్క పనిని నిర్వచించండి. దానిని నిర్మించండి. దానిని పరీక్షించండి. అది నమ్మదగినది అయ్యే వరకు మెరుగుపరచండి. వినియోగదారులు నిజంగా డాష్‌బోర్డ్ లేదా సోషల్ ఫీడ్ కావాలని అడిగితే, అప్పుడు మీరు దానిని జోడించవచ్చు. అప్పటి వరకు, కేవలం ఒక పదునైన వంట గది కత్తి (kitchen blade) సరిపోయే చోట, స్విస్ ఆర్మీ నైఫ్ (Swiss Army knife) లాంటి సంక్లిష్టమైన వస్తువును తయారు చేయాలనే కోరికను అదుపులో ఉంచుకోండి.

రూపం వెనుక ఉన్న అనుభవాన్ని విస్మరించడం (Ignoring the Experience Behind the Looks)

అందమైన ఫాంట్లు మరియు స్టైలిష్ కలర్ ప్యాలెట్‌ను ఎంచుకోవడానికి నేను గంటల కొద్దీ సమయం వెచ్చించాను. హీరో సెక్షన్ (hero section) బ్యాక్‌గ్రౌండ్ గ్రేడియంట్ గురించి నేను అతిగా ఆలోచించాను. ఆ తర్వాత సైట్‌ను ఉపయోగించడం వల్ల కలిగే అనుభవాన్ని నేను విస్మరించాను. కంప్రెషన్ చేయని ఫుల్-రెజల్యూషన్ PNGలను ఉపయోగించడం వల్ల పేజీలు చాలా నెమ్మదిగా లోడ్ అయ్యేవి. నావిగేషన్ లేబుల్స్ చూడటానికి బాగున్నప్పటికీ, లింక్ ఎక్కడికి తీసుకెళ్తుందో అర్థం చేసుకోవడానికి ప్రజలు ఊహించాల్సి వచ్చేలా ఉండేవారు. బటన్లు సన్నగా, స్టైలిష్‌గా ఉన్నప్పటికీ, ఫోన్ స్క్రీన్‌పై నొక్కడానికి చాలా చిన్నవిగా ఉండేవి.

విజువల్ డిజైన్ మరియు యూజర్ ఎక్స్‌పీరియన్స్ (user experience) ఒకటే కాదని నేను కష్టపడి నేర్చుకున్నాను. బ్యానర్ ఇమేజ్ కోసం సందర్శకులు కొన్ని సెకన్ల పాటు వేచి ఉండాల్సి వస్తే లేదా రెండు క్లిక్‌ల కంటే తక్కువ సమయంలో మిమ్మల్ని ఎలా సంప్రదించాలో అర్థం కాకపోతే, అందమైన ఇంటర్‌ఫేస్ కూడా విఫలమవుతుంది. ప్రతి ఇంటరాక్షన్‌ను సరళంగా ఉంచండి. నావిగేషన్‌ను సాధారణ భాషలో ఉంచండి. మీ అసెట్స్‌ను (assets) కంప్రెస్ చేయండి. ట్యాప్ టార్గెట్లు (tap targets) తగినంత పెద్దవిగా ఉన్నాయో లేదో తనిఖీ చేయండి. వేగం మరియు స్పష్టత అనేవి చివరలో జోడించే బోనస్‌లు కావు; అవి మిగిలినవన్నీ నిలబడే పునాదులు.

నా సొంత మెషీన్‌లో మాత్రమే పరీక్షించడం (Testing Only on My Own Machine)

నేను మొత్తం సైట్‌ను ఒకే లాప్‌టాప్, ఒకే బ్రౌజర్ మరియు ఒకే స్క్రీన్ రిజల్యూషన్‌లో అభివృద్ధి చేశాను. నా మెషీన్‌లో అంతా అద్భుతంగా కనిపించింది. కానీ ఒక స్నేహితురాలు దానిని తన ఐఫోన్‌లో (iPhone) ఓపెన్ చేసినప్పుడు, బటన్లు ఒకదానిపై ఒకటి రావడం, టెక్స్ట్ కంటైనర్ నుండి బయటకు రావడం వంటివి జరిగాయి. మరొక స్నేహితురాలు మాక్ (Mac) లో సఫారి (Safari) ఉపయోగించినప్పుడు, మొత్తం CSS గ్రిడ్ లేఅవుట్ అర్థం కానంతగా విచ్ఛిన్నమైపోయింది. నాకు పనిచేస్తే అందరికీ పనిచేస్తుందని నేను నిశ్శబ్దంగా అనుకున్నాను. ఆ ఊహ వల్ల నేను ఒక వారాంతం మొత్తం కంగారుగా తప్పులను సరిదిద్దడం (hotfixes) మరియు క్షమాపణలు చెప్పడం వంటి పనులతో గడపాల్సి వచ్చింది.

నా తప్పును మీరు చేయకండి. మీరు పబ్లిష్ చేసే ముందు, మీ సైట్‌ను Chrome, Firefox, Safari మరియు Edge బ్రౌజర్‌లలో పరీక్షించండి. వివిధ వెడల్పులు కలిగిన ఫోన్‌లు, టాబ్లెట్‌లు మరియు లాప్‌టాప్‌లను అనుకరించడానికి (simulate) మీ బ్రౌజర్ డెవలపర్ టూల్స్‌ను ఉపయోగించండి. ప్రతి లింక్‌ను క్లిక్ చేయండి. ప్రతి ఫారమ్‌ను సబ్మిట్ చేయండి. విండో పరిమాణాన్ని మార్చి చూడండి. టెస్టింగ్ సమయంలో మీరు గుర్తించే బగ్స్ (bugs), వినియోగదారులు లైవ్ సైట్‌లో (production) చూసే బగ్స్ కంటే చాలా తక్కువ నష్టాన్ని కలిగిస్తాయి.

ఫీడ్‌బ్యాక్‌ను వ్యక్తిగత దాడిలా భావించడం (Treating Feedback Like a Personal Attack)

ప్రాజెక్ట్‌ను పంచుకోవడం నన్ను ఆందోళనకు గురిచేసింది. ప్రజలకు అది నచ్చకపోతే ఏమవుతుంది? నేను సమయం వెచ్చించిన ఒక ఫీచర్‌ను తీసివేయమని ఒక సహోద్యోగి సూచించినప్పుడు