Practical Considerations for Software Development