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 දැනුමට අමතරව ප්රයෝගික දැනුමද ලබා ගත යුතු විෂය කොටසකි.
දැනුම ලබා ගන්නේ කොහොමද?
වර්තමානය වනවිට මෙම මූලික දැනුම ලබාගැනීමට ප්රධාන ක්රමවේදයන් දෙකක් භාවිතා කරනු ලබන්නේ ක්ශේත්රය තුල ඇති දැඩි තරගකාරිත්වය නිසාවෙනුයි. සාම්ප්රදායික ආකාරයට එය සිදු කිරීමට නම් ඔබට A/L වලින් පසු පිලිගත් මූලික පරිගණක උපාධියකින් හෝ ඒ හා සමාන දැනුම ඇති උපාධියකින් මෙම දැනුම ලබාගත හැකිය. එවැනි උපාධි පාඨමාලා වලින් ක්රමානුකූලව ඔබට අවශ්ය මූලික දැනුම දේශන සහ ප්රායෝගික ක්රියාකාරකම් මගින් ලබාදෙන අතර විභාග සහ පරීක්ෂණ නිරන්තරයෙන්ම ලබාදෙමින් ඔබ ලබාගන්න දැනුම නිරන්තරයෙන්ම පරීක්ෂාවට ලක් කරනු ලබයි.
ඉගෙනුම් ක්රියාවලිය අවසානයේ ඔබ විසින් ලබාගත් දැනුම භාවිතා කරමින් Software Project එකක් නිර්මාණය කලයුතු අතර එම ව්යාපෘතිය ඉතාමත් වැදගත් වන්නේ එමගින් ඔබ ලබාගත් දැනුම භාවිතා කිරීමට ඇති හැකියාව පරීක්ෂා කිරීමට හැකිවීම නිසාවෙනි. එමෙන්ම ඔබගේ පළමු රැකියාව ලබාගැනීම සදහා මෙම ව්යාපෘතිය මහගු පිටුවහලක් වන්නේය. කෙසේ නමුත් මෙම ක්රමවේදය සදහා ඔබට අවම වසර තුනක කාලයක් ගතවන අතර ඒ සදහා සැලකිය යුතු මුදලක්ද වියදම් කිරීමට සිදුවන්නේය.
නමුත් මේ වනවිට බොහෝ ඉගැනුම් ආයතන කෙටි කාලින පාඨමාල නිර්මාණය කර ඇත්තේ Software ඉංජිනේරු ලෙස රැකියාව ආරම්භ කිරීමේ ක්රමවේදය ඉක්මන් සහ පහසු කිරීමටයි. සමහරක් එවැනි පාඨමාලා වලට මූලික සුදුසුකම් කිසිවක් නොසලකනු නොලබයි. අතර ඒවැනි පඨමාලා වල වරදක් නොමැති උවත් මේ වනවිට නියාමනයකින් තොරව එවැනි ආයතන දහස් ගණනක් බිහීවී ඇති නිසාවෙන් ඒවා මගින් පවත්වන පාඨමාල වල ගුණාත්මක භාවය පිලිබදව සැලකිය යුතු ගැටලුවක් මේවනවිට නිරීක්ෂණය කල හැකිය.
ගුණාත්මක පාඨමාලාවක් තෝරා ගන්නේ මෙහෙමයි
ඕනෑම ඉගැනුම් පාඨමාලවක් තෝරාගැනීමේදි ඔබ සැලකිලිමත් විය යුතු විශේෂ කාරණාව වන්නේ ඒවායේ උගන්වන දේවල් වල ගුණාත්මක බාවයය සහ ඒවාට ඇති වෘත්තිමය පිළිගැනීමයි. මේ සදහා විශ්වවිද්යාල ප්රතිපාදන කොමිශන් සභාව (UGC) විසින් Sri Lanka Qualification Framework (SQLF) ලෙස හදුන්වන ලකුණු ලබාදීමේ ක්රමවේදයක් හදුන්වා දී ඇති අතර එමගින් ඔබට තෝරාගත් පාඨමාලවල තත්වය සහ ඒවායේ මට්ටම ගැන අදහසක් ලබාගත හැකි අතර ඒ ගැන වැඩි විස්තර www.ugc.ac.lk හරහා ලබා හැකිය.
මෙවැනි ආකරයට UGC පිලිගැනීමක් නොමැති එහෙත් ඉතාමත් ඉහල ගුණාත්මක භාවයක් ඇති පාඨමාලවන්ද බොහොමයක් ඇති අතර එවැනි පාඨමාලවක් තෝරාගැනීම සදහා එම පාඨමාලාවන්ට පෙර සහභාගිවූවන්ගේ අදහස් විමසීම, ඒවාගේ ඉගැන්නුම් ක්රියාවලිය ගැන සොයා බැලීම, උගන්වන ගුරුවරුන්ගේ සුදුසුකම් ආදීය නිරීක්ෂණය කිරීම ආදිය සිදුකල හැකිය, එවැනි ස්වයන් අධ්යනයක් සෑම විටම තමන් සහභාගී වීමට අපේක්ෂා කරන පාඨමාලවන් සදහා සිදු කිරීම ඉතාමත් වැදගත් වන්නේ මෙය ඔබගේ Software ඉංජිනේරු වෘත්තියේ වැදගත් කඩයිමක් වන නිසාවෙනි.
මූලික දැනුම ලබා ගත්තට පස්සේ...
මෙම මූලික දැනුම ලබාගත් පසු ඔබ විසින් කළයුතු වන්නේ එම දැනුම ප්රායෝගිකව භාවිතා කිරීමේ ක්රමවේද ගැන ඉගෙන ගැනිමයි. මෙය සැබවින්ම ඒවා සමග වැඩ කරමින් ලබා ගතයුතු දැනුමක් නිසාවෙන් ඒ වෙනුවෙන් ඔබට ආධුනිකයෙකු ලෙස Software Engineering ක්ශේත්රයටඑකතු විය යුතුය. එහිදී ඔබට ලැබෙන Job title එක වන්නේ Intern Software Engineer වන අතර එය සෑම විටම Senior Software Engineer කෙනෙකුන් හෝ කීපදෙනෙකු විසින් අධීක්ශණය කරනු ලබන තනතුරකි. බොහෝ ආයතන මේ තනතුර සදහා ඉතාමත් සුලු වැටුපක් ලබාදෙන මුත් ඔබගේ පුහුණුව සදහා ඔවුන් විසින්ද විශාල දායකත්වයක් ලබා දෙයි.
ඔබ විසින් මෙහිදී software development ආයතනයක ක්රියාකාරීත්වය,එහි ක්රමවේදයන් ගැනද ක්රමවත් දැනුමක් ලබාගනී. ඔබ විසින් මූලික දැනුම ලබාගැනීමට තෝරගත්තේ කෙටිකාලීන පාඨමාලවක් නම් ඔබට මෙම Intern Software Engineering තනතුරෙහි වැඩි කාලයක් ගත කල යුතු වන අතර ඒහිදී ඔබට තව දුරටත් ඔබගේ දැනුම වර්ධනය කරගැනීම වෙනුවෙන් උපාධි පාඨමාලවක් Part Time ලෙස ඉගෙන ගැනීම කලයුතු වන්නේ පරිගණක විද්යාව හෝ ඒ වැනි උපාධියක් සදහා ඉගෙනීම තුලින් ලබාගන්න දැනුමද ඉදිරිකටයුතු සදහා අතිශයින්ම වැදගත් වන නිසාවෙනි.
Intern කෙනෙක් උනාට පස්සේ?
මෙලෙස ආධුනික software engineer කෙනෙක් ලෙස සේවය කිරීමෙන් පසු ඔබට සහයක software engineer කෙනෙකු ලෙස උසස්වීම් ලබාගත හැකි වන අතර ඔබ විධිමත් උපාධි පාඨමාලවකින් මූලික දැනුම ලබාගත් අයෙක් නම් වසරක් වැනි කෙටිකාලයක් තුලදී ඔබට මෙම උස්ස්වීම ඉල්ලා සිටිය හැකිය. එසේම මෙහිදී Frontend, Backend, Fullstack, Game Development, System Development Engineering ආදී ලෙස විශාල අනු කොටස් ගණනාවක් ඇති Software ඉන්ජිනේරු ක්ශේත්රය ඔබට විශේෂයෙකු වීමට අවශ්ය උප ප්රධන කොටසසදහා වන Associate Software Engineer තනරතුරක් තෝරාගත හැකිය.
Frontend ඉංජිනේරුවන් විසින් software එකක user interface නිර්මාණය කිරීම, Backend ඉන්ජිනේරුවන් විසින් software එකක දත්ත හැසිරවීමට අදාල ක්රමලේඛ සකස් කරන අතර fullstack ඉන්ජිනේරුවන් විසින් මෙම කොටස් දෙකටම අවශ්ය මෘදුකාංග කොටස් නිර්මාණය කරනු ලබයි, එමෙන්ම Game Development ඉන්ජිනේරුවන් විසින් Computer Games, Mobile Games නිර්මාණය කිරීම සිදු කරනු ලබයි.
මෘදුකාංග ඉන්ජිනේරු විෂය තුල මෙම බෙදා වෙන් කර දැක්වීම් කාලයත් සමග වෙනස් වීමට හැකි වුවත් පළමුවෙන්ම ඔබ විසින් වඩාත්ම කැමැත්තක් දක්වන කොටස තෝරා ගැනීමෙන් එහි නියැලීම ඔබට වඩාත් පහසු කරවනු ලබයි. මෙලෙස වසර කීපයක් එම ක්ශේත්රය තුල වැඩ කටයුතු කරගෙන යාමේදී ඔබට ඔබ තෝරගත් විෂය කොටස ගැන වැඩිදුර දැනුමක් ලබා ගැනීම සැමවිටම වැදගත් වන අතර එහිදී ඒ සදහා පිලිගත් ආයතන මගින් නිකුත් කරන Certificate Course ඕනෑ තරම් හොයාගත හැකිය. බොහෝ දෙනෙකු මෙම පාඨමාලා online මාධ්ය මගින් ඉගෙනීමට තෝරගන්නේ එහි ඇති පහසුව නිසාවෙනුයි. ඉන්පසු ක්රමක් ක්රමයෙන් දැනුම සහ අත්දැකීම් ලබාගන්නා ඔබට වසර 5ක් පමණ අවසාන වන විට ඔබ තෝරාගත් උප ප්රධාන කොටස තුල ඉදිරියට යා හැකි අතර ඒ වන විට ඔබව Senior Software Engineer කෙනෙකු ලෙසද හැදින්විය හැකිය.