Analyzing risk, early on, in a software development project

June 16th, 2015 Posted by Business No Comment yet

Most development companies jump into a project the moment they get their hands on one – why not? That is what we are here to do – solve problems for our prospects and customers and hopefully make a decent living doing it! But how many go the extra mile and actually analyze the risks to a project before jumping in with both feet?

I am not sure about the answer about how many, but from my experiences of being a customer and consumer of custom software, I can say with some confidence that the number is slim.

Why, you may ask? Why do most companies do not analyze project risks? Well it is not a project deliverable, nor part of most project scopes and why worry about the risk when the development company has all the control on the deliverable?

Wrong (sorry to say)! Not analyzing project risks and not planning for risks is like starting a project blindfold.

Here are some of the things you can and should do at the start of the project.

(1) Once you have defined your milestones, meet with the project team – involve the stakeholders, if possible and the customer/users. Ask them 1 question – what do you think will prevent us from meeting milestone a, b, c…

(2) Once you get the answers – list the risks and discuss 2 things (a) the likelihood of the risk happening (probability or a %) and (b) the impact of the risk to the milestone – high, medium and low (you can also rate if from 10 to 1)

(3) Next multiply the probability with the impact to get a risk number against each risk and sort them from high to low – there you have it – your “Risk Register”

(4) Finally you figure out ways to mitigate each risk – there are many ways to mitigate risks (avoid, transfer, mitigate, accept etc) but that is a different blog post (coming soon!) – as long as you plan for it you are better prepared than most.

(5) You can even put a $ value to each risk – the cost of the risk multiplied by the probability of the risk – some keep this as a management reserve (if you are really risk averse!)

It is important to assess your risk register every time you are nearing a milestone (or more frequently). Both you and your customer will sleep better at night!

 


Roni Banerjee

roniRoni has 16 years of experience in leading small to large scale IT projects for various markets. Roni successfully founded 2 companies spanning multiple locations and time-zones. He rolls up his sleeves and gets into software development anytime you ask him and database development is his passion – we call him “our sequel junkie”! Roni has a Bachelor’s in Engineering, his very valued PMP and is close to finishing his Global MBA from the coveted Warwick Business School in the UK. When asked about his personal life he says “We, my wife and 2 boys, live in the picturesque Hudson Valley region of New York. A Yankees and New York Giants fan, I also enjoy strumming my guitars every day, mixing recipes from different cultures when I get some time and hack away during an occasional round of golf.”

5 ways to handle scope creep

June 13th, 2015 Posted by Business No Comment yet

Scope creep – the surreptitious phenomenon that plagues so many software projects (and any other project as well). But so many times it cannot be avoided. Best practices dictate that to avoid this it is important to sign off on a scope baseline before development starts – where both parties (supplier and customer) have understood the scope as of that point and they have understood what each other has understood! Following that any change to scope is accounted for and one or both of the other 2 constraints of a project, cost and time, are updated.

But real world is not as copybook as that!

So many times a customer does not realize that something very crucial is needed in the scope unless they the end product or a pretty close prototype of the end project. In some cases the project does not even make sense without this feature/need. Or, something new has changed since the project got started and now new features or changes are needed to the original scope to make everything work. Most development companies will say “sure we can do this but it will be change requests and cost an additional X and/or the timeline will get changed by Y days.” For the innocent customer, who really had no control or idea at inception, this could break their budget, bank and eventually lead to a failed undertaking.

One may argue that agile methods could help. But agile is a methodology, a culture and does not provide guidelines to this issue. Some may say that a well drafted contract will help – but how does that make the project successful when there are cost or schedule overruns or the developer is choked by a demanding customer?

Well here are a few points that could help!

(1) Discuss upfront about scope creep with your customer. Talk about how it can affect the project constraints (scope, cost and time). Having a separate discussion topic about this can go a long way in the end.

(2) When scope increases and it is important to stick to the planned schedule, the increased scope can be handled by crashing the project with more resources which increases cost for the developer. Keeping a project reserve upfront is a good idea. Why not make it transparent to the customer? “Let’s keep 10% of the total budget as a reserve in case scope changes midway.” Most professionals will like that rather than sign on a gray line!

