Summer internship at Evolphin Software,Inc

I  interned at Evolphin Software during summer holidays of 2015, for which I was selected via my college. Evolphin software is B2B company providing digital and media asset management solutions to other firms .

At Evolphin , I worked with Adobe products plugin development team which develops plugins for Adobe products such as Photoshop , Illustrator etc .

My work involved automation of build process of plugin which comes into play when a developer want to package the plugin with latest patches and is ready to deploy it to a continuous integration server , we used Jenkins at Evolphin.

I used Gradle for doing this project and practically implemented or tried to implement various  aspects of software development which I have only read about in books prior to this internship .

Some of the key things I learnt :

1.Choose your tools wisely : There are many tools available to accomplish a certain task but still some are more suited than others for a particular task or are easier to learn quickly , and selecting Gradle to do this task proved to be a wise decision .I am thankful to my mentor ,Omprakash, who trusted me to select the tools myself .

2.Make it readable : Have empathy for other who might have to modify or read your code .

3.Make it testable : Once I learned Gradle and understood the requirements completely, I was able to write my build logic pretty quickly and I put it all in a single file consisting of many different tasks , but then whenever I have to modify the build script and if it broke my  code , tracing the task which caused the issue was really difficult, and it was then I decided to break my build logic into multiple files , each containing no more that 2-3 related tasks , added comments which provided a nice stacktrace like output which made it immediately clear which task has caused the build to fail.

4.Make it extendable : Once I implemented the core functionality of my build logic and was feeling happy , my mentor asked me to add some extra features such as checksum , properties file etc , and it was then I have to figure out how to add these features without having to do many modification in my current build logic , and while doing so , I used topological sorting of dependency graph formed by tasks in build logic , and ultimately created a build logic which can be extended pretty easily.

5.Avoid coupling as far as possible : My initial build logic contained tasks  having many cross references and a modification in one task  required modification in all tasks dependent on it and it was then I decided to improve on the ultimate design of the entire build logic in which a task referred to or is referred by at most 2 tasks which resulted in less coupled build logic.

6.Understanding different phases in Gradle :  It’s a trap and requires attention to detail. Gradle performs a build logic in three phases : initialization ,configuration , execution and understanding how this works is very important if you are coming from Ant / Maven background .

7. Continuous Integration :In the last part of my project , I had to deploy the build logic on Jenkins CI server used at Evolphin and gave me an opportunity to learn about practices used in software development .

8.Get and give help :Well , although it is non technical aspect but it is key to building a high quality software / product which you as well as others can easily understand . Many a times , having someone else review your code can help you solve an issue you’re stuck on from hours .Raymond’s proposition  “given enough eyeballs, all bugs are shallow” is absolutely true.

Overall , it was a great learning experience working with people who are really awesome at what they do . Evolphin is  cool place to work and learn where all are expected to be their own managers and take ownership of their work . People here  trust you that given a problem , you’ll be able to figure out a solution.  Thanks to all people at Evolphin for a wonderful time we had together .


Leave a comment

Filed under Initernships

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s