Atlogys

Is Your Web Platform Scalable

June 26th, 2014 by Ritika Sanghi
Posted in Scalable Web Architecture | No Comments »

 

Most Web Applications developed by inexperienced software companies are not scalable. The application runs fine when launched. However, in most cases, as soon as traffic reaches a critical mass, due to bad software design, the web application starts hanging and crashing resulting in a very poor user experience, having a negative impact on the success of the platform. Getting the functionality right is only half the story. It is very important to make sure that the application has scalable web architecture and can scale easily as traffic grows, without having to rewrite large portions of the application to support the increasing traffic.

 

The following checklist lists some of the most important things that should be followed at the time of software architecture design to insure smooth scalability of the web application:

  • Code Scalability:Code scalability consists of two things.First is to make sure that good & efficient data structures and algorithms are used and the code is optimized to handle large number of requests quickly. There are very few nested loops and the code runtime scales linearly at worst with traffic. Unit testing coupled with load testing can be used to insure that the code is up to the mark.Second is to make sure that the during software architecture design, the code is clearly broken up into logical modules and written in a very modular manner. This will make adding new features to the code relatively easy and bug free..
  • Database Scalability: Most web applications are backed by databases for application data storage and persistence. In order to make the database scalable, design techniques like de-normalization must be used when designing the database. This insures small data footprint. Further relevant indexes should be created and all database queries optimized avoiding unnecessary joins and non-index queries. As traffic increases, queries logs can be monitored using the slow query logs to find slow queries and optimize them.
  • Scalable Deployment: Once the application & data storage have been optimized for scalability, the final and most important piece in achieving scalability is the actual software deployment architecture and insuring that it can quickly be scaled. The following are some deployment tips that can insure a scalable web architecture:
    • Hosting on Cloud: It is recommended to use a cloud platform to host the application, as it allows for quickly procuring additional resources to handle increasing traffic.
    • Horizontal Scaling: Horizontal scaling means adding more web servers to handle user requests. This usually entails having a (or a set) load balancer that handles all incoming server requests and balances the load amongst the various web servers. Concepts like elastic load balancing are fairly common in the cloud and allow the application to automatically provision new servers as traffic increases and release servers when traffic drops. This also provides failover protection, so that if one server fails, traffic can automatically be routed to the other servers without any disruption in service.However, the application needs to be designed in a way that supports horizontal scaling. For example, using separate storage servers to store all static and user-generated files is needed, so that all the dynamic files are available across all instances. Similarly, batch jobs and other one-time scripts must be set up to run only on a single instance (or a separate instance) to insure they only once.
    • Master-slave replication for DB: As traffic scales, the database can become the bottle-neck and drastically slow down the overall system. Master-slave replication can be used, such that all writes go to the master, while all reads are done from the slaves. With most applications being read-intensive, this can be scaled very easily as needed.

As you can see, designing a scalable web architecture has many different moving parts and requires deep knowledge and good design skills, right from the application layer to the actual deployment architecture. So is your web platform scalable?


Share

 

Why Your Business Needs Personalized Technology Strategy Consulting

June 26th, 2014 by Ritika Sanghi
Posted in Technology Strategy Consulting | No Comments »

 

Every Business has their own set of technology needs. It is very important that your software is customized according to the needs of the business. It is well said that one size does not fit all.

 

To understand the personalized technology strategy consulting process let’s take an example. Say you want to build a Lost & Found website, where both lost and found objects can be listed so that people can find their lost objects and finders and get rewarded.

 