(3) You may already be doing agile developments with multiple release cycles. Sometimes it could be possible to move some of the changes to a phase 2 or a version 1.5. It can buy some time which allows for better planning.

(4) You might be able to trade off some scope (what?) – yes let me explain. You may be able to have some involvement from the customer’s in-house resources in the development. Of course this needs to be agreeable by both parties and planned carefully and any risk should be managed accordingly. But there are advantages. For one, the customer is part of the development and there is more buy-in by end users when they are part of the creation! It also helps to balance the workload.

(5) From the customer’s standpoint, if the budget is not stretchable and scope needs to increase, they could transfer some of the extra cost incurred by the developer into a future project. In such cases funds may be released as an advance on the next project. It is not the best of situations, but when a project is near completion and there is a deadlock, it is ok to be a bit creative! Similarly from the developers standpoint, if costs need to be contained, they could revisit the original scope and see what can be shaved off for the current project.

The reality is that scope creep is difficult to avoid. But how we manage that is the game changer. In the end it is not about winning – it is about delivering a project that is successful in the eyes of the customer.

 


Roni Banerjee

roniRoni has 16 years of experience in leading small to large scale IT projects for various markets. Roni successfully founded 2 companies spanning multiple locations and time-zones. He rolls up his sleeves and gets into software development anytime you ask him and database development is his passion – we call him “our sequel junkie”! Roni has a Bachelor’s in Engineering, his very valued PMP and is close to finishing his Global MBA from the coveted Warwick Business School in the UK. When asked about his personal life he says “We, my wife and 2 boys, live in the picturesque Hudson Valley region of New York. A Yankees and New York Giants fan, I also enjoy strumming my guitars every day, mixing recipes from different cultures when I get some time and hack away during an occasional round of golf.”

5 questions to ask before you start an enterprise mobile app development project

May 21st, 2015 Posted by Business No Comment yet

(1) The 1st and the most obvious – do you need an iOS, Android, Windows, RIM product (any or all)?
This is actually an important 1st question. Most customers say “yes”…but it is important to vet it out – questions like “Who is the end consumer?” or “Where will this be used?” or “What % will be Windows vs. Android?” etc. gets the customer thinking – does it make sense to do a RIM development if only 1% of the consumers are using it? It may, depending on the importance of these consumers and the product – but it is good to think through this upfront (maybe a version 2.0?)
There are some good tools to do cross platform developments – we have tried Xamarin – there is also Kony, CoronaLabs etc. – of course traditional tools (Android studio, iOS SDK and XCode 6, Windows .NET for mobility etc.) are always good as well.

 

(2) What is the back-end database and are there API-s to connect to it?
Is the internal environment built in the Microsoft Stack or php/MySQL stack or other? This is key, because most enterprise mobile apps transact back and forth to the internal systems. There are JDBC connectivity processes to SQL for example, but the safest way to go is to have APIs for all the calls to and from the internal database. It does increase the scope so it is important to discuss this upfront. In fact we go all the way of finding out all the methods required for the web service if we have to code that.

 

(3) How many drop-downs do you have in your forms (in all the screens) and are they maintained internally?
Dropdown data is usually in tables and they have setups in the internal systems. If an app is using this data in dropdowns then it must be
synced at all times with the internal systems. Depending on whether the app has to function offline or not, the dropdown data needs to be (a) saved locally in the device or (b) refreshed every time calls are made to the web service from the device. If there are a large number of dropdowns there could be performance issue, especially if some or all of them have a lot of fields and records. It is important to build the correct architecture (cache, edge etc.)

 

(4) Does the app need an offline mode?
This is a BIG question and will change the scope, cost and timeline of the project. Offline mode of an enterprise app creates a lot of challenges that needs to be identified upfront. Here are a few of them that could be generic to all projects:

  • What kind of data will be available in the offline mode?
  • How is the device getting all the data (master records, transactional data, images etc.)?
  • While the data is in the device and it is offline are the “affected” records “locked” in the internal system or a “true sync” is required when the data is sent back to the internal database?
  • How much data needs to be stored locally in the device? (Devices have limited internal database capacity, but there are ways to get around that if architected correctly)
  • Images need to be transferred back and forth using encoding (typically base 64) – does the internal system have decoders? Are the images stored in the network or within the database as blob/image data fields? Are there master/detail type forms? If so how are the calls to the web-service handled?
  • Are there master/detail type forms? If so how are the calls to the web-service handled?

 

