18 February 2012

Software Engineering: What is Programming About?

Software Engineering
Software Engineering Series

According to Wikipedia, computer programming (shortly programming or coding) is “the process of designing, writing, testing, debugging, and maintaining the source code of computer programs”. That’s an extensive definition, because typically programming refers mainly to the writing of a set of instructions understandable by a computer or any other electronic device. At least that’s what programming was at its beginnings. 

With time, giving the increasing complexity of software, programming included also activities like gathering requirements, architecting, designing, testing, debugging and troubleshooting, refactoring, documenting, configuring, deploying, performing maintenance, etc. Each of these activities comes with their own set of methods, procedures, processes, models, methodologies, best/good practices, standards and tools. In addition, when we look at the architecture of an application, we can delimit several layers: server vs. client, front-end (user interface), business layer, backend (database), transport (network), communication or hardware – they coming with their own set of technologies and knowledge luggage, and requiring some specialization too.

However, making abstraction of all these, programming implies the (partial) knowledge of a programming language, an artificial language used to communicate with machines, in terms of language syntax, semantics and built-in libraries, and of a IDE (Integrated Development Environment), an application in which the code is written, compiled/interpreted and debugged. As programming can be often a redundant task, being necessary to solve the same kind of problems or to write the same kind of instructions, in addition to the various structures and techniques made available in order to minimize redundancy, a programmer can take advantage of a huge collection of algorithms, abstracted step-by-step instructions, and afferent technical literature. The deeper needs to go their understanding, the broader the set of knowledge to be acquired for it.

And even if we consider all above, that’s not enough because programming is used in order to model and solve business-specific problems. So is required some minimal knowledge of the respective business domains, and that’s quite a lot if we consider that each project may address one or more business domains. Talking about projects, as most of the programming is performed within projects, a programmer needs to have some knowledge of the procedures, methods and methodologies for project management and team management. That’s not programming anymore, but it’s part of the landscape and nowadays is kind of a must because programming is performed within projects and teams. This means also that a programmer needs to cover several important interpersonal skills, to which add up customer oriented, social and thinking skills. They are important because they impact directly or indirectly the act of programming, and many ignore this.

It’s important to stress that programming is not only the knowledge of languages, algorithms, tools, methods, models, practices, methodologies, standards, but also their adequate use in order to make most of the programming experience. Or as a long time ago retrieved quotes puts it: “programming is 10% science, 20% ingenuity, and 70% getting the ingenuity to work with the science” (anonymous). We all (or almost all) master our native language to the degree of writing sentences or communicating, though it takes skills to communicate effectively and efficiently, or of making from language a tool of expression through poetry or other forms o literature. Fantasizing a little, programming is like writing poetry, is one thing to write chunks of words, and another thing to write something meaningful. And programming is a lot about interpretation and representation of meaning in order to solve problems, is about understanding and breaking down complexity to a level that can be translated in meaning to machines. 

Programming is an art, to the same degree each endeavor can be transformed in art. It requires skills, knowledge, dedication, creativity, and most of all the pleasure of programming. Programming is a state of spirit, is a way or model of thinking, of seeing the whole world in computable terms.

16 February 2012

Project Management: Acceptance Criteria (Definition)

"The criteria that a product or product component must satisfy to be accepted by a user, customer, or other authorized entity." (Sandy Shrum et al, "CMMI®: Guidelines for Process Integration and Product Improvement", 2003)

"Those criteria, including performance requirements and essential conditions, which must be met before project deliverables are accepted. " (Cynthia Stackpole, "PMP® Certification All-in-One For Dummies®", 2011)

"A set of conditions that is required to be met before deliverables are accepted." (For Dummies, "PMP Certification All-in-One For Dummies" 2nd Ed., 2013)

"Those criteria, including performance requirements and essential conditions, which must be met before project deliverables are accepted." (Jeffrey K Pinto, "Project Management: Achieving Competitive Advantage" 5th Ed., 2018)

"Formal agreement that a service, process, plan or any other deliverable is complete, accurate, reliable and it meets its specifications" (ITIL)

"The exit criteria that a component or system must satisfy in order to be accepted by a user, customer, or other authorized entity." [After IEEE 610] (Software Quality Assurance)


15 February 2012

Project Management: Corrective Action (Definitions)

"Acts or deeds used to remedy a situation, remove an error, or adjust a condition." (Sandy Shrum et al, "CMMI®: Guidelines for Process Integration and Product Improvement", 2003)

"The process of returning some aspect of project performance to a more desired state." (Timothy J  Kloppenborg et al, "Project Leadership", 2003)

