Life at CalceyOpinion

Learn Smart, Hire Smart

Calcey

What makes an applicant for a software engineering job an attractive candidate for hire? This is a perennial question that is likely to be uppermost in the minds of both employers and their prospective employees. Software engineering is highly competitive job market where, on the one hand, industry expectations run high, and on the other hand we have hundreds of “education providers” professing to deliver a sound education in computer science. It can get confusing to aspiring software development professionals as to what exactly is required of them to secure that first salaried position… and it can be frustrating to employers when newly hired staff are not performing up to modest expectations simply because they have not approached the trade with the right mindset.

Let us try to outline the measurable skills of an “ideal” software engineering candidate who presents herself for interview. First and foremost, she’d be very strong in her software engineering concepts. An in-depth knowledge of OOP concepts would be evident. She’d be thorough with the architecture of at least one development platform of choice, and be aware of how the various sub-systems and libraries of the platform work in cohesion. For example if we consider .NET as the development framework, a savvy software engineer would be aware of the high-level workings of the CLR and common language infrastructure. The candidate would have the essential background technical knowledge to develop Web applications such as an understanding of the lifecycle of a Web Request. She’d be familiar with Lifecycle Management concepts like Continuous Integration, Unit Test Driven Development and Configuration Management.

A “good” software engineering candidate would know about industry-recognized Design Patterns, and ideally have adopted a few patterns into their experimental project code. Conceptual knowledge of widely used Design Patterns like Singleton, Abstract Factory, Factory Method, Facade, Proxy etc is essential knowhow, since these concepts tune the programmer’s mindset to leveraging best of breed solutions to standard design problems, without reinventing the wheel (and reinventing it rather poorly perhaps). Whilst generally having a modern, agile, paperless, code-design based approach to programming, a budding developer must have enough sense to initially whiteboard any non-trivial implementation, and seek peer review from her teammates. At an interview, this skill could be displayed through one’s ability to represent a simple design problem as a UML class diagram.

In this day and age of vastly scalable non-relational databases and cloud computing, one might be tempted to frown upon knowledge of plain old-fashioned relational database concepts like ER diagramming, SQL, Normalization and Optimization. However, these concepts are still very much in use in most enterprise applications, and must be studied and understood. Woe to the interview candidate who cannot answer a question like “Why would one sometimes need to de-normalize a database? Can you think of an example?” or “What is the use of an Index?” .

Some conceptual knowledge of how people work together to deliver a project to a client is mandatory for beginners. Familiarity with a lightweight team-engagement paradigm like Scrum would be ideal to have.

Successfully facing a test for conceptual knowledge is of course not the only indicator of potential success at an interview. But the concept-savvy candidate is the quintessential software engineer. The era of concept-blind “code monkeys”  working principally through trial and error (“copy-paste coding”) is to be frowned upon by any respectable software engineer or employer. Of course, we are speaking of engineering graduates who have had ample time and guidance to perfect their attitude to programming. The story might be different if one is a job applicant fresh out of high-school. In a sense, the evaluation that such trainees would have to face would be harsh, because employers would have to simply rely on the rather controversial concept of “a high IQ” . It has to be admitted that a good developer will almost certainly have strong innate logical reasoning capacity, usually expressed as a gift for providing algorithmic solutions to real-world problems. This is the sort of test that one who has had no formal training in computer science would face at an interview (e.g. “tell us the steps to sort a randomized list of numbers from 1 to 100” etc).

Having said this, possessing a high IQ, being knowledgeable about engineering concepts and being a great team-worker still does’t complete the picture of a “good” software engineer. At the heart of a successful developer lies an appreciation of the end user’s objectives for the system under development. No matter how “smart” a software developer is at codifying algorithms or grasping new frameworks, she only succeeds when she has met the end user’s expectations. So “well rounded” developers are also great end users –   ” those who tryout new apps as hobby. Unless you use software freely in your own life, its unlikely you know what is a user-friendly, defect-free app. Along with an appreciation for usability comes an appreciation for testing one’s code.

So from the perspective of a job applicant, what does one do as prep for that first interview? Ask oneself the question, am I aware of the basic concepts? OOP-check. Design Patterns-check. Web Request Lifecycle-check. Logical reasoning and writing of algorithms-check. Configuration Management concepts-check. Relational Database design-check. And so the list goes on. Freshers preparing for an interview should master the ability to clearly demonstrate one’s knowledge of these concepts, by giving both textbook metaphors of their use and purpose, as well as recounting how one has used or encountered these concepts in past projects (at University or elsewhere, perhaps within common development frameworks itself).

