Programming Beyond Coding: Life-Cycle, Models & Mindset
Clarifying “Programming” vs. “Coding”
Programming ≠ Coding. Coding is only one activity within the broader discipline of programming.
Programming encompasses problem-solving, systems design, logical reasoning, testing, deployment, and maintenance.
Common misconceptions
Pop-culture stereotype: the solitary coder endlessly typing.
Real programming is collaborative, iterative, and user-focused.
Social anecdote: Trying to explain your job at parties/family gatherings—highlights the gap between public perception ("just writing code") and actual practice ("engineering solutions").
Dictionary Definitions & Their Gaps
Collated dictionary entries describe programming as "instructing a computer to use data to solve a problem."
Missing dimensions:
What kinds of problems?
Whose problems are being solved?
How to adapt to changing requirements?
Need richer principles to ensure solutions are high-quality, adaptable, and durable.
Viewing Programming Through the Software Development Life-Cycle (SDLC)
The Waterfall Model (Conceptual Overview)
Sequential, phase-locked model; progress flows only downwards like a waterfall.
Phases grouped into three macro-categories:
Pre-Programming
Client engagement & requirement gathering.
Techniques: interviews, observation, surveys.
Outcome emphasized later as user stories (CAB201): user-centric narratives capturing desired outcomes.
Feasibility analysis (technical, computational, economic).
Programming
Software design
Decompose the problem into modules; later recombine into a cohesive system.
In CAB201 we will use Object-Oriented Design (OOD); modules → classes.
Implementation
Translate designs into algorithms, data structures, and class interactions.
Language of choice in CAD201: C#.
Complexity increases with scale; solutions must cover multiple classes and rich relationships.
Coding is a subset of this stage.
Testing (CAB201)
Unit testing: individual classes.
Integration/system testing: full system behaviour.
Goal: confirm software meets functional & non-functional requirements.
Post-Programming
Deployment: release to users/marketplace → revenue begins.
Maintenance
Bug fixes, patches, new features.
Modern expectation of regular updates.
Limitations of Pure Waterfall
Assumes each phase is “perfectly” complete before the next begins—rare in reality.
Leads to rigid planning, late discovery of defects, and difficulty accommodating change.
Incremental & Iterative Development (Waterfall Extensions)
Incremental Development
Divide project into small tasks; apply (parts of) the waterfall workflow to each task.
After each increment, evaluate integration impact.
Benefits: earlier delivery of value, easier rollback of problematic changes.
Iterative Development
Repeat increments until all tasks are complete.
Embraces continuous learning & adaptation; mitigates risk of large late-stage failures.
Practical advice
Do not follow strict waterfall in assignments or industry.
Second assignment in this unit purposely complex—will require incremental & iterative strategies supported in tutorials.
Object-Oriented Principles & High-Quality Code
Using OOD (classes, encapsulation, inheritance, polymorphism) improves
Maintainability
Modularity
Ability to model complex, evolving domains.
Goal by semester’s end: combine incremental development with OOD to build robust, adaptable systems.
Holistic Definition Revisited
Programming = “Using data and behaviours to solve problems through a structured life-cycle of analysis, design, implementation, testing, deployment, and maintenance.”
Key nuance: quality of decisions in how we design, implement, and test determines longevity and success of software.
Real-World & Career Relevance
Thinking like a programmer (not merely a coder) prepares you for:
Handling complex, ambiguous requirements.
Collaborating with stakeholders.
Continuous delivery and improvement cycles expected in modern jobs.
Mastery of these concepts sets the foundation for a successful software-engineering career.
Ethical & Practical Implications
Solving whose problems? Ethical responsibility to prioritize user well-being and societal impact.
Sustainable code reduces long-term maintenance cost, technical debt, and environmental resource usage (energy, hardware life-cycle).
Connections to Future Lectures
CAB201: user stories & requirement analysis.
CAP201: object-oriented design, modular breakdown into classes.
CAD201: programming in C, deeper implementation challenges.
CABG01: testing strategies, quality assurance.
Key Takeaways (Quick-Fire Revision)
Programming > Coding: holistic process from concept to maintenance.
Waterfall = historically important but rigid; understand it, then transcend it via incremental & iterative methods.
OOD + incremental iteration = scalable approach for modern, complex software.
Always maintain user focus, ethical awareness, and adaptability.