[Corrective feedback:] "Instructional responses to learner answers to a practice exercise that tell the learners whether they answered correctly or incorrectly. Contrast with explanatory feedback." ( Ruth C Clark, "Building Expertise: Cognitive Methods for Training and Performance Improvement", 2008)

"Documented direction for executing the project work to bring expected future performance of the project work in line with the project management plan." (Cynthia Stackpole, "PMP® Certification All-in-One For Dummies®", 2011)

[Corrective Feedback:] "Instructional responses to answers to a practice exercise that tells the learner whether they answered corrected or incorrectly. Contrast with Explanatory Feedback." (Ruth C Clark & Richard E Mayer, "e-Learning and the Science of Instruction", 2011)

"The response, such as defect repair or preventive action, to any shortcoming found in a quality audit." (Bonnie Biafore & Teresa Stover, "Your Project Management Coach: Best Practices for Managing Projects in the Real World", 2012)

"An intentional activity that realigns the performance of the project work with the project management plan."" (For Dummies, "PMP Certification All-in-One For Dummies" 2nd Ed., 2013)

[Corrective controls:] "Mechanisms that repair damage caused by an undesired action and limit further damage, such as the procedure to remove detected viruses or the use of a firewall to block an attacking system." (Weiss, "Auditing IT Infrastructures for Compliance" 2nd Ed., 2015)

10 February 2012

Project Management: Scope Creep (Definitions)

"Adding features and functionality (project scope) without addressing the effects on time, costs, and resources, or without customer approval." (Cynthia Stackpole, "PMP® Certification All-in-One For Dummies®", 2011)

"The tendency for people to sneak extra work and outputs into the project’s list of responsibilities. Can cause a project to fail under the burden of additional work without the corresponding resources." (Mike Clayton, "Brilliant Project Leader", 2012)

"The uncontrolled expansion to product or project scope without adjustments to time, cost, and resources." (For Dummies, "PMP Certification All-in-One For Dummies, 2nd Ed.", 2013)

"Additional activities beyond the defined or expected scope of a project. Scope creep often results in missed deadlines and increased costs." (Darril Gibson, "Effective Help Desk Specialist Skills", 2014)

"When the original plans or goals of a project expand. Common with projects, particularly poorly planned projects." (Weiss, "Auditing IT Infrastructures for Compliance, 2nd Ed", 2015)

"When features, functions, or attributes are added to a product during development that goes beyond the agreed-upon product requirements. When this condition occurs, the product is said to be experiencing scope creep. Scope creep is generally considered to be the number one cause of cost and schedule overruns in development projects. (Alternatively, this is sometimes called feature creep.)" (Steven Haines, "The Product Manager's Desk Reference", 2008)

"Adding features and functionality (project scope) without addressing the effects on time, costs, and resources, or without customer approval." (Jeffrey K Pinto, "Project Management: Achieving Competitive Advantage 5th Ed.", 2018)

"The insidious expansion of the product scope (i.e., expected functionality of the product, service, system, or result) that also expands or increases the project scope (i.e., the amount of work required) without a commensurate adjustment to or trade-off in the schedule, budget, resources, and/or quality, resulting in increased risk for the Performing Organization." (H James Harrington & William S Ruggles, "Project Management for Performance Improvement Teams", 2018)

"Also called requirement creep, this refers to uncontrolled changes in a project’s scope. Scope creep can occur when the scope of a project is not properly defined, documented and controlled. Typically, the scope increase consists of either new products or new features of already approved products. Hence, the project team drifts away from its original purpose. Because of one’s tendency to focus on only one dimension of a project, scope creep can also result in a project team overrunning its original budget and schedule. For example, scope creep can be a result of poor change control, lack of proper identification of what products and features are required to bring about the achievement of project objectives in the first place, or a weak project manager or executive sponsor." (ISTQB) 

06 February 2012

Project Management: Project Charter (Definitions)

"A document issued by senior management that formally authorizes the existence of a project. Provides the project manager with the authority to apply organizational resources to project activities." (Timothy J  Kloppenborg et al, "Project Leadership", 2003)

"A document issued by an executive, project sponsor, or customer, announcing a project and delegating authority to the project manager." (Bonnie Biafore, "Successful Project Management: Applying Best Practices and Real-World Techniques with Microsoft® Project", 2011)

"A document issued by the project initiator or sponsor that formally authorizes the existence of c a project, and provides the project manager with the authority to apply organizational resources to project activities." (Cynthia Stackpole, "PMP® Certification All-in-One For Dummies®", 2011)

"A statement of objectives, scope, and stakeholders or participants in a project or program." (DAMA International, "The DAMA Dictionary of Data Management", 2011)

"A document officially announcing an approved project. Distributed by the project sponsor, the charter identifies the project manager and the extent of the project manager's authority." (Bonnie Biafore & Teresa Stover, "Your Project Management Coach: Best Practices for Managing Projects in the Real World", 2012)

