Mechanical Software Developers work under general direction, applying their skills and expertise leading to software solutions that improve the accuracy, efficiency, thoroughness and speed at which staff can perform their duties.
Mechanical Software Developer work as part of a team whose core focus is to identify, develop and implement value-balanced technology-assisted solutions to enhance business and engineering processes. The outcome of this focus is the continual advancement of KLH Engineers, helping it to achieve and maintain a seat at the table of top performers in the field of professional MEPT engineering services.
Essential Duties & Responsibilities
Core Functions
“Full-Stack” software development in the domain of AEC (Architecture, Engineering, Construction)
Collaborate as part of a team to plan, engineer, author, test, deploy and maintain custom software solutions related to the AEC industry
Execute on custom software backlogs generated by the Mechanical Engineering Department
Utilize technologies such as Microsoft .NET (C# and VB.NET), Azure DevOps (TFVC and Git) and the Autodesk Revit API to create custom tools
Utilize Azure as a cloud platform for databases and web-based deployment services
Develop, deploy, test, and maintain various user interfaces and/or client applications
Day to Day
Collaboration - Working closely with mechanical engineers to ensure that software tools meet their goals and requirements. Developers are responsible for bridging the gap between mechanical engineering and software development. KLH operates in an empathy driven development environment that places emphasis on user and developer communication.
Requirement Analysis - Understanding the requirements of a project. This involves meeting with stakeholders to gather information on how a piece of software should operate, what problems it should solve, and what features it should have.
Design and Architecture - Designing the architecture of software tools based on user acceptance criteria. This includes deciding on the software's structure and modules, as well as how it will interact with Revit. This may involve creating diagrams and documentation.
Coding - Writing and modifying code for various software tools. This involves using programming languages and tools that are compatible with Revit's API (Application Programming Interface). Common languages for Revit plug-ins include C# and VB.NET.
Testing - Extensive testing to ensure tools work as intended and are free from bugs. This can involve unit testing, integration testing, automated testing, and manual testing within the Revit environment.
Integration with Revit - Developing the necessary hooks and connections to make tools function within the Revit software. This can involve creating custom tabs, buttons, and panels in the Revit user interface.
Performance Optimization - Optimizing the plug-in for performance to ensure it does not slow down Revit or cause crashes. This may involve improving algorithms, reducing resource consumption, and managing memory efficiently.
User Interface (UI) Design - Creating a user-friendly interface utilizing WPF, which may include dialogs, forms, and other elements for users to interact with.
Documentation - Creating user documentation that explains how to install, configure, and use developed tools. This can include user manuals, FAQs, and video tutorials.
Version Control - Using version control systems to manage and track changes to the codebase.
Bug Fixing and Updates - Addressing and fixing bugs that are reported by users, as well as providing updates and new features based on user feedback and changing project requirements.
Deployment - Preparing tools for deployment to users. This may involve creating installers, configuring licensing, and ensuring that tools are compatible with different versions of Revit.
Support and Maintenance - Providing ongoing support to users, answering questions, and addressing issues that arise after tools are in use.
Stay Informed - Keeping up to date with the latest developments in Revit and related technologies to ensure the tools remain compatible and take advantage of new features.
Qualifications
Bachelor’s Degree (B.S.) in Computer Science, Software Engineering, a related field, or equivalent work experience.
Mechanical engineering or design experience is a plus.
Experience And Competencies
3 years or more as a Software Developer or Engineer, specifically with Revit API development and integration.
Familiarity with API programming; Revit API experience is a plus.
Preferred knowledge of mechanical systems in the context of engineering or project management.
Proficiency in .NET using programming languages such as C# or VB.NET.
Development of desktop applications utilizing WPF as the UI framework.
Excellent problem-solving and analytical skills, with the ability to design creative and innovative solutions.
Ability to collaborate effectively with technical and non-technical stakeholders.
Ability to work in a fast-paced, dynamic environment
Azure cloud services and DevOps experience.
How strong is your resume?
Upload your resume and get feedback from our expert to help land this job
How strong is your resume?
Upload your resume and get feedback from our expert to help land this job