(5) How will be app be distributed to the intended users?
Will it be through the App Store/Google Play etc.? If so how are authentications handled? What are the restrictions for downloading and signing up? Or will it be through your own custom distribution portal that can be developed? Or will it be through private/enterprise platforms (like iOS Developer Enterprise Program or Google Enterprise etc.).

 

There are obviously the regular questions on what the app will do (functional specifications), how it will behave and be used (usability specifications), security considerations (which is probably the most important factor) etc.

A well-developed and thought out scope upfront prevents any and all surprises during execution of the project and at delivery. This is true of any project – standard project management philosophies. However, for a mobile development project these questions will either make or break the project – there are slim to none chances of fixing the project in the end if these are not addressed at inception. It may take time upfront, but as a mobile developer you will be able to deliver a richer, cleaner and a “complete” product to your customer.

 


Roni Banerjee

roniRoni has 16 years of experience in leading small to large scale IT projects for various markets. Roni successfully founded 2 companies spanning multiple locations and time-zones. He rolls up his sleeves and gets into software development anytime you ask him and database development is his passion – we call him “our sequel junkie”! Roni has a Bachelor’s in Engineering, his very valued PMP and is close to finishing his Global MBA from the coveted Warwick Business School in the UK. When asked about his personal life he says “We, my wife and 2 boys, live in the picturesque Hudson Valley region of New York. A Yankees and New York Giants fan, I also enjoy strumming my guitars every day, mixing recipes from different cultures when I get some time and hack away during an occasional round of golf.”

To cloud or not to cloud that is the question

May 14th, 2015 Posted by Business No Comment yet

Following up from our prior blog on “To app or not to app” this one is equally relevant, if not more.

Scene: You are looking for software to solve a business problem or bring efficiencies to operations, processes or provide services to your customers, integrate better with suppliers, partners, employees etc. One question you will have to ask in today’s environments is “should the software solution be a cloud solution?”

 

A brief recap on cloud – cloud computing is a simple concept – your pc, laptop, device is no longer running the software (and/or resource) that you are using. The software is being run in some remote machine (could be your server room or a remote off-site server) – also called SaaS (software as a service). Quick note: cloud also has other components, viz. IaaS (infrastructure as a service), PaaS (platform as a service) and DaaS (development as a service) – but for this discussion let us focus on the Software portion.

 

Some quick, good links to cloud http://medullus.com/cloud-migrations/

 

So to answer the impending question, it is best to answer another one!

Why is the question “To cloud or not to cloud” important?

 

(a) Security – most software now cross the boundaries of your office (firewall). They have interactions with email, customers, suppliers, surely employees accessing from remote, mobile devices etc. Although your internal network is buttoned up, your security and governance policies are well-defined and security audits are intact, it is still vulnerable. The only reason is that breaches are a factor of the opportunities that “system access” provide to hackers and not dependent on where the data resides. Studies have proved that it is safer to be in the cloud than traditional IT networks. Why that is the case is a discussion for another time, but you can easily search this on the internet or wait for our next few blogs on this! Having said that you cannot uproot your business and move to the cloud today if you are not there yet, but when developing your next software, you should see if the software can be “cloud ready”

 

(b) Scalability – can the software scale with your business? If you experience growth do you need to reinvest in upgrading the software? Similarly if you need to scale down, does the software environment provide for cutting costs? In a traditional IT environment it is difficult to cut costs when you have invested in infrastructure. It is a sunk cost. Software and infrastructure in a cloud environment may provide you with the scalability you need if implemented correctly.

 

(c) Availability – enterprise software needs to be highly available. Today’s business is 24×7 and that is not an idiom nor a cliché anymore – it is the life blood of your business and to be competitive you need to have software that has high availability if not fault tolerant. A traditional IT infrastructure and software system needs downtime – can you afford such downtime? Cloud environments typically have redundancy built in so downtime is minimal to none.

 

