Course: Software Engineer (Python)
Suchona Ltd. is seeking a Mid-Level Software Engineer (Python) to join its Dhaka office and contribute to an ambitious migration of multiple large-scale PHP projects to Python using Django or Flask. The position targets candidates aged 26 to 40 with three to five years of relevant experience in IT-enabled services or e-commerce. The role emphasizes backend development, performance optimization, and maintainable code, making it suitable for engineers with a solid grasp of MVT architecture and ORM patterns. Applicants should be proficient in Python, comfortable with Django or Flask, and familiar with databases such as MySQL or PostgreSQL and caching solutions like Redis. Experience with RESTful APIs, Git, containerization (Docker), CI/CD, and cloud platforms is expected to ensure modern development workflows. Knowledge of PHP and Zend frameworks is advantageous to understand and translate legacy code accurately. The job requires analyzing existing PHP codebases, designing migration plans, refactoring for scalability, and documenting the process thoroughly. Candidates will collaborate closely with front-end and QA teams and will also support legacy systems during the transition period. Suchona Ltd. has listed two vacancies, offers a negotiable salary, and requires on-site work at its Motijheel office. The application deadline is 12 May 2025, and applicants are encouraged to submit a Video CV to enhance their profile. The posting, published on 17 April 2025, highlights the need for clear communication skills and the ability to work effectively in cross-functional teams. Overall, the role offers an opportunity to lead technical migrations, modernize enterprise systems, and advance one’s skills in Python-based web development within a growing e-commerce-focused company.Lesson
Topic: Migrating Large-Scale PHP Applications to Python (Django/Flask) — Job Case Study: Suchona Ltd. Software Engineer (Python)
Learning Outcomes
- Understand the responsibilities and context of a mid-level Python developer role focused on migration.
- Identify key technical skills required for converting PHP/Zend applications to Django/Flask.
- Recognize best practices for planning, documenting, and executing application migrations.
- Apply knowledge of databases, caching, and CI/CD to maintain performance and reliability during transition.
Conceptual Explanation
Migrating a large-scale PHP application to Python involves several coordinated phases: codebase analysis, architectural mapping, incremental rewriting, testing, and deployment. The developer first analyzes legacy PHP/Zend constructs to identify core business logic, data models, and integration points. Next, an equivalent MVT (Model-View-Template) structure using Django or a microservice-oriented Flask architecture is designed to preserve functionality while improving maintainability. Database schema and ORM mappings are translated to Django ORM or an appropriate SQLAlchemy model, followed by implementing RESTful APIs for frontend integration. Performance tuning often includes adding Redis caching layers, optimizing queries for MySQL/PostgreSQL, and introducing background task processing. Continuous integration and continuous deployment (CI/CD) pipelines, containerization with Docker, and cloud deployment strategies are used to ensure repeatable, safe releases. Throughout the migration, the developer maintains legacy systems, coordinates with QA for thorough testing, and documents the migration plan and code changes for future maintenance.
Bilingual (EN → বাংলা)
| English | বাংলায় (Bangla) |
|---|---|
| Software Engineer (Python) | সফটওয়্যার ইঞ্জিনিয়ার (পাইথন) |
| Migration | মাইগ্রেশন / স্থানান্তর |
| Legacy Code | পুরোনো কোড / লিগ্যাসি কোড |
| Performance Optimization | পারফরম্যান্স অপ্টিমাইজেশন |
| RESTful API | আরএস্টফুল এপিআই |
| Video CV | ভিডিও সিভি |
Important Notes
- Application Deadline: 12 May 2025 — submit applications and consider including a Video CV.
- Location: Dhaka — on-site work at Suchona Ltd. (Motijheel address).
- Experience required: 3 to 5 years; vacancy: 2; age preference: 26 to 40.
- Priority skills: Python (Django/Flask), DBMS (MySQL/Postgres), Redis, Git, Docker, CI/CD.
- Migration experience and familiarity with PHP/Zend frameworks are advantageous.
Exercises → True / False / Fill in the Blanks / MCQ / Matching / Descriptive / Creative
True / False
- Suchona Ltd. requires the Software Engineer to work remotely.
Answer
False. The job listing specifies work at office in Dhaka (on-site).
- Knowledge of Redis is mentioned as a desirable technical skill for caching and task management.
Answer
True. Redis is explicitly listed for caching and task management.
Fill in the Blanks
- Minimum experience required is ______ years.
Answer
3 years (the listing states 3 to 5 years of experience).
- The migration target frameworks are Django and ______.
Answer
Flask.
Multiple Choice Questions (MCQ)
- Which database systems are mentioned in the job requirements?
Answer
MySQL and PostgreSQL are mentioned as the primary relational databases.
- A) MongoDB and Cassandra
- B) MySQL and PostgreSQL
- C) Oracle and DB2
- D) SQLite only
- Which version control system is required?
Answer
Git is required for version control.
- A) SVN
- B) Mercurial
- C) Git
- D) Perforce
Matching
Match the term (A–D) with the correct description (1–4).
| Term | Description |
|---|---|
|
|
Answer
Matches: A–4 (Redis = cache), B–2 (Django ORM = ORM), C–3 (Docker = containers), D–1 (Zend = PHP framework).
Descriptive
Explain the primary challenges of migrating a monolithic PHP application to a Python-based framework and outline a high-level approach to mitigate them.
Answer
Primary challenges include understanding implicit business logic spread across the legacy code, differences in framework paradigms (Zend vs Django/Flask), data model mismatches, and ensuring no downtime or data loss during transition. To mitigate these issues: (1) perform a thorough code audit and create an inventory of features and dependencies; (2) design a migration plan that breaks the system into manageable modules or services; (3) implement automated tests and integration tests to validate functionality; (4) use database migration tools and maintain backward-compatible APIs during transition; (5) introduce CI/CD pipelines and staging environments to validate incremental releases; and (6) document changes and provide training or handover to operations teams.
Creative
Design a two-phase rollout plan (brief outline) for replacing a critical PHP service with a Django-based microservice while minimizing user disruption.
Answer
Phase 1 — Parallel Implementation: Implement the Django microservice with the same public API contract and deploy it to a staging environment. Add feature flags and an API gateway to route a small percentage of traffic to the new service. Run thorough smoke and performance tests while keeping the PHP service as the primary. Phase 2 — Gradual Cutover and Monitoring: Increase traffic to the Django service in controlled increments, monitor error rates and performance metrics, and roll back if critical issues arise. Once confidence is established, route all traffic to the Django service and decommission the PHP service after a verification window. Throughout both phases maintain database synchronization, run schema migrations in a backward-compatible manner, and communicate with stakeholders about expected changes and rollback plans.
Activities, Vocabulary, Homework, Practice Task
Activities
- Activity 1: Review a small PHP Zend controller and map its functions to Django views — document differences.
- Activity 2: Implement a simple REST endpoint in Flask and Dockerize it.
Vocabulary
- MVT — Model View Template (Django architecture)
- ORM — Object Relational Mapping
- CI/CD — Continuous Integration / Continuous Deployment
Homework
- Prepare a short migration plan (one page) for a user authentication module from PHP to Django. Include risks and rollback strategies.
- Record a 2-minute Video CV highlighting relevant migration experience (optional but recommended by Suchona Ltd.).
Practice Task
Clone a simple PHP project, identify its routes and models, then create equivalent Django models and at least one working view with unit tests. Submit code and a brief report describing mapping decisions.
Answer
Expected submission: repository URL with Django app, test coverage for mapped endpoints, README explaining mapping choices, and notes on any trade-offs (e.g., schema changes, library replacements).
Company: Suchona Ltd. — Address: 90/1 Motijheel C/A, City Centre, Suite#26-D1, Dhaka-1212, Bangladesh. Job Posted: 17 Apr 2025. Deadline: 12 May 2025.