Search This Blog

Thursday, June 7, 2018

Two years Development experience at ERachana Technologies - Senior Developer


I left Intel to join ERachana Technologies to help my uncle recover from the loss his company was facing due to excessive investments in a Product named Kushal that was meant to help small companies easily create ERP products for a small 1 time investment on Kushal. 




The product Kushal began in the year 2008 and due to some conflict with the developer the product remained incomplete for the next 8 years. In addition to lack of completion, the product also had bugs in feature that were implemented as of version 3.27. But the company only had the code for version 3.24. In the year 2016, I decided to leave Intel to help my uncle get back his product on track and joined ERachana to work on the behemoth that is Kushal IDE. After a brief probationary period, my uncle shared his vision for the company with me. As I had begun my career at an entry level at Intel, I was somewhat skeptical, but I wanted to explore a lot in the world of software, for which I knew ERachana was the right place to be.


To get started with, I was given some help documentation, but the documentation did not help me understand the code, because the documentation was essentially a user manual. I did not have any Database knowledge till I joined ERachana Technologies. As my work needed me to understand Database application development, I began learning Database concepts along with understanding the code base by debugging through it.

My assigned target was to resolve some important bugs in Kushal in 1 year’s time, which I remember completing in 8 months. At the time I joined, another person was independently developing a web application framework in using Java / Spring / Hibernate technologies and because of some conflict with my uncle he decided to stop the support and did not share the source code with the company.


As I had completed resolving the bugs 4 months ahead of schedule, I decided to take up the development of Baadal, using the technologies ASP.Net / Entity Framework neither of which were known to me at that time but I decided to learn the technologies while developing the product itself.


Baadal is developed on top of Kushal framework which had all the capabilities to store and retrieve information of different controls on different forms. The same capabilities were utilized to develop Baadal IDE. Over the course of development one of my initial challenges was generation ORM files for ASP.net’s EDMX  file format ( using a command line approach) that could be used to interface between database and the object oriented world of ASP.net. As Baadal came to a reasonable Proof of Concept (POC) stage, another product which was under the development of 2 different previous acquaintances of my uncle, decided to pursue other projects. Thus I came to manage Kushal, Baadal and Dhruval all at the same time.

Though Dhruval was originally an independently conceived idea, it came be widely believed that Baadal could be used to create the applications that can be hosted in Dhruval.

As Dhruval code base was now available to me I got a standard set of code to refer whenever I was implementing a new control in ASP.net. To satisfy the requirement placed on my shoulders, I developed 2 different templates so that using Baadal, a user could develop independent products as well as develop projects that ran on Dhruval by the change of just 1 dynamic setting in Baadal.

It has been a long journey from my days in Intel where I was sporadically required to develop/maintain different tools to my current role as Senior Developer at ERachana Technologies, where I am required to simultaneously develop some priority bugs in Kushal while developing  new features in Baadal which maintained compatility with Dhruval.

Challenges faced:
    1)      As SQLCE Database was the last Database to be supported among Sqlite, MSSQL, MySQL, Access DB and SQLCE, it had lot of bugs. At one point the company took a stand to no longer support SQLCE so I spent time in disabling all the interfaces. 

  Almost immediately after disabling all the interfaces, the decision was reverted and ERachana started developing all its products using SQLCE. This required me to not only enable all the interfaces back properly, but also resolve all SQLCE related bugs that were dorment before I picked up Kushal.

    2)      Export to Excel was a common library that was independently integrated as a sub-project in Kushal. As this gained wider customer acceptance newer customization were demanded where customers needed output in Excel which were different fromwhat output was displayed in the grid, which was the norm we followed while developing a solution.

This particular solution improved my confidence in the project because I designed and implemented the feature on my own without asking for help from someone else. Though this was not the biggest problem I had solved, this became my foundational movement to start making changes in Kushal which have made it more stable and more easy-to-develop new solutions.

  3) Changed the Architecture of Kushal to load only the relevant Form details after user selects a Form. 

     One of the problem faced early on regarding developing a project with Kushal was the size restriction on how many forms an application could have. This problem had occured because the entire project was loaded on to memory while Kushal was running. This would later lead to Kushal crashing in large applications after a certain time.

     Though it is a standard practice to only load relevant items in memory, this was somehow missed in the initial architectural decisions made for Kushal. 

     After analyzing the problem, it took some time to change the design to comply to load only one form at a time. But ever since fixing this defect, Kushal has run seemlessly regardless of the size of the project. Another performance benefit that accompanied this change was the relative speed in loading the IDE a change which became very pivotal in the developent in Kushal.

~~~

In my time at ERachana, I have developed solutions for which I am immensely grateful for receiving the opportunity to develop. I did more work in a year at Erachana than I had got my hands on when I worked at Intel.

Flat Hierarchy:
At Erachana, I directly reported to the CEO, just as any other employee, so it was very simple to make any technical changes independently.

Work Model:
When I joined Erachana Technologies, we were 5 employees. My uncle's (CEO's) responsibility was to procure and deliver customer solutions. I joined as a developer to develop Kushal. There were 2 software engineers who developed solutions using Kushal and then 2 testers to test the tools made by the software engineers. 

Today our team has increased form 5 people to 18 people which includes an Accountant, 3 support staff, 2 designers, 1 content writer and a few software engineers who all mostly rely on Kushal / Baadal to develop solutions. It is going to take some time for ERachana to recover from its previous losses, but right now the environment is almost perfect to make a sharp turn towards recovery.

Other tasks do occur from time to time inclusing resolving bugs in an employees code who codes in Xamarin for Android. Fixing up Javascript related bugs which are introduced in some custom solutions given by our Web Application development team.  

Realization:
I suddenly started working at a top role and it was fun to realize what I was capable of when given the right opportunity.

In addition to software development, I did Content Writing and Review of our product, wrote code design documentation.