(d) Performance – software as a service is vulnerable to internet band width. While that can be a drawback, most well-designed software allows an offline component that caches data locally while there is latency and syncs updates back to the cloud once band width is restored. However such latencies are slim to none in today’s broadband markets. If you are located in areas where you do not have good internet most of the time, then a remote cloud solution may not be viable. But your software can still enjoy high availability if it is “cloud ready” and runs in a server located within your premises and is not running locally on your devices. And when you have that broadband and you are ready to migrate a remote cloud solution all you need to do is network changes – your software is already cloud enabled!

 

(e) Support – cloud software solutions are a lot easier to support, administer and monitor. Your IT support will need to monitor one resource (or a few, depending on the architecture and complexity of the software) instead of end user devices. Patch installations, upgrades and release management is relatively easier due to the same reasons.

 

(f) Ease of access – this is a big benefit – a software as a service allows the software to be accessed from anywhere and if designed and developed correctly, from any device. No more worrying about VPN or connecting to remote terminals, printers etc – the software runs anywhere so long as the device is connected to the internet.

 

(g) Cost (short term and long term) – finally, the inevitable discussion re: cost. Is it cheaper to have a Saas model, desktop software, remote install? Short term? (1-6 months), longer term? (18 months+). The real question to ask is the value you are getting from a piece of software. There are upfront costs in all types of software – some are cheaper to install, others are cheaper when looking at lifetime ownership. This is a topic of big debate and the correct answer is “it depends” – although that is not an answer that you would like to hear as a consumer, it is also not that indeterminate. Cost comparisons can be done at proposal and a good software development company will provide both alternatives with pros, cons and value (short term and lifetime).

 

So to answer the main question – “To cloud or not to cloud” from a software development perspective – the answer is a big YES. Every software that gets developed in today’s business environments should be “cloud ready” – are you asking this question to your software developers?

 


Roni Banerjee

roniRoni has 16 years of experience in leading small to large scale IT projects for various markets. Roni successfully founded 2 companies spanning multiple locations and time-zones. He rolls up his sleeves and gets into software development anytime you ask him and database development is his passion – we call him “our sequel junkie”! Roni has a Bachelor’s in Engineering, his very valued PMP and is close to finishing his Global MBA from the coveted Warwick Business School in the UK. When asked about his personal life he says “We, my wife and 2 boys, live in the picturesque Hudson Valley region of New York. A Yankees and New York Giants fan, I also enjoy strumming my guitars every day, mixing recipes from different cultures when I get some time and hack away during an occasional round of golf.”

The ONE thing that will make you a better software developer

May 7th, 2015 Posted by Business No Comment yet

 Simple 1 line answer: “Think as an end-user of your software.”  Let me paint the picture first. You are a software developer, resplendent in the knowledge of the latest and greatest technology out in the market. You are highly valued in a development project and your skills are sought after. You start a project, understand…

blog-theOne-2

The ONE thing that will make you a better software developer


Simple 1 line answer: “Think as an end-user of your software.” 

Let me paint the picture first. You are a software developer, resplendent in the knowledge of the latest and greatest technology out in the market. You are highly valued in a development project and your skills are sought after. You start a project, understand the spec and develop it with “Gillette” lines of code. It comes back with 30 changes – do you ever see a pattern? Is it mostly usability issues?

I have developed software since I was 16 years old – my first being a little bob-sled game with chunky graphics on my shining new Sinclair – 32K memory and all, which got used up to load that one game! It was accomplished in around 1000 lines of code and it worked quite well – I enjoyed playing it! But when my friends came to play it they pointed out several things that I did not think of – why use the control and shift buttons to move, can we not use the arrow keys (I did not know how to program arrow keys so used the Ctrl and Shift keys); when the sled hits the wall can it not bounce back with lost points, instead of having to start over? There were other ideas but I was not paying attention – was upset that they did not like so many things

It taught me a valuable lesson – before I work on my next “project” I need to understand a few things early on. And I realized that the more specific I can get, the closer I am to home stretch. Till date I still use the same thought process whenever I have to develop software.

(a) Who is going to use my piece of code?

