← Back Published on

UI/UX Summer Internship

Over the summer of 2021, I was accepted for an intern position at Siemens Process Systems Enterprise, a world leader in Advanced Process modeling, as a software developer.

Among their various development targets for their October release was a UI revamp of their 'gProms' model building platform. This platform was built using the Java Swing API. I was given the project to design and implement a 'dark mode' for their model building platform, integrating it into their codebase as a new UI feature.

My Contributions:

  • Dark Mode Feature Development:

I was able to integrate a modern and sleek UI library into the much older default Java Swing library. That was the easy part. The rest of the tasks focused on finding UI artifacts throughout the software, debugging the root causes, and creating clean and maintainable fixes for them.

  • Dependency Decoupling:

As software that is deployed to users with a range of users, the software comes packed with customisation features. With the introduction of the Dark Mode came the need to decouple the user-set customisations between the two. Adhering to key UI principles I learned from past projects and UI/UX research, I implemented changes to the software's features to set, apply, and store these customisations.

  • UI/UX Research Implementation:

In service of the scalability of my Dark Mode UI, I designed a tool to adjust default (often 'hardcoded') colours to those appropriate for a dark UI theme. Using academic UI/UX research and industry-leading design principles (mainly Google's), I created a tool that could be used to adapt colour schemes to a dark-themed UI.

  • Bug-fixing Legacy Code:

The codebase at PSE has been fine-tuned with over 15 years of development time. Integrating new features came with unforeseen interactions with this legacy code. I was taught the very best practices in debugging and professionally logging bugs within a shared codebase.

    Though my work was mainly based on UI/UX design, I learned a lot about maintainable development practices, practical use of design patterns, and industry-standard development processes such as code reviews (through Gerrit), and continuous integration (through Jenkins).

    I was also able to gain key professional development with experiences such as bi-weekly scrums, task/issue management (through Trac), and project presentations. 

    Being the sole developer on the project also allowed me to develop key task-management practices, constantly evaluating the priority list of features and bugs based on their resource costs and overall impact on the project outcomes.

    As of right now, my project has been included in their 2020.1 release.

    I am looking forward to being able to apply this experience in my future work.