Now let us list the major steps in Technical Strategy Consulting, and see specific examples on how it can benefit you.

  1.  Technical Specifications– The first and most important step in the IT consulting process is to transform your business idea into a set of technical specifications requirements which describes in detail the requirements of the software application that you are trying to build. Here the expert Technical Consultant will work hand-in-hand with you, asking many questions, providing suggestions based on experience and latest IT trends. A few examples are as follows:
    • Wouldn’t it be nice to pinpoint the location where exactly the object was lost or found and show it on a Map to the user?
    • Gamification: This is a very popular trend in websites, to use the power of social gamification to increase gratification and in turn drive usage. In this specific case, the IT consultant could suggest using gamification to keep track of number of items successfully returned by a finder, rate them based on user reviews and tie in some monetary benefit to the top performers
    • Mobile support: Since a lot of items are found while on the move, the IT consultant might recommend making the site mobile-friendly and using the GPS on phones to keep track of where items were lost/found.
  2.  Architecture and Design– A software’s success is based on a wide range of factors such as performance, security and manageability. Software architecture is the process of defining a well-structured software solution that meets all its functional and business requirements. Its helps in chalking out a lot of structures like:
    • What are the third party integrations that can be used and how they will work, e.g. Google Maps for pinpointing where items were found.
    • For enabling gamification (as described above), what data model should be used – whether the application should use a regular Database or a NoSQL database (like Redis) along with batch jobs to calculate the scores in an offline fashion.
    • How the searching and matching algorithm would work, and whether the application needs to use a search index like Apache Solr to enable faster search.
  3.  Project Management– Project Management is often overlooked during technology strategy consulting but it can push any software to its fullest potential and play a huge role in its success. An experienced project manager studies the requirements in terms of technologies needed, size of project, budget, etc. and recommends appropriate vendors for both User Interface Design (UI) as well as actual Software Development, and helps negotiate with them (both in terms of man hours as well as rate) to make sure that you get the best software development experience at a reasonable price. He then monitors the entire software development lifecycle and makes sure that the application is deployed bug-free, in a timely and cost-effective manner.
  4. Testing – Testing is the process of verifying whether a system behaves in an expected manner or not. A lot of software development companies wait for the project to be 100% complete before they start testing, however, IT consulting experts believe that software testing should be started at an early stage and should go hand-in-hand with development. A bug/defect is much easier and cost effective to solve at an early stage.
  5. Deployment- After your application is ready, software deployment is what makes it available for everybody to use. It is very important to think about the future while making your deployment strategy like which platform are you targeting, how much traffic you are expecting, and which servers should be used. An expert IT Consultant helps you plan for today keeping scalability in mind for the near future. In terms of the Lost and Found site, some questions to ask would be:
    • Is the site going to be used from various parts of the world? If so, it might make sense to use a Content Delivery Network (CDN) to serve the static content locally to improve the load time.
    • What are the traffic patterns that are estimated in the first 6 months and beyond? This is used to determine server configuration and scaling requirements in the future.

 

As you can see, using an experienced Technology Strategy Consultant helps your software application deliver its full potential.  So next time make sure to use an IT consulting company for all your business needs.


Share

 

3 Common Mobile Architecture Problems to Avoid

February 5th, 2014 by Ritika Sanghi
Posted in Chief Technology Officer | No Comments »

3 Common Mobile Architecture Problems to Avoid

 

