Who am I? What did a Computer Scientist do during a typical career? Example: Scientific software engineering



I've recently been preparing some "cover letters" for a potential career change and it turns out I've had a reasonably varied career so far as a "Computer Scientist". Here's an example I did recently covering scientific computation and software engineering.

Scientific computation and software engineering

Developed a computer program for pasture growth modelling for DSIR (1985, New Zealand).

15 years experience with UNIX systems & kernel programming, distributed systems and Open systems (UNSW, start-up in Sydney, ABC TR&D, CSIRO Software Engineering experience). This was considered directly relevant to scientific software development due attention to detail and quality requirements, similar technology stacks and methodologies etc.

Senior Software Process Research Engineer (CSIRO Cross-divisional Software Engineering Initiative, I worked primarily with Plants, Tropical Agriculture, Soils, Land and Water) working with teams of managers including divisional chiefs, end-users, stakeholders, scientists, programmers, software engineers and other software process engineers working in other divisions to discover/research/customise/trial/improve/train others etc for best-practices in software development practices in CSIR0 (1996-1999). Also provided specific architectural and technology advice and hands-on assistance to integrate modelling environments, and re-architect modelling applications etc. Spent some time evaluating appropriate tools for light-weight software engineering support across distributed software projects (e.g. version control tools, testing tools, development environments, collaboration tools, etc), including modelling and simulation tools (as a lot of be-spoke scientific software was re-inventing the "wheel" as they were used for generic modelling and simulation. A lot of modelling in the last 2 decades has been focussed on climate change modelling).



Project manager and software architect, soil modelling software application in Division of Soils (1998-1999). Worked with scientists, stakeholders, end users, programmers to architect, develop and test a new program to integrate multiple approaches for modelling, analysing and visualising methods related to soil hydraulic properties and allows for integration in other modelling tools. Trialled best practices for scientific software engineering including use of modern Object oriented language (Java), methods and tools (Java, UML based architecture tools, trial of OO GUI methodology, custom architectural frame-work supporting pre and post conditions to facilitate automatic integration of new methods/algorithms over time, data/model providence linking and ability re-run models, explicit units and automatic unit conversion,  GUI prototyping tools, development and testing on multiple Operating systems for multiple browsers, use of Java Applets to facilitate rapid testing for end users, etc).

CSIRO Grid computing (cluster) project (2003), software architect for Grid computing project (CSIRO ICT Centre, eScience project) developed dynamic execution of astronomical image processing workflows using web services from large scale astronomical data archives on a Grid Data and Compute Cluster.

Visiting Senior Research Fellow/Project Manager/Chief technical resource (UCL OGSA Grid project, UCL Computer Science Department, London, 2004). Program manager for distributed Grid OGSA evaluation project (London 2 locations, Newcastle, Edinburgh) to establish and evaluated OGSA software and trial application software. Re-architected and trialled sample scientific chemistry application (modelling for drug design) as a distributed Hadoop-style map-reduce application using web services as first-order entities and explicit workflows. (This real application was subsequently replaced as the main trial application for the project with a synthetic application loosely based on it but which was more flexible and which had more realistic and larger data sizes). Many of the ideas discovered/reported formed the basis for public cloud computing (e.g. resource metering, pay-as-you go billing, virtual machines for isolation and security, use of web services for end users to manage and deploy application code for extreme scalability across distributed resources).

Note that there is some overlap between these areas and general software engineering, software architecture, distributed systems, data analytics, etc. I also recall that I worked with some super clever people in scientific R&D organisations with a passion for the "science" and making an impact. Sometimes there was a lot of "translation" from their domain specific scientific and mathematical way of thinking, into something that software engineers and end users could understand and hopefully do something useful with (hiding or abstracting away the detail was often critical. I used a lot of visual modelling techniques and prototyping to assist with this process. Also some effort to translate -and often re-engineer without adding too many bugs - from older spaghetti code languages and algorithms such as Fortran into Java what fun).

Comments

Post a Comment

Popular posts from this blog

Which Amazon Web Services are Interoperable?

AWS Certification glossary quiz: IAM

AWS SWF vs Lambda + step functions? Simple answer is use Lambda for all new applications.