Let us now look at the other side of the coin –  how does a potential employer spot someone who has great potential as a software developer? At the heart of making a good hire lies the ability to gauge if a candidate can reason from first principle, literally thinking on her feet. After making a candidate comfortable, its an excellent idea to present a simple real-world problem on the board, and see how far she can get with providing a solution in design / pseudo-code. Give the candidate ample time, support and encouragement. Once the initial jitters are at bay, a good candidate will always make a genuine attempt to answer the problem. A weak candidate will always stall early with algorithms or design problems, because of a lack of critical reasoning capacity –  an essential trait for becoming a good software engineer.

It might sound like a harsh reality, but software engineering is not for everyone, just like any other “trade” like art or music or management is not for everyone. However everyone must be given the opportunity to try their luck at this fascinating trade, and it is likely that those who succeed will be those who approach solving real-world problems logically from first principle, with great diligence. The sooner aspiring software engineers learn this, the better their career prospects. This is, and must be, a transparent truth between the industry and the thousands of prospective new entrants.

Life at Calcey

Calcey hackathon promotes entrepreneurship and product development

Calcey

Sunday Observer, June 3rd, 2012

Calcey Technologies, a software development services company in Sri Lanka catering to the US market and a full member of AmCham celebrated its 10th year in business recently in a unique and productive way by organising an inter-university hackathon.

CEO and the founder of Calcey Technologies, Mangala Karunaratne said that one objective of the hackathon was promoting entrepreneurship and the product development culture among young IT graduates in Sri Lankan universities.

This is important to develop Sri Lank’s IT industry rather than being just an offshore body shop destination for the industry. A hackathon (also known as a hack day, hackfest or codefest) is an event in which computer programmers and others in the software development field such as graphic designers, interface designers and project managers collaborate intensively on software- related projects. Hackathons typically last between a day and a week in length. Some hackathons are intended simply for educational or social purposes, although in many cases the goal is to create usable software, or to improve existing software.

Karunaratne, recounted the beginnings and ten-year long way to success in the software industry. “It was a humble beginning and the company was started in an old office belonging to my father in Kularathna Mawatha, Maradana with only two developers. I had work experience in the Silicon Valley for Nortel Networks as a product manager. I then decided to start this business.

Being an astute entrepreneur at heart, my father encouraged me to use the relationships I had forged in the US and launch an offshore consulting business.

Today, Calcey Technologies is a multi-million dollar consulting business housed in a four-story well-furnished‚  building at Seibel Avenue Kirilapona, with 60 staff, he said.

“We served many famous names along the way such as WikiMedia Foundation, Hoya ConBio, BNBuilders, or JiWire Inc. One particular client relationship that blossomed into a great partnership was with Compare Networks, a giant in the Biotechnology marketing space. We began by providing BPO services for managing their Web content, and ended up developing an entire platform to manage their online B2B marketplaces. We’ve done business with Compare Networks for over five years to date, and we hit it off really well with them”, he said.
“I believe we are a truly innovative company in comparison with most other offshore development companies.

We have dared to be different by investing some of our profits to incubate products and spin-off new ventures, harnessing the creativity and ingenuity of our own staff. Our first product is already online at Xaffo.com, and is a foray into the rapidly expanding space of Social Media Intelligence.

We hope to do what Google Analytics does for Websites, but this time with a Social Media angle to the metrics provided. Its early days for Xaffo, and we are keeping our fingers crossed, Karunarathne said. This all-weekend event took place on May 19 and 20.
The goal of a ‘hackathon’ is to have programmers “hack together” a working piece of software that addresses a real-world product requirement, in double-quick time. The emphasis in a hackathon is on meeting the specified product requirement, using whatever coding shortcuts available for the programmers.

The technical solution is considered important, but secondary to a speedy delivery of the product.
Six leading Sri Lankan universities participated in this event, The University of Colombo School Of Computing (UCSC), The Department of Computer Science and Engineering – University of Moratuwa (CSE), The IT Faculty – University of Moratuwa (Moratuwa IT), The University Of Kelaniya, The Sri Lanka Institute of Information Technology (SLIIT) and The Asia Pacific Institute of Information Technology (APIIT).
A team of three undergraduate programmers represented each campus, and they were free to use any technology platforms of their own choice, to get the job done on time. The winners of the hackathon will be announced next week after evaluation of the work done by the teams.

AnnouncementsLife at Calcey

Calcey Technologies to celebrate 10 Years in the IT Industry

Calcey

Calcey Technologies, a software development services company and a full member of AmCham Sri Lanka, is celebrating its 10th anniversary in May this year.