I like to understand the user base – are they mostly Accountants, lawyers, Marketing folks? Average age helps – people in their 50s are used to entering data in a different way than say, people in their 20s. Geographic information is important as well – how do they enter address information in the UK?

(b) What is the end user environment?

Mobile, office, Microsoft, OpenOffice etc

(c) Will my code be used by only 1 company or will the customer’s customer or supplier have access to that?

You may have to think about usability if the users are across different companies, Geographies, cultures etc

(d) Never make the mistake that a lot of IT professionals make – “Uggh…users are so…” (You know what I am saying – bashing the end-users). Most users are very smart professionals – they can be Operations managers, field operators, technicians, Accountants, para-legals – can be anyone. However…leads me to the next point…

(e) Do not assume that the end-user will know how to use your software – give visual cues, put some hints (tooltips, labels, explanations) – help them love your software!

These are some starting blocks and should help a developer to start thinking along these lines. In today’s software development environments designers and UX developers are already taking care of such end-user experiences. But when you are coding, try to think like an end-user. Look at the software as a whole (or the part you can touch and feel) – ask questions to your project manager if something is not clear (say that you want to make the end-user experience the best there can be). You will be able to create a richer piece of code.

There are Project Managers, designers, analysts, subject matter experts and other specialized roles in a project. But the final product is being constructed by a developer. It is an empowering thought and when as a developer you feel empowered, you will go the extra mile.

 


Roni Banerjee

roniRoni has 16 years of experience in leading small to large scale IT projects for various markets. Roni successfully founded 2 companies spanning multiple locations and time-zones. He rolls up his sleeves and gets into software development anytime you ask him and database development is his passion – we call him “our sequel junkie”! Roni has a Bachelor’s in Engineering, his very valued PMP and is close to finishing his Global MBA from the coveted Warwick Business School in the UK. When asked about his personal life he says “We, my wife and 2 boys, live in the picturesque Hudson Valley region of New York. A Yankees and New York Giants fan, I also enjoy strumming my guitars every day, mixing recipes from different cultures when I get some time and hack away during an occasional round of golf.”

To App or not to App

May 4th, 2015 Posted by Technical No Comment yet

