What I was doing for last 04 years as a Software Engineer.

Nimesha Jinarajadasa
7 min readJul 14, 2021

I was graduated in mid 2017 from the University of Moratuwa as a Software Engineer and have been working in the industry of Information Technology for 04 years now. Recently, I was trying to recall how i spent my career for last four years and things I have learnt and worked with. This is to share my experience with you guys who are new comers to IT industry and undergraduates.

I have been working with various kinds of tech stacks to make my knowledge experience to a greater extent. After graduating from the university,as a Fresher, I have started my career with the oracle database which utilizes memory structures and processes to oversee and get to the data set and PL/SQL for the back-end development. The collection of a database is treated as a unit and initially, it is just like SQL Server and database architectural principles are the very same and operate with SQL (Structured Query Language), and Oracle’s own PL / SQL extension. As the first database created for enterprise network computerization, it is the most flexible and costeffective way to manage information and applications. Oracle Database implements object oriented features including user-defined types, inheritance, and polymorphism with an ability to cluster many transactions into a constant batch for process sets Oracle apart from its competitors. It can achieve high performance with the methodologies and principles. Instance Caging works with the database resource manager to manage services in some cases. Recovery Manager is a feature of Oracle DB that restores database files in case of crashes or outages.

Apart from that, I have been working with PL/SQL which is an extension for procedural programming and allows the use of all SQL data manipulation, cursor control, and transaction control statements, and all the SQL functions, operators, and fake columns.

In Parallel to working with these back-end development technologies, I worked with a collaborative Dev-ops team 50% of my working time with the knowledge of Jenkins automation which is the most popular open-source CI / CD tool on the market today and is used in support of Dev-ops, alongside other cloud-native tools and also it helps to automate the parts of software development related to building, testing and deploying, facilitating continues integration and continuous delivery.

Meantime, I’ve involved Oracle 12c database administration with fixing issues related to the database, Implementing Databases and the Windows Virtual Machine Administration as well.

The next biggest change in my technology stack was 1.5 years back and I’ve started working with Front-end development technologies.

So, i got the opportunity to work with Angular which is the most popular framework for building single-page client applications using HTML and Typescript with the benefits of enabling secure binding of data to HTML elements. Angular which is a structural framework for dynamic web apps implements core and optional functionality as a set of Typescripts libraries. Its data binding and dependency injection eliminate much of the code that programmers would otherwise have to write.

At the same time, I have been working with Rxjs, another front-end development technology that is a library for reactive programming using Observables to make it easier to compose asynchronous or callback-based code. It is quite flexible to use with other JavaScript libraries including Angular, ReactJS, Vue.js, Nodejs. The provided extensibility can eject repeating algorithms into the new RxJS operator’s comprehensive kit of standard operators. RxJS gives top-notch advancement and has a modular architecture. These qualities make it small, and the production bundle contains just those parts that are utilized. The specialty of the RXjs is it does not rely on any third party. This is because it has a self-sufficient library that does not import other parties of dependencies. Regarding the front-end development, I have been engaging with Observables which are the data source/stream that can emit multiple values, which can also emit errors and can be infinite or finite concerning the case once emit their completion event.

Reactive programming is another front-end development technology in which I have been working is an asynchronous programming paradigm concerned with data streams and the propagation of change. This is because it becomes possible to express static or dynamic data streams with ease via the employed programming languages with advantages of avoiding “callback hell”, a lot simpler to do a sync/threaded work, very simple to compose streams of data, easy to implement back pressure.

I’ve been working REDUX as the predictable state container for angular apps.

It is very convenient to use the Storybook tool to create components independently and showcase components interactively in an isolated development environment. Because Storybook operates outside of the main application, users can develop UI components individually without having to worry about application-specific dependencies and requirements.

Isolation outside of the app makes it easy to build components, increase developers’ awareness of existing components, serve as a lifestyle guide and document, and visually test testing opportunities.

50% of the late one-year period I have been gained experience in Azure administration, Kubernetes, Docker, Bit bucket pipeline implementation, Terraform and CI/CD. In Azure administration, I have familiar with implementation, management, and monitoring identity, governance, storing, computing, and virtual networks in a cloud environment. Kubernetes is the fastest-growing project in the history of open-Source software, after Linux first Cloud Native Cloud Foundation (CNCF) project and donated by Google. Kubernetes works with practically any sort of container runtime. What’s more, Kubernetes can work with virtually any type of intents and purposes any kind of basic framework. Due partially to its transportability, Kubernetes can have responsibilities running on a solitary cloud just like jobs that are spread across different mists. Docker is an open platform for creating, delivering, and running applications. Docker gives you the ability to add and activate an app called a holder in a climate where it is inevitably dispersed. The confinement and security permit you to run numerous holders at the same time on a given host. Containers are lightweight and contain all that is expected to run the application, so you don’t have to depend on what is presently introduced on the host. Bit bucket Pipelines is CI/CD solution for Bit bucket Cloud that is incorporated in the UI and sits close by your stores, making it simple for groups to get going structure, testing, and conveying their code. Groups new to CI/CD right through to those with modern conveyance and arrangement pipelines. Continuous integration (CI) and continuous delivery (CD) epitomize a culture, set of working standards, and an assortment of practices that empower application development groups to convey code changes all the more oftentimes and dependably. The execution is otherwise called the CI/CD pipeline. CI/CD is probably the best practice for Dev-ops groups to carry out. It’s anything but an agile methodology best practice, as it empowers programming improvement groups to zero in on gathering business prerequisites, code quality, and security since deployment steps are mechanized.

In the last couple of months, I moved to React Js which is an open-source JavaScript library that is utilized for building UIs explicitly for single-page applications as the front-end development technology. ReactJS is the only less complex to get a handle on immediately. The segment-based methodology, distinct lifecycle, and utilization of outright JavaScript make React easy to learn, construct an expert web (and mobile applications), and backing it. React does not offer any idea of an inherent holder for reliance. React utilizes singledirection data binding and an application architecture called Flux controls the flow of data to segments through one control point — the dispatcher.

As a middle tier, I have been using Java and OData (Open Data Protocol) provider. OData is an OASIS standard that characterizes the best practice for building and devouring RESTful APIs. OData assists in zeroing in business rationale while building RESTful APIs without agonizing over the ways to deal with characterize solicitation and reaction headers, status codes, HTTP strategies, URL shows, media types, payload formats and queries alternatives, and so forth. The other technology I used for the middle-tier was platform-independent technology, Java. Projects can run on a few unique kinds of PCs; as long as the PC has a Java Runtime Environment (JRE) introduced, a Java program can run on it. Java is generally object oriented. The code is so robust because Java objects contain no references to data outside of themselves. And for the back end development technology, I have been using Oracle DB and PL/SQL logic as before.

I have tried to shorten this as much as i can. Let’s talk about these tech stacks more deeper in future articles. Keep in touch with me. Do not forget to share and give a clap ;)

--

--

Nimesha Jinarajadasa

DevOps Engineer & Advocate @ KodeKloud(Singapore) | Former Senior Software Engineer @ IFS R&D Technology | Top Rated Plus Freelancer @Upwork | Moratuwa Uni Alum