Provided software development services span across multiple industries and cover all aspects of the software development life cycle. This section summarizes services I have provided throughout my long professional experience.
Software Development Life Cycle
- Defining project specifications and writing specifications documents.
- Preparing a project plan with estimation for the required time and resources.
- Researching for new methods or algorithms that may be required by the solution.
- Laying down an architecture for the system according to the project specifications.
- Designing the software modules and data models.
- Implementing the software modules and data model using the technology that fits the business needs the most.
- Writing test procedures and unit testing modules. Perform different phases of testing.
- Deployment using the appropriate deployment method.
- Providing support and maintenance.
Software Development Models
Working under different software development models, including:
I also have the required skills to work in a heavy multitasking process where more than one task is being
carried out at a time. Carrying out multiple tasks simultaneously can minimize the overall time required for those tasks, but
requires the ability to switch tasks without losing track of progress. Proper documentation of task progress is essential for
healthy progress in general, but is more essential with multitasking.
- Iterative process.
- Agile software development.
- Waterfall process.
Web Based Solutions
Provided web based solutions fall into two major lines of web development:
In addition to the above technologies, the following technologies are shared among all the camps and are adopted
- Microsoft: C#, .NET Framework 3.5, ASP.NET, ASP MVC, Silverlight, MS SQL Server 2000-2008, IIS, Windows.
- Open Source: Linux, Apache, MySQL, PHP, Perl.
I provide services to build desktop based applications that can run on Windows or Linux based systems. Technologies used include but are not limited to:
- C/C++, C#, VB, Java.
- STL, Boost, .NET Framework 3.5, MFC.
- Win32/64, WinForms, DirectX, OpenGL.
- GCC, Make Files.
Plug-ins and Add-Ons
In addition to standalone desktop applications, I also develop plugins and add-ons to existing applications to help integrate the client's projects
into those commercial applications. For example, a computer graphics studio might require a 3DS Max plugin to export 3D models into the studio's own custom file format.
Security is one of the very important aspects of any computer system. I make sure all my solutions follow all the required
security guidlines to protect against various attacks like code injection or data interception. My solutions also provide
MD5 or public/private key pair encryption wherever required. I also ensure that my workstation is fully secured to guarantee
the confidentiality of any important data that might be stored on the workstation.
Other Skills and Technologies
- UML: UML is used to document the specifications, design, and workflow of the system in development.
- OOD/OOP: Object-Oriented programming is used wisely in my solutions, avoiding any misuse or overuse of
OOP features. Unrelated classes don't inherit each other even if they have functionalities in common, generics aren't used except where
it really makes sense, etc.
- Strong Math and Problem Solving Skills: No matter what field or industry an IT solution is intended for,
math and problem solving skills are essential. My high skills in both guarantee a high quality product while meeting the project's deadline.
- Multithreading: In today's multi-core hardware architectures, and client/server software architectures, multithreading
and thread synchronization have only become more important than ever. My skills in this field satisfies all requirements.
- Client/Server Development: Whether it's through high level protocols like HTTP and web services or using low level
technologies like sockets, client/server development is listed among my high skills.
- Version Control: Version control softwares are always used to keep track of source code changes.
I have worked with GIT, Mercurial, SVN, CVS, as well as SourceSafe.
- Source Code Documentation: I guarantee the proper documentation of any developed source code. Documentation
generation tools are used as well including: Doxygen, .NET XML Comments, phpDocumentor, and JavaDoc.
- Advanced Tools: Advanced editors, IDEs, debuggers, and profiling tools are used to maximize development
Adapting New Technologies
Keeping up with the advances in technology is more important in the IT industry than in other industries. My fast learning skills
allow me to easily adapt new technologies, whether required by a client/employer or suggested by myself to meet industry
standards and user expectations.
© Sarmad Khalid Abdullah. All Rights Reserved.