Technical solutions for business problems are like ordering coffee in Starbucks – tall / Grande / Venti / Trenta, black / regular / fat-free / 1% / 2%, Sugar / sugar-free (I’ve always wondered why it is ‘free’ it is not free of ‘sugar’ neither is it free of cost !! but I digress ……

Technical solutions for business problems are like ordering coffee in Starbucks –

  • tall / Grande / Venti / Trenta,
  • black / regular / fat-free / 1% / 2%,
  • Sugar / sugar-free (I’ve always wondered why it is ‘free’ it is not free of ‘sugar’ neither is it free of cost !! but I digress …

the point here is  Options !! – As you can read in our previous blog post (http://medullus.com/questions-to-ask-before-developing-an-application/)

In today’s blog post we outline the decision to App or not to App –

Early this year we were tasked to develop a solution for a logistics vendor which was facing challenges in proving the conditions of pallets during delivery at the time each vehicle leaves the warehouse.

Their first attempt with another software vendor was via an app that would click pictures and upload them tagged with each item in their ERP.

The challenge they faced was the syncing was taking too long and in certain devices it would lock up and hang the process. Also, the devices in use were not standard – some were using Samsung tabs running on different Android versions others in the main location were on iPad(s) running on iOS.

At this point we were called up to ‘rescue’ them and deliver a packaged solution to the initial problem.

Our first approach was to see if we can salvage and reuse any of the existing efforts. To this end we asked 2 vital questions ….. One of which should have been asked at the initial decision point.

  • Why did they go the app route?
  • Will / Can a network connection be present in the warehouses at all times?

In response to the first question they envisioned a scalable app upon which more functionalities can be added in time.

The simple answer to the second question was ‘YES’ (and a high speed one too!)

With these we went back to drawing board and see if we can introduce asynchronous programming in the sync routine in order to free up the device forms while the sync was in progress (keep an eye out for our upcoming blog on Asynchronous programming!)

Though the async calls resolved the app hang issues they were still unable to roll out A single type of hardware to all the users in all their warehouses.

Even though the app was not hanging during the sync routine … the sync was taking a looooooong time! After further analysis we found the bottleneck to be at the database connection point of the ERP.

At this point we went ahead with a responsive web application having its own database as a solution … this would make it a device-agnostic approach.

Technology Used

  • HTML 5
  • MVC 4
  • ENTITY FRAMEWORK 5.0.0
  • BOOTSTRAP 3.2.0
  • JAVASCRIPT
  • SQL SERVER 2008R2 and above

 

The front end was developed in HTML5 using Bootstrap framework (http://getbootstrap.com/). The application will read from the ERP database (via a web service) in real-time and the uploaded pictures will be synced back using a database job that will run on the background every 4 hours (the closest dispatch location from any warehouse was 6 hours out and it took around 30 mins for the largest batch to sync … hence 4 hours was a good frequency level).

While some Android devices had the option to reduce image resolution the IOS devices lacked that feature in it’s kernel and it could not be achieved without using any third party solutions. In order to overcome this burden we wrote a compression engine which reduced the image size during upload to dB.

The code snippet of Image Handling and Save to SQL Server are shown below
note** – the error handling routines are omitted for ease of understanding!

Getting Images from Device Camera:

blog-app-getting

Cropping larger size Images:

blog-cropping

Saving Images to SQL Server:

blog-saving

END RESULT:

blog-app

 

Note: This app is flexible to any device that support HTML5

 


Sam Banerjee

samSam brings years of Business Intelligence and Software System Analysis experience to Medullus Systems. Prior to being a partner/co-founder at Medullus Sam lead several scale projects in the BI world in big name corporations like Bristol Myers, Frasenius, and ADP Payroll. Sam brings new ideas to improve BI in companies, products and projects. Sam is a certified Microsoft BI Developer and holds a Master in Computer Sciences. When asked about himself, Sam says “If you can’t measure it, you can’t manage it. For this reason alone, cutting edge software, that fits your business, needs to be on your radar screen and my cell phone number on your speed dial!” On his personal life Sam is a proud husband and father to 2 boys and enjoys his “cutting edge” drum-set, rock-shows and the New York Giants.

5 points to consider in choosing a software development company for your project

May 1st, 2015 Posted by Business No Comment yet

The 1st question to ask, why choose, when I already have someone I work with or when my best friend has already referred me to some company? The simple answer is that as a business leader you have to ask questions, all the time, if you want to be ahead of your competition. Software is…

The 1st question to ask, why choose, when I already have someone I work with or when my best friend has already referred me to some company?

The simple answer is that as a business leader you have to ask questions, all the time, if you want to be ahead of your competition. Software is the shield and armor of every business today. If it is not properly implemented or supported, it can bring down a business. On the other hand a good software solution can provide big competitive advantages through operational efficiencies, customer management, supplier integrations and even create that entry barrier to your business that you have always wanted.

So ask these questions before the next big IT project that you want to undertake.

1) What is the software vendor’s innovation statement?

What is that you might say! There is the mission statement, some companies have vision statements but the innovation statement is there in the voice and culture of a forward thinking company. Where do you find that? Reading their blogs, their website content, viewing their offerings gives a decent idea; does it resonate with what you read about in the news? If you are not into tech news just follow a few blogs from the top technology companies for a few days – Microsoft, IBM, Google, Apple etc. In case you have not kept up with tech news, in the next few years it will be all about cloud, mobility, social media, big data, analytics etc. Maybe these are not crucial for your project needs, but a forward thinking IT Company will provide you a solution that will give you that competitive edge.

2) Are they a good fit for your business/business unit/team?

“Do not judge a book by its cover” so just going off of a website or blog should not be the only selection criteria. When you are looking for a software development company, a good starting point is their website, the testimonials, content etc. But before you do that, ask yourself this question – what is the culture of my business/unit/team? Is it traditional, corporate, functional, projectized, agile, DevOps oriented, emergent…? Culture is basically “the way we do things around here”. A software development company is not just delivering code; they are giving you a solution for your business need and/or problem. They will work with your team, end users and the solution will most probably permeate into your business, customers, suppliers and partners. So ask them questions like “What are your project management methodologies?” “Where are you heading in the next 18 months?” “How do you select projects?” Check their leadership team and see if they have online profiles – do they have similar business values/goals?

3) Check out their customer profile and industry focus and also ask them the same question

Do they have a varied customer base? In most cases that is a good thing for a software development company as they can bring best practices from different industries to your business. In today’s business the industry walls have been corroded and they spill over to each other. So having a diversified portfolio of customers and domain experience is a good thing for a software company. But there has to be some focus – a software company with no industry focus is a sign of a company that operates with no specific strategy – do you want to work with a company like that?

4) Do they list out their internal development, testing and implementation team for you?

