https://github.com/shangxiao/resume/
I'm a developer specialising in Python, Django & PostgreSQL.
I'm a member of the Django Software Foundation & am currently part of the Triage & Review Team. I love working with open source and giving back to the open source community.
Although I mainly work with Python/Django/Postgres/React but I've always liked to explore new horizons and am not limited to the Django realm. I'm also currently re-learning functional programming through Haskell with a view to exploring Elm, Reason, Clojure or Scala and also feeding this back into my Python development.
In the web development world I tend to value simplicity over complexity, boring over exciting and readability/maintainability over optimised. I'm a fan of YAGNI - You Aren't Gunna Need It (yet) which encourages simple designs to satisfy initial business requirements with a view to enhancing later once necessity has been established. My methods may seem counterintuitive, such as delaying DRYness, but these approaches have been curated from experience. I also tend to avoid over-commenting code, focusing on the WHY rather than the WHAT and readable, self-documenting code. I find that Python is great for this. Although I find scalable architectures & microservices interesting, the Monolithic architecture with proven frameworks such as Django are my go-to.
I love testing, albeit with a somewhat controversial approach of preferring integration testing over unit testing. I find TDD useful but not required. I value coverage but I also recognise that it should be more of a guide than a goal. Testing strategy depends on the circumstances.
Finally, I rather enjoy teaching people (and learning myself) - especially the things that only come with experience. I value the roles that pair-programming, impromptu discussions and merge requests have in providing an opportunity to convey these experiences.
May 2018 - Current
Developing web systems in Python, Django, PostgreSQL & React / Scientific applications in NumPy, Pandas & HPC.
I currently am assisting a client getting their Django based platform up to full speed but have also done the following:
- Consulting for the Bureau of Meteorology: Working on the AWRA-CMS project modelling landscape waterflow on their in-house supercomputers using scientific programming methods & tools. Includes helping the existing team of developers improve their software development processes & practices.
- Consulting for previous client: maintaining an existing Django/React stack while also assisting in the crossover to a serverless, microservice, event-sourced architecture while also transitioning to a continuous deployment process with trunk-based development.
- Setup & run a commercial project while teaching programmers how to work with Django, PostgeSQL, React along with HTML/CSS & friends.
- Maintainance & further implementation additions to a legacy project with various technologies across different application compoonents (Django templates + Vue.js, DRF + React). Involved converting a component from Django admin to a custom admin interface.
- Assisting developers of various experience with technical questions on Django, Python & PostgreSQL.
- Delivering presentations/writing up tips on Slack on Django, Python & PostgreSQL.
November 2017 - January 2018
Assisted in maintenance of various projects involving Django & Node (Hapi).
July 2017 - November 2017
Started work on the backend Everproof's rework of their verification platform with Django & PostgreSQL. This involved lengthy design discussions with the CTO and other developers on the database & REST api design.
Some noteworthy features implemented:
- Implementation of organisational trees in a relational database via recursive subqueries
- Database level constraints via https://github.com/shangxiao/django-db-constraints
- Postgres specific database audit trail adapted from Matt Schinckel's
django-postgres
Sept 2015 - April 2017
Worked on various projects from e-commerce sites to front ends for medical devices. Most of our projects are managed as agile (or at least striving to maintain some sense of agility). Typically we like to use our favourite components: Django with Postgres (and Celery and/or Redis if needed) and React, Redux, Bootstrap and SASS (using BEM).
During my time at Common Code I worked as a lead/senior frontend & backend developer which meant being involved in the technology decision making process & teaching/mentoring junior developers.
React, Redux, Angular, Django, Hapi (Node), PostgreSQL, Celery, Redis, GraphQL, Relay, Bootstrap, SASS, BEM
- Rebuild the client-facting frontend and web server components for the Aussie Farmers Direct eCommerce platform using React, Redux, Bootstrap & Django.
- Frontend development for touchscreen for a medical device. Implemented with Angular.
2011 - 2015
During this period I chose to freelance in order to allow myself some time to try and write & sell my own products & services. Although eventually unsuccessful at gaining any notable traction with my own products, I did have an interesting time working on a few different paid projects.
The projects I worked on were either solo or in a small team. I was responsible for being both a business analyst (requirements discovery & management with the client) and a software developer.
Used various backend & frontend frameworks, libs & tools including:
- Python:
- Django
- Java:
- Spring, GWT, Maven, Gradle
- Databases:
- PostgreSQL, MySQL, SQL Server, Mongo
- JavaScript
- React, Angular, Meteor
- Mobile:
- PhoneGap
- Frontend:
- Bootstrap
- SASS
- "Coles Value Hunter" a proof-of-concept iPhone app for finding on-sale & discounted items for Coles supermarket (store specific). Written with Angular, Bootstrap & PhoneGap.
- Implemented improved frontend for searching & browsing Corrs Chambers Westgarth's document management system. Written in Angular & Bootstrap.
2003 - 2011
I worked as a both a full-stack developer and a business analyst responsible for working with clients to define requirements and to deliver their product. This role involved developing MVPs for people with business ideas as well as long term projects to support government based consulting work.
- PHP, jQuery, PEAR, Zend Framework
2000 - 2003
- Air traffic control systems with Lockheed Martin (ATOP)
- C on IBM AIX
- Sybase
- Django: Bugfixes, documentation updates, code reviews & ticket triaging. freenode/#django assistance (nick: shangxiao)
- Python package to convert functions into CLIs by using its signature to define argparse arguments: https://github.com/shangxiao/bargeparse
- Python package to make adding table-level database constraints to Django models a little easier: https://github.com/shangxiao/django-db-constraints
- OpenMRS: module contribution
- PEAR: authored various packages
- The University of Melbourne: Bachelor of Engineering (Software) 1998 - 2001
All example work can either be found in my GitHub profile, a few selected repositories are listed below:
- GitHub profile: https://github.com/shangxiao
- "Stupid Django Tricks": An adventure into seeing how far we can push the ORM: https://github.com/shangxiao/stupid-django-tricks
- "Djello", A Trello clone written in Django & used as a learning aide to show new programmers how far you can get without using an SPA: https://github.com/shangxiao/djello
- A typical React/Django example (albeit from 2017): https://github.com/shangxiao/django-shopfront