With a rapid increase in the number of smartphones and more affordable connectivity, mobile applications are fast gaining popularity and organizations can no longer rely solely on web-based applications for all their traffic. The mobile space is truly vibrant due to the spectrum of devices and the enormous opportunities it offers. However, mobile application development comes with many unique challenges like the devices to be targeted, offline capabilities, creating an application that’s simple yet effective and security of the data that is being uploaded and In this article we will talk about 3 common mobile application architecture problems to avoid:

  1. Performance Considerations: Developer should customize the code for performance at every stage of mobile application development and not just at the end. It is important to keep under consideration that mobiles mostly operate on battery and hence CPU-intensive performance enhancement features, wireless communication etc. should be kept to a minimum. Similarly using programing shortcuts in the code to deflate the code size reduces battery usage as well as memory consumption. The performance can further be optimized by the following:
    • Minimize the startup time for applications – this can be done using lazy initialization so that data, scripts are only loaded on demand when needed.
    • In general incremental rendering and pre-fetching should be used to reduce the overall perceived latency of the application.
    • Each mobile platform has different best practices and standards which should be thoroughly understood and utilized to optimize the code
    • Memory usage should be kept at a minimum. This can be done by using fewer data objects and by clearing the cache regularly.
  2. Connectivity & Synchronization: Mobiles in general have intermittent connections with varying degrees of connection speeds right from 2G, 3G to wireless. Mobile application architecture should accommodate the loss of a network connections as well as handoff between the various connection types. The following things should be kept in mind to handle connectivity issues:
    • Allow for offline access and background syncing of data – The application can store a local copy of the data that allows users to perform tasks locally when there is no or limited connectivity. Once connectivity is restored, the application should sync in the background with the server and have logic in place to handle synchronization and data conflict issues.
    • Caching is very important – Caching large sets of data from the server can provide a very smooth user experience. However, care should be taken to insure that the cache is expired after a certain time period, so that the user is not seeing very old data.
  3. User Interface and User Experience: Many factors such as reduced application start up time, data consistency, latency etc. play an important role in influencing user experience. Every mobile platform (iOS, Android, Windows, etc.) has well-documented user-experience guidelines that should be followed in order to give a consistent look and feel throughout the application.

Mobile devices have limited screen real-estate with their small screen sizes, thus the mobile application must be designed with each and every pixel in mind. The following things should be kept under consideration

  • Only the most commonly used and important options should be displayed, and the application should be designed for a single full-screen layout with minimal scrolling. Using a wizard or a tabbed interface is better than having a single page with lots of scrolling.
  • Typing is always an issue on a mobile device, so the interface should utilize tools like auto sign-in, auto-complete and dropdown selections in order to minimize
  • CSS media queries should be used to apply different CSS rules and layouts based on different screen sizes, resolutions and orientations. Vector graphics and groups can be used for images for easy scaling between resolutions.

Mobile application development is a specialized field and governed by a completely different set of rules compared with web application development. It is important to understand all the differences in architecture and have the necessary software architecture design skills, expertise and experience before taking on a mobile application development project.


Share

 

How to do effective software quality assurance (QA)

January 23rd, 2014 by Ritika Sanghi
Posted in Chief Technology Officer | No Comments »

Software quality assurance/QA Testing is an integral component of the SDLC (software development lifecycle) process. It detects bugs, functional mismatch and code execution problems in software so as to prevent deficient or incomplete or inaccurate software from getting released in the market.

If you are an entrepreneur outsourcing development of any software application, then it is very important for you to know what software quality assurance is and how to do effectively do software QA testing. Here we will discuss steps and standards you may follow, and also enforce on your development team in early stages of the software development life cycle to account for efficient testing.

Efficient QA testing can increase software delivery times by almost 20% and also cost by around 30—40%. With good QA processes in place, we spend less time in re-iterating, re-testing software – not to mention all the hair pulling time spent in explaining bugs /use cases and documenting tickets for your software team/s!!