Mangala Karunaratne, Calcey’s founder and CEO, recounted the company’s decade-long journey to success with fond nostalgia. “It all began in my Dad’s old office premises at Kularatne Mawatha in Maradana, where we had just two developers. I used to work in the Silicon Valley for Nortel Networks as a Product Manager, and then during the dot COM bust I decided to start this business. Being an astute entrepreneur at heart, my dad encouraged me to use the relationships I had forged in the States and start an offshore consulting business. Our first software development client was Taleo Corporation, for whom we developed a world-class knowledge base. We never looked back.”
Today, Calcey Technologies is a multi-million dollar consulting business housed in a four-story building at Seibel Avenue Kirilapona, with 60 dedicated staff and furnished with all amenities.

“We served many famous names along the way, like WikiMedia Foundation, Hoya ConBio, BNBuilders, or JiWire Inc,” says Mangala. “One particular client relationship that blossomed into a great partnership was that with Compare Networks, a giant in the Biotechnology marketing space. We began by providing BPO services for managing their Web content, and ended up developing an entire platform to manage their online B2B marketplaces. We’ve done business with Compare for over 5 years to date, and I must say we hit it off really well with them.”

Calcey provides an array of technology consulting services such as Web Development, Software Development, Cloud Solutions, Testing, Business Analysis, Project Management, Mobile App Development, and User Experience Development. Calcey also have expertise in a wide range of development platforms like .NET, DotNetNuke, iOS, Python, PHP, Android and other popular mobile and Cloud technologies. Calcey engaged in a significant capacity expansion drive in 2011 by hiring over 20 engineers and acquiring five new clients, inclusive of big names like The Society for Information Display and Stanford Business School.

“I believe we are a truly innovative company in comparison with most other offshore development companies. We have dared to be different by investing some of our profits to incubate Products and spin-off new ventures, harnessing the creativity and ingenuity of our own staff. Our first product is already online at Xaffo.com, and is a foray into the rapidly expanding space of Social Media Intelligence. We hope to do what Google Analytics does for Websites, but this time with a Social Media angle to the metrics provided. Its early days for Xaffo, and we are keeping our fingers crossed,”  said Mangala.

Ruwan Rajapakse, VP Professional Services at Calcey, says that one major contributory factor for their success over the years is the absence of heavy process and humbug. “We follow a lean and collaborative project management paradigm for engaging our clients, in true agile spirit. We keep paperwork and process to a minimum, and use prototyping extensively. It has saved time and helped avoided conflict with the client. We have invested in the right collaboration tools for the job, like a simple enterprise backlog, and we use these tools extensively. I have seen some software companies spend vast amounts of time and money on adhering to complex “processes”  involving lots of document templates and statutory obligations, processes that sometimes drag down the projects with them. We do the bare essentials, and get by famously with our clients. The reality is, its better to invest in right hiring and good training, rather than in process adherence,  – said Ruwan.

Calcey plans to celebrate its 10th anniversary of business by organizing an inter-university “hackathon” or programming competition. Mangala says “we will of course have a big party and felicitate our staff and those who helped us, but we also want to do something to impact the new generation of undergraduates who have aspirations to become top-class software engineers; hence the idea of a hackathon.” Undergraduates in software engineering will have something to look forward to in May this year.

Over the years, Calcey Technologies has donated equipment for two IT centers in Matara and Neluwa to help the needy. Mangala is also a Director of FARO, a nonprofit organization, which actively assists rural youth in Sri Lanka to find sustainable employment and career opportunities in the Business Process Outsourcing industry.

How toLife at Calcey

Salesforce and JIRA Integration

Calcey

We recently completed an interesting client project to integrate Salesforce CRM with JIRA, an enterprise task management system. The business problem was that the client’s sales team was diligently closing deals on Salesforce, but the resulting action items for the different suppliers were hard to track through Salesforce. The client had been doing a manual transfer of action items to JIRA for closer project management and wanted to automate the process.

The exact use case was to transfer the Product Line Items in the Contracts created on Salesforce, to separate JIRA Tasks, in near real-time. There was a field mapping that was required between the two systems, and the acknowledgement of a task’s closure from the JIRA end.
After a bit of background research, we decided to asynchronously sync the necessary data between the two platforms using a custom-coded agent running as a Windows Service. Coded using .NET’s WCF, this service pulls the Salesforce contract line items every five minutes, tags them to the correct JIRA users, and opens new JIRA tasks. The JIRA fields are populated according to a configurable XML-based field mapping. The communication between the syncing agent and the two platforms was via their respective SOAP interfaces. Shown below is a simple block diagram of what we did:

Complexities that we encountered included the design of a fail-safe mechanism to ensure that communication failure during any given run of the sync agent would be handled gracefully, and that the data transfer would resume from the last successfully transferred JIRA task. We also built a simple transaction log file to report any failures in the sync agent over time.

