Saturday, March 31, 2012

Software Developer

Job Description

Full life-cycle application development
Designing, coding and debugging applications in various software languages specially for iOS, Android.
Software analysis, code analysis, requirements analysis, software review, identification of code metrics, system risk analysis, software reliability analysis

Object-oriented Design and Analysis (OOA and OOD)
Software modeling and simulation
Front end graphical user interface design
Software testing and quality assurance
Performance tuning, improvement, balancing, usability, automation.
Support, maintain and document software functionality
Integrate software with existing systems
Evaluate and identify new technologies for implementation
Project Planning and Project Management
Maintain standards compliance
Implement localization or globalization of software

Skills

Read Code The ability to understand an existing code base in order to analyze its behavior and make fixes or enhancements to it.
Write Code This does not include any significant amount of design - just the basics of coding. An example is being able to write a method given the desired behavior (inputs, outputs, pre-conditions and post-conditions).
Design Software The ability to determine what code is necessary to achieve some specified functionality, particularly the higher-level structure or organization of the code.
Awareness of the Software Development Life Cycle This is an awareness of the 'big picture' of software development beyond just writing code - how the other life cycle stages (requirements, design, testing, and maintenance) impact coding and vice-versa. This includes an understanding of the types of methodologies (e.g. Agile or Waterfall) that can be used to progress through this cycle.
Use of Libraries and Frameworks This skill could also be called "Reuse Existing Code". This skill includes the ability to search for and evaluate libraries and frameworks based on how effectively they meet your needs and the ability to integrate the chosen package into the software you are writing.
Debugging The ability to analyze the behavior of code to diagnose a problem and find the underlying cause. This includes but is not limited to using a debugger.
Use of Integrated Development Environments The ability to effectively use modern IDEs and an understanding of thei