"a project management document that defines a project scope, objectives, benefits, assumptions, etc. May also identify team assignments, project sponsor, time and cost estimates and constraints, and areas that are out of scope." (Bill Holtsnider & Brian D Jaffe, "IT Manager's Handbook" 3rd Ed., 2012)

"A document that formally authorizes a project to move forward. Having such a document reduces project cancellation risk due to lack of support or perceived value to the company. A charter documents the project's overall objectives and helps manage expectations of those involved." (Robert F Smallwood, "Information Governance: Concepts, Strategies, and Best Practices", 2014)

"The project charter is the document issued by the project initiator or sponsor that formally authorizes the existence of a project and provides the project manager with the authority to apply organizational resources to project activities. It documents the high-level information on the project and on the product, service, or result the project is intended to satisfy." (Cate McCoy & James L Haner, "CAPM Certified Associate in Project Management Practice Exams", 2018)

01 February 2012

Project Management: Work Breakdown Structure (Definitions)

"A deliverable-oriented grouping of project elements that organizes and defines the total work scope of the project. Each descending level represents an increasingly detailed definition of the project work." (Timothy J  Kloppenborg et al, "Project Leadership", 2003)

"A method for breaking your project into component tasks and organizing your management structure." (Michael S Dobson, "The Juggler's Guide to Managing Multiple Projects", 2003)

"An arrangement of work elements and their relationship to each other and to the end product." (Sandy Shrum et al, "CMMI®: Guidelines for Process Integration and Product Improvement", 2003)

"The process of dividing a project into manageable tasks and sequencing them to ensure a logical flow between tasks." (Lynne Hambleton, "Treasure Chest of Six Sigma Growth Methods, Tools, and Best Practices", 2007)

"A structured list of all activities and tasks required to complete a project." (Steven Haines, "The Product Manager's Desk Reference", 2008)

 "A work breakdown structure (WBS) is an arrangement of project elements consisting of deliverables or project phases. It structures and defines the overall project content and scope." (Lars Dittmann et al, "Automotive SPICE in Practice", 2008)

"A deliverable-oriented hierarchical decomposition of the work to be executed by the project team to accomplish the project objectives and create the required deliverables. It organizes and defines the total scope of the project." (Project Management Institute, "Practice Standard for Project Estimating", 2010)

"A hierarchical diagram showing work broken down into smaller packages to facilitate estimating work and costs, and tracking progress." (Bonnie Biafore, "Successful Project Management: Applying Best Practices and Real-World Techniques with Microsoft® Project", 2011)

"An arrangement of work elements and their relationship to each other and to the end product [CMMI]." (International Qualifications Board for Business Analysis, "Standard glossary of terms used in Software Engineering", 2011)

"Formal tool that breaks the project (the work) down into a structure – allowing a firm inventory of tasks, in a logical hierarchy." (Mike Clayton, "Brilliant Project Leader", 2012)

"The framework in which the project goal is deconstructed into manageable, task-sized details called work packages to identify all work to be done to complete the project." (Bonnie Biafore & Teresa Stover, "Your Project Management Coach: Best Practices for Managing Projects in the Real World", 2012)

"A hierarchical decomposition of the total scope of work to be carried out by the project team to accomplish the project objectives and create the required deliverables." (For Dummies, "PMP Certification All-in-One For Dummies, 2nd Ed.", 2013)

"A task-oriented detailed breakdown of activities which organizes, defines, and graphically displays the total work to be accomplished in order to achieve the final objectives of a project. WBS breaks down the project into progressively detailed levels. Each descending level represents an increasingly detailed definition of a project component. In CPM scheduling, the components at the lowest WBS level are used as activities to build the project schedule." (Christopher Carson et al, "CPM Scheduling for Construction: Best Practices and Guidelines", 2014)

"The planned work to take place in a project hierarchically decomposed into work packages of 80 hours or less." (Cate McCoy & James L Haner, "CAPM Certified Associate in Project Management Practice Exams", 2018)

"A hierarchical decomposition of the total scope of work to be carried out by the project team to accomplish the project objectives and create the required deliverables." (Project Management Institute, "Practice Standard for Scheduling  3rd Ed.", 2019)

"An arrangement of work elements and their relationship to each other and to the end product." (CMMI)

Related Posts Plugin for WordPress, Blogger...

About Me

My photo
IT Professional with more than 24 years experience in IT in the area of full life-cycle of Web/Desktop/Database Applications Development, Software Engineering, Consultancy, Data Management, Data Quality, Data Migrations, Reporting, ERP implementations & support, Team/Project/IT Management, etc.