Software Engineer කෙනෙක් වෙන හරි පාර
මේ වෙනකොට Software Engineer කියන්නෙ ලෝකෙ වැඩිම ඉල්ලුමක් තියෙන රැකියාව වගේම ගොඩක් අය ඉක්මනටම Software Engineer කෙනෙක් වෙන්න ගිහින් අමාරුවෙත් වැටෙන රැකියාව.අද වෙනකොට Software Engineer කෙනෙක් වෙන්න සම්පූර්ණයෙන්ම නොමිලේ තියෙන Online Course/ Degree තියෙනවා, මාස 3, 6 Course තියෙනවා. මිලියන ගනන් සල්ලි ගෙවල ඉගෙන ගන්න පුලුවන් Degree තියෙනව. ඉතින් ඔය කොයි විදියට ගියත් අන්තිමට රියල් Software Engineer කෙනෙක් වෙන්න නන් අපි හැමෝටම අන්තිමට යන්න වෙන්නෙ එකම පාරක. අන්න ඒ පාර ගැන තමා මේ ලිපියෙන් මම කතා කරේ.
කොහොමත් මම මේ software ෆීල්ඩ් එකට ආව කාලෙ ඉදලම වගේ මෙහෙම කෝස් එකක් තියෙනව, මෙහෙම Degree එකක් තියෙනවා ඒක හොදද අහනව ගොඩක් අය. ඔව් හොදයි කියල නිකම්ම කියන්න බැරි මොනවාම හරි පොඩි හරි අවුලක් උනොත් වැඩේට එන්ටර් වෙන කෙනාගෙ සම්පූර්ණ ජීවිත කාලයෙන්ම අවුරුද්දක් දෙකක් නාස්ති කරන්න අන්තිමට මාත් උදව් වෙලා නිසා. ඒ නිසා මම ඒ හැමෝටම දුන්නෙ හරිම පරිස්සමට වැඩේ කරගන්න හැටි ගැන, ඒකම තමා මම මේ ලිපියෙන් කිව්වෙත්. ලිපිය ටිකක් දිගයි ඒත් කියවන වෙලාව අපතේ යන එකක් නෑ.
19 වන සියවසේදී ලොව පළමු පරිගණක වැඩසටහන Ada Lovelace විසින් නිර්මාණය කිරීමෙන් ශතක තුනකට පසු පරිගණක වැඩසටහන් එහෙමත් නැතිනම් Software මිනිසාගේ ජිවන තත්වය ඉහළ දැමීමට ඉතාමත් විශාල කාර්යභාරයක් ඉටුකරමින් සිටී. අප එදිනෙදා භාවිතා කරන අත් ඔරලෝසුවේ සිට අති නවීන න්යෂ්ටික බලාගාර දක්වා සේවාව සපයන මෙම මෘදුකාංග හෙවත් software ක්රියාත්මක වන්නේ සංකීරණ Electronic පරිපථ රාශියක එකතුවක් ලෙස නිපදවා ඇති පරිගණක තුළයි. පරිගණකයක් කොතරම් බලසම්පන්න ගණන හැකියාවලින් යුක්ත වුවත් මෘදුකාංග නොමැතිව ඒවායින් ගත හැකි කිසිදු ප්රයෝජනයක් නැත. සැබැවින්ම Software යනු පරිගණකයේ මොළය ලෙස සැලකුවද කිසිදු වරදක් නැත. දෙවන ලෝක යුද්දයෙන් පසුව සීග්ර වර්ධනයක් පරිගණක විද්යාව ලබාගන්නා අතර . 70, 80 සහ 90 දශක වල IBM, Apple, Microsoft වැනි ව්යාපාරික සමාගම්වල ඇතිවූ තියුණු තරගකාරිත්වය සමග මෙතෙක් විද්යාගාර සහ යුධමය කටයුතු වැනි දෑ සදහා පමණක් සීමාවී තිබූ පරිගණක යන්ත්ර සීග්රයෙන් පෞද්ගලික පරිහරණයට එක්වන්නේ ලෝකයටම අලුත් අත්දැකීමක් එකතු කරමිනි. පරිගණක වල සිදුවන වර්ධනයද සමග ඒවාට අවශ්ය software සදහා ඇති ඉල්ලුමද ඉහල යන අතර ඒ සදහා අලුත් උප ප්රධාන විෂයක්ද ඉංජිනේරු විෂය තුල නිර්මාණය වන්නේ Software Engineering ලෙසයි. වර්තමානයේ ඉතාමත් ඉහල ඉල්ලුමක් ඇති මෙම රැකියා ක්ශේත්රයේ ඉන්ජිනේරුවකුට කිසිදු සීමාවකින් තොරව ඩොලර් මිලියන ගණනින් උවද ඉපයිමට හැකියාව ඇත්තේ කොතරම් තරගකාරී උවත් හැකියාවට සැබවින්ම ඉඩ කඩ සලසා ඇති නිසා වෙනි.
ඉංජිනේරු විෂය යනු ලෝකයේ ඇති අවශ්යතාව අනුව විවිධ තාක්ෂණික උපකරණ, පද්ධති හෝ ක්රියාවලින් නිර්මාණය කිරීමේ සහ නිපදවීමේ අධ්යයනමය කේෂත්රය සහ වෘත්තිමය කේෂ්ත්රයයි. ඉංජිනේරු විෂය ක්ශේත්රය උප කොටස් ගණනාවකට බෙදා වෙන් කරගනු ලැබ ඇත . යාන්ත්රික දැනුම මුලිකව භාවිතා කරමින් විසදුම් ලබාදෙන ඉංජිනේරු විෂය Mechanical Engineering ලෙසද, රසායන විද්යව මුල් කරගන්නා ඉංජිනේරු විෂය Chemical Engineering ලෙද පරිගණක විද්යාව මූලික කරගෙන විසදුම් ලබාදෙන ඉන්ජිනේරු විෂය Computer Engineering ලෙසද හදුන්වාදෙයි. Computer Engineering විෂයේදී විසදුම් ලබාදීමට Hardware සහ Software කොටස් දෙකම භාවිතා කරනු ලැබූවත් තවත් උප ප්රධාන කොටසක් ලෙස සලකණු ලබන Software Engineering විෂය කේශ්රතයේදී Software සම්බන්ධ විසදුම් පමණක් ලබා දෙනු ලබයි
සමාන්යෙන් ඕනෑම විෂයක ප්රවීණයෙකු වීමට නම් එම විෂය ගැන ඉතා ඉහල දැනුමක් සහ පළපුරුද්දක් තිබීම අතවශ්ය වන අතර එය ඉංජිනේරු විෂයක් සදහාද අතවශ්ය කාරණාවක් වන්නේ බොහෝ විට ඉංජිනේරුවරයෙකු ලෙස හදුන්වන තැනත්තන් විසින් විෂය පිලිබද සාමන්ය දැනුමක් ඇති අයට වඩා කාර්යක්ෂම සහ ක්රමවත් පිලිතුරක් ලබා දෙනු ඇති බවට ඇති සමාජ සම්මතයන් නිසාවෙනුයි. මෙහි වටිනාකම අපිට පැහැදිලිව දැක ගත හැකි අවස්ථාවක් වන්නේ පාලම් ගොඩනැගිලි ආදිය නිර්මාණය සදහා Civil ඉංජිනේරුවන්ගේ සභභාගීත්වය සලකා බැලීමේදීය. ඔවුන් විසින් ලබාදෙන විසදුම විශ්වාසයෙන් යුතුව භාවිතා කල හැකි වන්නේ ඔවුන් ඒ සදහා ලබාගෙන ඇති ප්රවීණත්වය ගැන අපට කිසිදු සැකයක් නොමැති වීම නිසාවෙනි. බොහෝ රටවල් ඉංජිනේරුවකු ලෙස පළපුරුද්ද සහ ක්රමවත් ඉගෙනුම් ක්රියාවලියක් අනුගමනය කර නොමැති නම් එය නීතිමය වරදක් ලෙසද සලකනු ලබන්නේ තව දුරටත් ඉංජිනේරු වෘත්තිය සම්බන්ධව ඇති විශ්වාසය තහවුරු කිරීමටයි. ලංකාවේදීද IESL ආයතනය ඉන්ජිනේරු කේශ්ත්රය තුල අවශ්ය නියාමනයන් සිදු කරනු ලබන්නේ මෙම ගුණාත්මකභාවය ආරක්ෂා කිරීම වෙනුවෙනුයි.
ඉංජිනේරු විෂයයන්ගේ උපප්රධාන විෂයක් වන Software ඉංජිනේරු විෂය සදහාද එවැනි ගුණාත්මක බාවයක් සහ ඉංජිනේරු ආචාර ධර්ම පද්ධතියක ඇති නමුත් අන් කිසිදු විෂයක නැති ආකාරයේ පහසුවක් මෙහි ඇත්තේ ඒ සදහා වැය වන මූලික වියදම් ගැන සලකා බැලීමේදීය. සාමාන්යෙන් අනික් ඉංජිනේරු විෂයන් ඉගෙනීමට ඔබට ඒ සදහාම නිමවූ විශ්වවිද්යාලකයකට මුදල් ගෙවමින් හෝ ශිෂ්යත්වයක් හරහා හෝ ඇතුලත් විය යුතු වුවන් මෙහිදී ඔබට සාමාන්ය ප්රමාණයේ පරිගණකයක් සහ අන්තර්ජාල පහසුමකමක් භාවිතාවෙන් ඉගෙනීම් ක්රියාවලිය ආරම්භ කල හැකිය. එමෙන්ම ඕනෑ තරම් ඉහල ගුණාත්මක බවකින් යුක්ත දේශන සටහන්, ප්රායෝගික ක්රියාකාරකම් වැනි දෑ අන්තර්ජාලයෙන් සපයා ගත හැකි අතර ඔබට ඒ සදහා සමහරවිට කිසිදු මුදලක් වැය කිරීමට සිදු නොවනු ඇත. මෙම හේතුව නිසාවෙන් ඉතාමත් දැඩි තරගකාරිත්වයක් සහ අලුත් වන දැනුම ඇති software ක්ශෙත්රය තුල software ඉංජිනේරුවන් කුමන තරාතිරමක සිටියත් සෑම විටම දැනුම අලුත් කරගත යුතු වන්නේය. මෙම නම්යශීලීතාව නිසාවෙන් මෙහි ඇති අවාසි සහගත තත්වය නම් බොහෝ දෙනෙකුට මෘදුකාංග කේශ්ත්රය තුල ගමන් කල යුතු නියම මාර්ගය හදුනා ගැනීමට නොහැකිවීමෙන් නාම මාත්රිකව පමණක් Software ඉංජිනේරුවකු වන අවස්ථා රාශියක්ද නිරීක්ෂණයට ලක් කිරීමට හැකි වීමයි. සෑම විටම Software ඉංජිනේරුවකු ලෙස නම් කරනු ලබන තනතුරු ඇති පුද්ගලයන් නියමාකාරයෙන් ඉංජිනේරුවකු සතු විය යුතු ලෙස සම්මත කරගෙන ඇති දැනුම සහ අත්දැකීම ලබාගැනීම සහ ඒවා නිරන්තරයෙන් අලුත් කරගැනීම ඉතාමත් වැදගත්ය.
Software ඉංජිනේරුවකු වීම සදහා ඔබට අවශ්ය විෂය දැනුම සහ ප්රායෝගික දැනුම ලබා ගැනිමට මේ වනවිට ක්රමවේද රාශියක් තිබෙන නමුත් පොදුවේ ඒ සියලුම පාඨමාලාවල මූලික සැකස්ම පහත ආකාරයට වෙන් කරගත හැකිය.
- Programming Languages: මෙහිදී ඔබට Python, Java, C++ වැනි පරිගණක ක්රමලේඛණ බාශාවක් සමහ ඒවා භාවිතාවෙන් software නිර්මාණය කරන ආකරය ගැන ඉගෙන ගතයුතු වේ.
- Data Structures and Algorithms: මෙහිදී මූලිකවම ඔබ ලියන ක්රමලේඛණ ඉතාමත් කාර්යක්ෂම සහ එලදායි ලෙස ක්රියාත්මක වන ආකාරයට නිර්මාණය කිරීම සම්බන්ධව ඉගෙනීමට සිදුවේ.
- Software Development Methodologies: Software Development වලදී භාවිතා කලයුතු Agile, Scrum, Waterfall වැනි ක්රමවේදයන් ගැන මෙහිදී ඉගෙන ගතයුතු වේ.
- Databases: Software නිර්මාණය කිරීමේදී ඉතාමත් වැදගත් කාර්ය බාරයක් ඉටු කරන දත්ත පද්ධති කළමණාකරණය ගැන අවශ්ය වන මූලික දැනුම මෙහිදී ලබාගත යුතු වන අතර එහිදී SQL භාවිතාව සහ Relational databases සහ NoSQL databases සම්බන්ධ දැනුම ලබාගත යුතු වේ.
- Operating Systems: Software ක්ශෙත්රය තුල තවත් වැදගත් මෙහෙයක් ඉටු කරන Linux, Windows සහ MacOS වැනි මෙහෙයුම් පද්ධති ගැන ඉගෙන ගත යුතු වන්නේ ඒවා අප නිර්මාණය කරන Software සදහා වැදගත් මෙහෙයක් ඉටු කරලන නිසාවෙනි
- Version Control Systems: Software නිර්මාණය කිරීම සෑම විටම තනි පුද්ගල නිර්මාණයක් නොවන අතර සමාන්යෙන් ඒ සඳහා කීපදෙනෙකු සම්බන්ධ වන අතර එය ඉතාමත් පරිස්සමින් හසුරුවා ගත යුතු තත්ත්වයක් වන්නේ එමගින් ඔබ විසින් නිර්මාණය කරනු ලබන මෘදුකාගයේ quality එක තීරණය කරන නිසාවෙනි. එසේම සෑම විටම අලුත් වන නිර්මාණයක් වන Software වල සිදුවන වෙනස්කම්ද ක්රමානුකූලව හසුරවාගන්නා ආකාරය සහ ඒවාට අවශ්ය වන Software ගැනද මෙහිදී ඉගෙනීමට අවස්තාව ලැබෙයි.
- Software Testing and Debugging: ඔබ විසින් නිර්මාණය කරනු ලබන Software වල Testing සහ ඒවායේ ඇති අඩුපාඩු සෙවීම (Debug) සදහා අවශ්ය වන මූලික දැනුම මෙහිදී ලබගත යුතු වේ.
- Problem-Solving Skills: Software නිර්මාණය කිරීමේදී ඉතාමත් වැදගත් කාර්යයක් වන්නේ ඒවා විසදීම සදහා සිතිය යුතු ආකාරය සහ ප්රශ්නවල ලබා දෙන විසදුම් වල ඇති කාර්යක්ෂමතාවයයි.
- Understanding of Computer Networks: පරිගණක ජාලය කරනය ගැන මූලික දැනුම මෙහිදී ලබා ගැනීම ඉතාමත් අතවශ්ය වන්නේ මේ වනවිට බොහෝ Software අන්තරජාලය හරහා ක්රියාත්මක වන ලෙස නිපදවා තිබීම සහ එය සෑම විටම ඉතාමත් කාර්යක්ෂම වන නිසාවෙනුයි.
- Web Technologies: HTML, CSS, JavaScript, ගැන මෙන්ම ඒවා භාවිතා කර නිර්මාණය කර ඇති Websites සහ Web Apps ගැන ඉගෙන ගැනීම මෙහිදී සිදුකරනු ලබන අතර මෙය theory දැනුමට අමතරව ප්රයෝගික දැනුමද ලබා ගත යුතු විෂය කොටසකි.