Most software development companies have a front-facing sales person who has software development experience. But he/she will probably not be doing the actual work. Do you know who will do the actual development? You may say that that is up to the software company. But when you call a contractor to fix the roof of your house, you need to know who will be doing the actual work! Some companies list out their developers, testers in their website. You should ask the sales person about the team, including the specifics of the team members. You are the customer and you are in charge. If a software development company is uncomfortable with these questions or does not provide clear answers it should raise a flag in your mind.

5) What is their band width to do your project?

Every company will say there is ample band width! So how can you find that out? One way is to do a simple analysis. Ask yourself these 2 questions – What is the latest date by which this project needs to be done? When is the earliest that you can get started with the project? You will get a starting point. Next ask the software company (a) how many projects have they going on at the current moment? (b) How many developers do they have? If you are not getting these answers quickly or clearly there is a clear indication that the company is not in control of their band width. If you do get the answers do the math – take an average of 1 project per developer @ 3 months. So if there are 5 ongoing projects and there are 3 developers and your own project guestimate is 2 months, there is a good possibility of ample band-width (they can deliver in 1.5 months if they put in the 2 developers available). With the same company if your guestimate is 1 month, it might be tight. Again these are rudimentary numbers, but it does provide a guiding point.

At the end of the day you will pick someone you feel comfortable with. But having no guidelines is like picking up the yellow book, flipping to a page, closing your fingers and calling the 1st company you hit! While that may work out for some, it is a recipe for disaster when choosing your software development partner.

 


Roni Banerjee

roniRoni has 16 years of experience in leading small to large scale IT projects for various markets. Roni successfully founded 2 companies spanning multiple locations and time-zones. He rolls up his sleeves and gets into software development anytime you ask him and database development is his passion – we call him “our sequel junkie”! Roni has a Bachelor’s in Engineering, his very valued PMP and is close to finishing his Global MBA from the coveted Warwick Business School in the UK. When asked about his personal life he says “We, my wife and 2 boys, live in the picturesque Hudson Valley region of New York. A Yankees and New York Giants fan, I also enjoy strumming my guitars every day, mixing recipes from different cultures when I get some time and hack away during an occasional round of golf.”

Leverage the power of stored procedures

January 10th, 2015 Posted by Technical No Comment yet

Abstract When tasked to develop an application we believe there are three options and you can pick any two ! Do it right Do it quick Do it cheap Option 1 should be a default but ‘right’ is a relative term!  And depending on experience if not chosen then it always has repercussions on maintenance.…

Abstract

When tasked to develop an application we believe there are three options and you can pick any two !

  1. Do it right
  2. Do it quick
  3. Do it cheap

Option 1 should be a default but ‘right’ is a relative term!  And depending on experience if not chosen then it always has repercussions on maintenance.

In this post I will demonstrate one way of doing it right. Occasionally I will refer to an application that my company recently and successfully developed using this approach, along with the reasons why it was successful.

Business Requirement

Most forecasting applications (like MRP or Asset Management) has an inadvertent need of creating orders … it could be either Sales Orders, Purchase Orders or Work Orders.

These orders are based on a group of setting. The screenshot below outlines the settings for a healthcare asset management product

blog-Leverage1

 

Some of the underlying requirements (asked during the design and analysis sessions) were

  • Settings will be added or updated frequently
  • Settings will be different for different entities (departments)
  • Business logic around each settings may be updated from time to time till
  • Performance needs to be optimized since real time orders are required.

Technical Solution (Database Only)