The following steps results into an effective quality assurance process:

  1. Accurate Requirements and Tech Specs (Participation from the early stages):The first stage in SDLC (software development life cycle) is making the SRS (software requirement specification). SRS is the first document made by senior business analysts or product managers post getting the functional and business requirements from the clients. Make sure to review the SRS before finalizing it. Your SRS must include all user interactions and functionalities that you wish to provide to your users with all edge cases and data flows documented. It must have per-screen wireframes along with the control flow. A clear requirement in the beginning makes sure that rest of the development life cycle is smooth and delay free. If it’s not possible for you to be a part of this stage then ask your team lead or QA manager to be involved while reviewing the SRS.

  2. Comprehensive Test Cases: It is very important to ask your QA team to write comprehensive test cases and make a good testing plan. The testing plan should be in the form of a project Gantt chart showing which features will be tested on which dates and when will the bugs from the testing get addressed. Good Test cases cover all positive and negative features with the desired outcome. Test cases mention the steps required to test the scenario, the assumptions and the actual vs. expected behavior. Test cases must be made by a QA team that is separate from the technical development team. The QA team should take the SRS as input and make test cases. As the end-client, you must review and sign off on the test cases.

    It’s a well-known fact that bugs are easier to fix during the development stage as compared to being fixed after deployment – which in turn becomes very expensive and results in several regression bugs. So, its very import to have a good test strategy along with the right set of test cases ready before the development begins.

  3. Test Environment – Get your development teams to make a QA testing environment – This should be a server different from the local development machines of the developers. Make sure you get the web access link for the QA server and only do testing on this environment. Never do testing on developer’s sandboxes or on direct developer machines. Ask the teams to push sanitized and reviewed versions of code – post their internal QA onto the QA server for your testing. While you are doing your testing on the QA server, the development team should not push or make any code changes on the QA server as this will result in inconsistencies and inaccurate testing results.

 

  1. Milestone Releases: Divide the application under testing into smaller functional modules and a subset of modules should be released on the QA server once every month for iterative testing. Waiting for 100% development in order to start testing is time consuming and less effective. Divide the whole coding into 3-4 releases and test that subset of features in each release. Ask your development team to do a Word breakdown Structure so that you know what feature is getting coded in which release and test that functionality per release.

    This will allow you to catch errors early; otherwise developers will continue to build more code on top of those errors. Errors detected late would require a re-write of the whole application which will be time consuming and costly.

  1. Software QA Test Reports – Software QA Test Report is a report with a status allied pass/fail next to each test case that the development team must submit with every release. Before you start testing the release on the QA server, make sure the team has done an internal QA and their QA engineer has already caught bugs, gotten them fixed and then released the same to you. In the test cases report you get from the dev. team, all tests must show pass before you start your testing.

While reporting a bug give a detailed description of the same with any additional information like login details, browser version, steps to reproduce etc. Detailed bug reports help to fix the problems/bugs quickly.

A sample test case report can have the following columns

Test Case ID

Test Objective

Steps

Expected Result

Actual Result

Result/Status