If you are ever faced with the problem of integrating Salesforce with JIRA, you might find the links below useful reference.
1. JIRA: https://developer.atlassian.com/display/JIRADEV/JIRA+RPC+Services
2. Salesforce: http://www.salesforce.com/us/developer/docs/api/index.htm

Events

Calcey Hackathon 2012

Calcey

Cool news –  we are organizing a Hackathon to celebrate our 10th anniversary. Probably the first event of its kind in Sri Lanka, this hackathon will recognize emerging talent in leading campuses. Student-teams from seven universities will be competing each other to prove their software development expertise. The event will be held on the 19th May to 20th May at Calcey premises. Keep tuned for more info about this event.

Life at Calcey

Calcey helps CompareNetworks to migrate to a Vertical Management Platform

Calcey

CompareNetworks (CN) decided in early 2011 to move DentalCompare, their second-biggest B2B Online Marketplace Website, to their recently developed feature-rich vertical management platform that we helped engineer. We (Calcey Technologies) are CompareNetworks’ principle software development partner, enjoying a 6-year relationship with CN for executing engineering projects, and we were naturally thrilled to take on the brunt of this exercise. CN creates Online Marketplaces where marketers can promote their products and generate highly qualified sales leads.

CN was in need of a feature-rich Article Management System, a Newsletter Management System and an advanced Product Directory. More importantly, they needed a single platform that can house all of their product-vertical Websites like DentalCompare and OpthalmologyWeb, which would in turn make it easier to introduce new features and maintain these Websites. We had developed an all-new vertical management platform for them to address these needs back in 2010, leveraging best of breed open source frameworks like JQuery, RabbitMQ and Memcached, and had successfully migrated several of CN’s smaller online marketplaces to this platform. DentalCompare was our first biggie, in terms of data volume, feature-extensions and scalability demands.

Whilst Calcey had extensive experience in dynamic website development, transferring huge amounts of data proved to be a relatively new challenge for us. There were many thousand records residing on different databases that needed to be transferred to the new site. Our task was to obtain the data from multiple data sources, cleanse and load the data into the new unified data store. Ensuring data integrity, making sense of the old data formats and transforming these into a format that is meaningful to the new platform were some of the technical challenges that we faced. After looking into many options, we decided to overcome these challenges with SQL Server Integration Services, which made the job less time consuming and more efficient. This project became an opportunity to learn how to migrate a massive bulk of data from a legacy system into a new platform within a tight deadline.

“We started on a solid architectural foundation based on the Microsoft technology stack, and adopted a “living architecture”  that got refactored down the road when needed  –  says Chamindu, our team’s Software Architect. Dhanushka, our Lead Engineer driving the technical solution, says: “we employed all the good practices we had learnt over the years, ranging from Daily Code Check-in through Continuous Integration to Unit Test Driven Development. We setup an automated Selenium Test suite to minimize manual regression testing. We maintained strict programmer discipline throughout the development cycles, employing pair programming and daily code reviews. There were a few tough days when we had to work extra hours, but the awesome end result was well worth the trouble!”

As the appointed Project Manager with a team of 16 engineers, personally I found this project to be an exciting challenge dealing with many unknowns at the beginning. Since this was the first of many large-scale Website migration projects to come, I found that capturing all the potential future requirements from the stakeholders upfront was particularly difficult. So we decided to follow Scrum methodology and managed the workload in fortnightly Sprints. Each Sprint was focused on achieving the immediate known requirements at hand and rigorously tested to ensure quality. Daily stand-up meetings with the team and biweekly Sprint Planning with CompareNetworks ensured that we were on the right course. We managed our tasks on JIRA, a popular enterprise project backlog. The Agile development philosophy proved to be a gem in delivering this baby.

We uploaded the completed DentalCompare Website to a staging environment one week prior to the Live release date, for final feedback by CN stakeholders. We also configured an offline production release to ensure there will be no delay in going Live. On the big day, we ran a “War Room”  for 48 hours to continuously monitor the new Website’s performance and to handle any potential issues. We took shifts staying up overnight on standby for defect fixes. In the end, there were only a few minor configuration parameters to be changed during the War Room, and the Website was rocking on Live!

The project was a fun and rewarding experience for all of us at Calcey, and it helped CompareNetworks to take their business to new heights. Besides, CN and Calcey jointly rewarded all of us who contributed to this project with a 3-day vacation at Habarana Lodge, all expenses paid. It was one awesome project. Best of all, we reused the methodology that we perfected in this project to migrate yet another of CN’s verticals, OpthalmologyWeb, successfully into the new vertical management platform in late 2011.