Given the requirements we encapsulated the entire business logic using stored procedures … instead of using In-Line SQL or LINQ. While Linq does have some advantages such as abstraction and support across multiple databases we went with the stored procedure route for

  • Ease of deployment – the code does not need to be compiled (and deployed) anytime a business logic needs a change (a key requirement).
  • Network traffic – sprocs need only serialize sproc-name and argument data over the wire while LINQ sends the entire query. This can get really bad if the queries are very complex… which is usually the case a continuously moving requirement as such.
  • Performance – using sprocs we can optimize the queries using HINTS, indices and other techniques to speed up the transactions. While this can be done in-line sql – testing each time will require a code compilation.
  • Maintenance – a set of stored procedures is a very easy way to inventory exactly what queries may be running on the system. Using in-line queries one needs to run a trace of that covers an entire business cycle, or parse through all of the application code.
  • Troubleshooting – error logging (in database tables) allows us to pin point the source of any issues and updating the logic is only a matter of updating the stored procedures instead of … well you get the picture J
  • Below depicts the database objects
    • Table for storing the settings

blog-Leverage2

  • Log table

blog-Leverage3

  • Stored Procedure – where all the business logic is written – currently at version 66 !

blog-Leverage4

Conclusion:

As you can see the sproc is under continual revisions. The decision to implement the solution using a sproc for business logic was the key. The sprints in agile process were quick and easy to roll-out.

Yes there are various ways to hold your nose … I’ve demonstrated a few below

blog-Leverage

 


Sam Banerjee

samSam brings years of Business Intelligence and Software System Analysis experience to Medullus Systems. Prior to being a partner/co-founder at Medullus Sam lead several scale projects in the BI world in big name corporations like Bristol Myers, Frasenius, and ADP Payroll. Sam brings new ideas to improve BI in companies, products and projects. Sam is a certified Microsoft BI Developer and holds a Master in Computer Sciences. When asked about himself, Sam says “If you can’t measure it, you can’t manage it. For this reason alone, cutting edge software, that fits your business, needs to be on your radar screen and my cell phone number on your speed dial!” On his personal life Sam is a proud husband and father to 2 boys and enjoys his “cutting edge” drum-set, rock-shows and the New York Giants.

Questions to ask BEFORE developing an application

September 27th, 2014 Posted by Technical No Comment yet

Desktop or Web Application ? To App or Not to App ? Platform (Windows, Linux etc…) Technology (Microsoft, Open Source, etc…) As you might know these are the pre-requisites before any sort of development can begin. Each option has its pros and cons and the correct answers depend on various factors. In this post I’m… […]

Take the wait out of your application development

February 27th, 2014 Posted by Technical No Comment yet

Solving current problems with yesterday’s process will hurt your business … BIG TIME!
Software development has improved exponentially over the last few years … not only in technology but mainly in the way it is executed.
There is no point talking about buzz words like Big Data, HTML5, and Mobility etc… If takes too long to use and see the improvement in your business. […]

Miss any of these 10 points in a software development project and you are most likely going to fail!

February 27th, 2014 Posted by Business No Comment yet

Who should read this: Anyone remotely connected with IT! Tips: Be sure to click through the links – there are some cool videos and tools we use that you might find helpful. (1) Start with an official charter meeting – even if it is a 1 day project, and list everyone involved in […]

Organization culture and custom software development – really??

February 27th, 2014 Posted by Business No Comment yet

Ok you might ask what one has got to do with the other. Why should an architect or a developer (especially outsourced) worry about the culture of the organization when designing and developing a piece of software? Or why should the consumer of the software worry about whether the software is in lines with the… […]

How can you create a good Estimate for a project?

February 27th, 2014 Posted by Business No Comment yet

I follow the 8 step process: Step 1 – read the “request for proposal” document (could be a formal document, or an email or chat or a conversation log) once from top to end and make some points categorized under (a) clear, (b) not clear. Step 2 – Take each clear point and estimate time… […]

Outsourcing your software development projects – why and to whom?

January 27th, 2014 Posted by Business No Comment yet

In today’s world where business needs are changing at a very fast pace and technology is evolving at an even more faster pace, it is difficult to keep investing in in-house technological resources […]