Remarks/Comments

  1. Thorough Testing – If you are testing a web application, get reports for cross-browser and cross-resolution testing. If it is mobile, make sure you define the mobile software OS version and the hard ware devices to be supported. E.g. my mobile app is supposed to work bug-free on iOS 5, 6, 7 on iPhone 4, 4s, 5 iPad 3 but not iPhone 5s as it is too new. Tools like

    http://quirktools.com/screenfly/

    http://browsershots.org/

    http://resizemybrowser.com/

    can prove immensely helpful for this.
    Make sure the teams submit test cases report with pass/fail for this complete matrix of requirements. Put yourself in the shows of the end user and run through all cases like registering, activating account from email, fb login, logout, reset password, account settings etc. and make sure they work as expected.

  2. SEO testing – Any web application must have HTML which is SEO optimized. Get an IT consultant to QA test the SEO aspects of the web app like W3C standards compliance (http://validator.w3.org/) , 508 accessibility compliance, Rich snippets and micro data, alt image tags etc. In case the coding is not SEO optimized, the report for the same must be submitted to the dev. team so they may fix the bugs.

  3. Regression testing – Every time a developer writes new code, there are chances that they may or can break something that you had testing or approved before. These are called regression bugs. With each subsequent release of the software, make sure you check for features which you had already tested in the previous release. This is called regression testing.

  4. Bug Management Software for tracking Bugs – There are several bug mgmt. tools such as Bugzilla, redmine which can be used to create bugs, make tickets and follow-up on the same. Get visibility into the discussions happening internally w.r.t. the bug, catch the cause of confusion, see who it is assigned to, set priority and attach screenshots etc. if required. Such tools are very useful to track conversations happening wrt. The bugs and understanding all reasoning and causes.

  5. Performance and Security testing – It is important to load test the web app to ensure page load time as will be witnessed by end users on their browsers. Home pages should ideally load in less than 3 seconds. Post login all web features and functions should work without undue delays.

    Browser based plugins and add-ons like FasterFox, Firebug, Yslow can be used to test network latency and app speed. These can help identify bottlenecks in the code that cause unnecessary compute cycles and hence delay page load.

    Similarly tools like penetration testing (metaspoilt), PageTest by Google can be used to check for security flaws like Sql injection, XSS, CSRF in software applications.

    If you feel you cannot handle such testing, hire an IT consultant to help with creation of such reports.

Give a final sign off to your development team only after all QA testing bugs are resolved, after the app is SEO optimized and performance friendly and secure. Do full regression testing once again after all bugs are fixed and always only accept 100% bug free code.


Share

 

The Interface between Business and Technology – who, what, why ?

February 5th, 2013 by Ritika Sanghi
Posted in Chief Technology Officer | No Comments »

Situation 1

The diagram below shows the situation when a businessman works directly with a technical service provider like a software development company.


Result: Unsatisfied entrepreneur driven by WHAT the developer can do, and not what actually the business requires. The developer is focused on their technology and on only doing a fixed quantum of work (called work packet) without really thinking about the business use case or the evolving nature of the product.



SITUATION 2

The diagram below depicts the situation when a businessman employs an interface to manage the process. This interface can be their CTO or a technology consultant (IT consultant) who understands both the business and technology side of things.

RESULT: Satisfied and happy entrepreneur who gets real value for his time and money. The businessman initiatives really pay off and he/she gets a robust scalable product which is healthy and easy-to-use.
The CTO consultant advices on technology and creates a technical design in line with your business vision. He/she then can even choose the best team which suits your need, and also guide, monitor the team.

Businessmen and entrepreneurs often do not understand technology. They may have great ideas and great marketing plans. However, the lack of knowledge of the technical processes and parameters introduces inefficiencies in their product development cycle which lead to complete failure of the business idea itself.

Businessman should remain focused on the business and not software. Development companies should focus on what has to be done. The interface in the middle must manage the requirements, do the design and provide processes and guidelines to each party along with enforcing measurable performance benchmarks.


Share

 

Startups – The ideas that don’t make it !

February 5th, 2013 by Ritika Sanghi
Posted in Chief Technology Officer | No Comments »

The latest boom and trend in the IT industry is to risk one’s potential to the maximum by doing a startup. With the various open source technologies available today, more and more people are willing to give it a shot. Despite the risk, it is amazing to see the innovative ideas that take form in people’s mind today.

However, due to the lack of exposure to technical trends in the current IT industry, when people try to put into practice their innovations, they realize that there are many challenges in making a successful software product and as such, a successful business venture. By the time they learn to overcome the challenges and get into the drift, they realize realize their innovations are already dead.

So what is happening here?

The ones who take initiative go forth and begin the initial stages of bringing a startup together. They work on it with passion but soon realize that they had taken a lot of factors (from an IT perspective) for granted. Without sound technical know-how and an eye for the latest emerging trends and tools in software, they are not able to breathe strength and charisma into their product. In short, they fail to make their ideas successful.

As such, to avoid falling into such pitfalls, , it is only human nature to heed the advice of those experienced in the field. In order to support you in the areas where you lack expert knowledge, there is always an option to ask help from those who have achieved expert technical knowledge and experienced the IT industry much.

What you need is the next door CTO.

The Entreprenuers should focus on the business and not the software.

The basic problem that an entrepreneur experiences is the trouble of managing the entire project. Plus, without proper technical guidance, they will fail to see their business bloom. Apart from these, they also face the following challenges at various stages:

  • Low quality design.

  • Slow rate of initial development.

  • Intolerability of peak-time traffic.

  • Security loop holes.

  • Un-scalable architecture.

  • Time delays.

  • Unmet deadlines.

  • Impromptu communications.

With a CTO to watch your back, you can concentrate on your business and leave the geekiness and technology to the experts. You will find your innovation being packaged and ready for the world to behold in no time along with it being the best quality as well as making the very best first impression. Your CTO will

  • Understand your business vision.

  • Provide you with the most optimal technical execution strategy.

  • Seamlessly source and manage The Right development team off-site.

  • Provide a Fully managed and monitored development experience.

Have a startup in mind? Time to ring the bell of your next door CTO!


Share

 

Venture Capitalists express interest in ‘Offshore CTO’ to strengthen client’s software

March 14th, 2011 by Ritika Sanghi
Tags: , ,
Posted in Chief Technology Officer, Consulting | No Comments »


The success of a web based business depends highly on the quality and efficiency of its underlying technical platform. As a Venture Capitalist funding such technical ventures, it is necessary to ensure that the portfolio CEO not only has sound technical competence for the design of the platform, but also has reliable and competitive developers for implementation and delivery as per its scope and schedule.

In such a situation, if the entrepreneur is considering outsourcing the platform’s development; perhaps to save costs; then he/she must hire and employ an ‘offshore CTO’ to safe guard themselves from all shortcoming of the offshoring process.
An offshore ‘Chief Technology Officer’ (CTO) is a highly niche service that provides tremendous value addition.

A CTO is a 3rd party individual, who sources and guides a high-performance, local offshore development team to ensure delivery of self-designed, robust, scalable software on an on-time and on-budget basis. The CTO works closely and collaboratively with the client as their dedicated point of contact and manages the entire implementation process.

 

The CTO ensures:
A final product the fully meets all strategic goals –> implements the business vision as per expectations
• Cutting-Edge software that can scale to millions of users
• A fully managed and monitored dev process –> and delivery on-time,on-budget, as per scope and schedule

The services provided by the offshore CTO are as follows:

  1. Program Management – The Business –> IT Translator
    • Technical Advising – In sync with latest developments and trends in IT
    • Execution Strategy & Roadmap – Mock individual features, finalize order of implementation
  2. Software Design Engineering
    • Selection of technology, programming language, tools, API’s and integrations.
    • Overall Architecture Design –Select algorithms and data structures, make data flow diagrams, software design
    • Advice on Coding guidelines – Code refactoring, Hierarchy design
    • Cloud server architecture – Server Farm Design
  3. Project Management
    • Project Lifecycle Management – bug tracking, ticketing
    • Resource and Delivery management
    • Communication – Demos, report submissions, sync ups, meetings
    • Client feedback and iterations
  4. The CTO provides the extra Engineering Eye for Detail often ignored by development teams
    • Testing – Model, functional and integration test cases – App QA and Regression
    • Performance Optimization – Conduct client and server side latency tests
    • Load balancing and Scalability Testing

The Offshore CTO also has the following credentials and qualifications:
• Understands Web 2.0, Understands large-scale, distributed web development
• Passion for designing Heavy traffic, low latency web architectures
• Seasoned Computer scientist and software engineer
• Well-versed with latest trends and development in technology
• Quickly and comprehensively understands the client’s requirements

 

The CTO can also help shortlist and select an offshore development team in situations where clients don’t already have one selected. The CTO can frame an optimized quotation from the vendor on behalf of the client. The CTO ensures that the vendor is charging for the number of hours that are actually needed to write the code as designed by the CTO themselves.


Advantages of such a service:

  1. Software written by outsource teams is usually of low quality – It works as expected but it is not secure, not scalable, not well tested, not performance friendly and not maintainable.
    Non-technical savvy entrepreneurs are also unable to judge the stability, scalability and performance of the site. In the end what they get is a beta platform that drives users away, kills all its initial investment and has no room for future growth and/or funding.
    The CTO can prevent this by acting as a central point of contact for all technical what’s/when’s/how’s/where’s. They understand distributed web design; they can perform code reviews and can supervise the development of well-rounded code.
  2. Offshore Software Development also gets very time-consuming for the entrepreneur – It becomes impossible to manage scope creeps, time delays, resource switches, provide on-time feedback, and conduct continuous tests/QA. The CTO resolves technical deadlocks, handles all communication with the development team, manages on-time delivery, conducts all meetings, and advices entrepreneurs on what features/integrations/tests to add or delete.

The extra costs of hiring such a service prove to be inconsequential in the long term. The CTO prevents the entrepreneur from wasting more money on the re-haul and re-design of a poorly designed product.

Real-World EXAMPLES:

  1. Here are a few case studies of projects that suffered horribly in the lack of such a service. Business Elitehad to shut down operations as it jumped from one bad off development team to another – all in the absence of sound technical guidance and project management.
  2. Here are a few case studies of projects that benefited hugely from having an offshore CTO. Kuhono – a complex IT startup platform designed and built in Rails within three months with more than expected functionality, and delivered on time without much supervision of the entrepreneurs themselves.

At Atlogys, we provide offshore CTO services to entrepreneurs for web platform design and development. Please contact us at ritika@atlogys.com


Share

 

IT Consultant Vs. Software Developer in Offshore Development

January 19th, 2011 by Ritika Sanghi
Tags: , ,
Posted in Consulting, Software Design | No Comments »


 

QUESTION: What’s the difference between an architect and a construction worker on a house construction project?

ANSWER: It is very similar to the difference between an IT consultant and a Software Developer on an offshore software development project.

Most offshore development is handled by a team of software developers who are well versed with coding in a specific language. 90% of the times, such offshore software teams have basic to intermediate software design skills only! They only do what’s necessary to make functional software.

What they almost always lack is detailed strategic planning and a high-profile architecture required for a scalable and performance friendly software.

 
Specifically, an IT consultant can perform the following roles:

  • Design Engineering
  • Program Management
  • Project Management

 

Here are the differences between an IT consultant and a Software Developer on a typical offshore software development project:
 

IT Consultant Software Developer
An IT Consultant looks at technology from the business perspective. They offer advice on latest technology trends & best practices. This way they help clients make better business decisions. A Software Developer takes the approved technical specification and looks at implementing the same to get things working.
An IT Consultant works on adding/deleting features from the app specification as per target audience, goal, market competitive study and ROI. A Software Developer is usually not involved with the market performance reports of their features and/or their customer reports. They are concerned with implementing the approved feature specification in a given time frame.
An IT Consultant can help with code reviews and code re-factoring. A Software Developer writes the initial functional code.
An IT consultant looks at software from the perspective of security, scalability, maintainability, ease of usage and performance. This 360 degree angle puts the implementation strategy on the right track from the very beginning. A Software developer’s first priority is to write functional code. Aspects of security, performance etc often get neglected till the end. This requires major revamps and re-hauls in the software at a later point of time.
An IT consultant looks at the platform from long term use and helps select a DBMS and Db schema accordingly. A Software Developer makes a schema for one feature at a time and usually modifies the same vigorously.
An IT consultant gets involved with ‘testing and QA’ as code and features are being written. He/She then formalizes a process of regular regression testing, and helps in creation of written test cases. This helps with early bug detection and prevents creation of nested buggy code. A Software developer performs manual feature testing after the feature is implemented and continues to build on top or moves on to other features.
An IT consultant can conduct client/server-side latency and load measurements by simulating traffic. This helps in optimizing code by improving data structures, DB schema and algorithms. This activity is usually outside the realm of a Software Developer’s role as it takes up a lot of additional time over and above coding of the actual features.
As the application begins to shape up, the IT consultant can help with the server farm design and launch architecture for launching the application. Choosing an environment for web platforms on the cloud requires a lot of work and understanding. A software developer can then run the processes for moving the app to the cloud as and when told.
An IT consultant can help maintain the app on the cloud as he/she understand the prod machine setup A Software Developer is usually not aware of this setup.
An IT consultant can function as a Project Manager to manage timelines, resources, schedule and project scope. The software developer finds it difficult to stay so organized and update the project status as and when things happen.
The IT consultant can conduct meetings with the clients, offer sync-ups, provide demos, collect bugs and iterate on the status follow-ups. The software developer can save time from doing all this and instead work on the feedback provided to improve the application.

The value addition is similar to the value addition of having an architect on a house construction project.


At Atlogys, we act as IT Consultants on web application development and web 2.0 platform design. If you have a web based business and want technical advice or review of your application, please contact us at ritika@atlogys.com


Share

 

Do I need Program Management? Software Program Management?

August 16th, 2010 by Ritika Sanghi
Tags: , , , ,
Posted in Consulting, software management | No Comments »


Program Management is about understating your needs from a business perspective and then converting them into a solution that can be technically implemented. It is about understanding your requirements and then understanding your budget, audience so use-case so that all details can be feasibly addressed in your software and its making.


The value addition from softwate program management is equivalent to the value addition of an architect on a house construction project, the value addition from a total local-shopaholic on your next new-town shopping trip, and the value-addition from talking to the chef prior to gorging at your next expensive restaurant visit.


An IT program manager is someone who will understand your needs and provide the most optimized and ideal solution that will address all demands in one go. An IT savvy person who understands technology and who has a passion for problem solving. Someone well versed with enterprise practices and standards and someone who stays upbeat with latest trends in IT to meet those industry challenges.


If you are considering offshore software development, it is highly recommended to use the services of a trained and experienced program manager. The first step should be to approach the PM (Program Manager) to get the project specifications outlined and designed. As an ongoing process, the PM should work dedicatedly with your software development teamto make sure the project adheres to its quality, to test the project specs, to get the project optimized on grounds of latency, security and to ensure constant and smooth follow-up and collaboration.

More details on Program Management Services.


Share

 

Know your Software Application

October 16th, 2009 by Ritika Sanghi
Tags:
Posted in Consulting, How To | No Comments »


As a software owner, it is very critical to learn and understand few basic details about the application. This will help in utilizing the software application to its fullest potential.

Whether the application is be-spoke (i.e made custom for you from scratch), or an off-the-shelf ready product or an opensource solution, knowing a few basic tidbits can help you debug, troubleshoot the application & use it to its fullest scale and efficiency.

Make sure the following are clarified with the vendor or consultant

  • License Terms and Rules
  • Software ownership and IP property
  • Get the technical documentation on the application
  • The maintenance and support clauses on the application
  • The infrastructure needed to run the application effectively – hardware, electricity, temperature etc.
  • Bug fixing policy

Technical Documentation can prove really useful . It is like an application manual. Go over the documentation and make sure you understand the following:

  • Rules/Assumptions made by the application (if any) – what the application will do in-case user fails to provide a particular input, how it will handle certain edge cases.
  • Formulas, Algorithms, Calculations coded into the application
  • All inputs the application expects along with their data Type
  • All sorts of output it can generate
  • The user control flow scenarios – what all can a user do after logging into the application
  • The modules, tools and features provided by the application
  • Security and Performance clauses built into it – whether it does browser pre-fetching, uses cache layer.
  • Compatibility with newer versions of software and licenses – if the application uses a particular software e.g apache server or windows XP, then can you easily upgrade to vista without disrupting the application functionality.

An IT consultant can help you give a demo of the application and go over its technical documentation. They can also help you understand the application setup for basic troubleshooting.

Do spend a few hours obtaining this critical knowledge. Get in-charge of the software. It will make you feel more comfortable allowing you to experiment, play and use the application in more beneficial ways.

Free Personal Consulting for one hour Free Personal Consulting for one hour


Share