Hanatech IoT is hiring Software Developer
Computer programmers and interactive media developers
Employer: Hanatech IoT Inc.
Industry Title: Information Technology
Job Type: Full Time, Permanent
Start Date: As soon as possible
Minimum Education: Bachelor of Software Engineering
Positions Available: 2
Location: Halifax, NS
NOC Group: Computer programmers and interactive media developers (NOC 2174)
NOC Job Title: Software developer
Expires in 30 days
Last Updated: 2020-03-09
Hanatech IoT Inc. is a leading Atlantic Canadian IoT solution provider, providing easy-to-use and cost-effective Solutions for Smart Buildings, Internet of Things (IoT). We are proud to provide our clients the comfort that comes with our robust, integrated and secure solutions. As a technology company, we work with a variety of local and national clients. Our performance-based business model has been shaped by mutually beneficial long-term relationships and positions us to work in close partnership with many dynamic and compelling companies and organizations. Our company and network are growing. Our industry is growing. Our opportunities are growing. And our people are growing. We hire people who are excited about learning, the opportunity to make a difference, and desire to be a strong and successful leader. Our most important investments are always our employees.
We currently have opening for software developer in IoT platforms for different industries.
Computer programmers write, modify, integrate and test computer code for software applications, data processing applications, operating systems-level software and communications software. Software developers write, modify, integrate and test computer code for Internet and mobile applications, computer-based training software, computer web applications, and other interactive software.
- Computer programmers
- Write, modify, integrate and test software code
- Maintain existing computer programs by making modifications as required
- Identify and communicate technical problems, processes and solutions
- Prepare reports, manuals and other documentation on the status, operation and maintenance of software
- Assist in the collection and documentation of user requirements
- Assist in the development of logical and physical specifications
- May lead and co-ordinate teams of computer programmers
- May research and evaluate a variety of software products.
- Interactive media developers
- Program animation software to predefined specifications for interactive video games, Internet and mobile applications
- Program special effects software for film and video applications
- Write, modify, integrate and test software code for e-commerce, Internet and mobile applications
- Assist in the collection and documentation of user requirements
- Assist in the development of logical and physical specifications
- May lead and co-ordinate teams of interactive media developers
- May research and evaluate a variety of interactive media software products.
- Software developer
Skills and knowledge
Required Technical Skills and Qualifications:
Working with technical equipment, instruments, machinery and other systems.
- Debugging and Reprogramming Technical Systems
- Modifying technical systems through upgrading, amending procedures, or correcting faults.
- Installing and Setting-Up Technical Infrastructure
- Coordinating the installation and integration of interconnected computer-based systems.
- Ability to Analyze Complex Technical Information
- Analyze Business Requirements and Assess Impact with Existing Database Architecture
- Analyze, Design and Implement Database Structures
- Conduct Research
- Consistently Seeking and Learning New Technology
- Detail Oriented
- Enhance the Functional and Technical Aspects of Products
- Excellent Problem Solver
- Experience Building Software Applications
- Experience with Source Code and Version Repository
- Experience working with Linux/Unix, Perl, or Shell
- Familiar with UI Toolkits and Frameworks
- Hands-On SQL Experience
- Java, Ruby, PHP or Python Experience
- Graph QL, Node JS, React JS knowledge is preferred
- Lead and Deliver Complex Software Systems
- Manage Multiple Projects in a Deadline-Driven Environment
- Microsoft ASP.NET MVC, Web API Experience
- Participate in Source Code and Design Reviews
- Passion for Developing Engaging Consumer Experiences
- Previous Experience Working Within an Agile Scrum Team
- Provide Development and Testing Support for Other Engineers
- Ruby on Rails Experience
- Solid Knowledge of Java
- Thorough Understanding of Computer Architecture, Operating Systems, and Data Structures
- Transform Requirements into Design Concepts and ERDs
- Troubleshoot and Debug Issues
- Understand Software Engineering Best Practices
- Work Well Independently and Within a Team Setting
- Work Within an Agile Scrum Team
- Working Knowledge of C, C++, and C#
- Write Clear and Detailed Technical Specifications and Documentation
- Holding Microsoft Certified Systems Administrator (MCSA), MCSD
- Experience with AWS and/or Azure services, Digital Oceans
Taking charge of the direction and resources of an organization.
- Co-ordinating and Organizing
- Organizing and coordinating the activities of groups and individuals to align their activities with organizational objectives.
- Directing and monitoring the performance of others.
Knowledge related to the design, building, use or repair of machinery, equipment, systems, and structures.
- Computer and Information Systems
- Knowledge of computer programming, hardware and software.
- Knowledge of principles, techniques and tools applied in the development of precision technical plans, drawings and working models.
Examining and evaluating information.
- Analyzing Information
- Examining data or facts to determine appropriate actions or recommendations.
- Inspecting and Testing
- Examining and investigating problems, sites or objects to ensure compliance with safety standards, laws or regulations.
- Determining phases and steps, defining activities and tasks and establishing schedules to complete objectives on time and within budget.
- Researching and Investigating
- Conducting studies to increase knowledge and understanding and examining facts to find cause or support for ideas.
Using various materials and formats to create work that is intended to be artistically satisfying, entertaining, instructive or functional.
- Producing work based on aesthetic or functional design concepts.
- Writing or composing original material with regard to format, order, clarity, conciseness, style, terminology and creativity.
- Read e-mail sent by clients or colleagues. For example, they receive brief e-mail from clients giving general descriptions of problems encountered or longer messages from colleagues that include technical details as well as potential solutions.
- Skim hardware and software product labels and license agreements to ensure that they are complying with conditions of use.
- Read about new products, new software programs and other programmer’ solutions to software problems in online magazines such as Wired, Slashdot and UNIX Syntax.
- Read ‘requests for proposals’ which describe clients’ information system’s needs, goals and timelines. They must fully comprehend clients’ requirements in order to create viable proposals.
- Review contract agreements and service level agreements outlining projected costs, licensing, ownership of materials, timelines and responsibilities.
- Read the application programmer interface specifications for new software products to identify program application, evaluate the technology, compare costs and explore system requirements and compatibility with other software programs.
- Read a variety of software user manuals. For example, computer programmers may read sections of the Macromedia Flash User Manual to find ways of moving images and of programming interactive features for a new web site.
- Read lengthy design specification documents to understand all the requirements and characteristics of applications to be developed, functional descriptions, overviews of the architecture, descriptions of customer interaction systems, details of application structures, main points and schema of each screen.
- Scan lists identifying the various features to be included in software.
- Scan activity schedules to identify tasks to be performed on a weekly basis during all phases of software development or web programming projects.
- Record software development activities and times on tracking forms.
- Plot user information such as age and gender on graphs and analyze them to better understand the characteristics of the people visiting websites.
- Scan flowcharts to get information about steps in processes, flows of data or command structures. For example, a programmer may consult an import subject flowchart to understand the various steps in the process of importing data prior to processing.
- Read and analyze complex technical reports consisting of database logs that they map against event application logs to identify the context in which system failures occurred. Both sets of logs present a chronology of all events in a table format listing times, modules and event messages written in computer language, and include the use of symbols to represent the message type. Computer programmers often sort through up to several hundred pages to discover where errors occurred. They analyze the information to identify how the errors occurred and the programming mistakes, if any, that need to be corrected.
- Consult and synthesize information from a variety of technical documents to develop software applications. They refer to the requirements specifications that define and list the main points of the application, detail its functional design, architecture and user interface and provide sample screen captures. Computer programmers also frequently consult voluminous technical manuals and programmer web sites to find out how to program a specific function in a given computer language. The technical documents are often lengthy and require specialized programming knowledge.
- Write short letters and e-mail to clients and colleagues to give project updates, inform them about changes and modifications and answer questions about how to access information or fix problems.
- Write step-by-step, clear and easy-to-follow application installation instructions for clients.
- Write proposals for software and web sites development projects. Computer programmers usually adapt existing proposals to reflect project requirements including specific tasks, timelines and deliverables.
- Write license agreements to ensure the product users provide remuneration to software developers. They use templates with established format, and select and modify standard clauses to reflect the specifics of a given contract.
- Write help files and training manuals for software applications and web sites to assist end-users navigate through applications and answer any questions they may have. These files have to be clearly written and the technical information needs to be adapted to a level that can easily be understood by the intended users.
- Write technical papers and other project documentation for the benefit of other programmers who may wish to modify the software to incorporate additional features or to build similar software. They describe how software products work, discuss the technology behind software designs and suggest further applications of the software.
- Write development guides or design specification documents which define clients’ needs and project requirements. These guides are intended to be used by computer programmers and are usually lengthy, detailed and highly technical. They also write application development cases to record programming done during software or web site development. For example, they document coding standards, development conventions and user interface visual designs.
- Write a variety of reports for clients. For example, they write status reports detailing progress made, problems encountered, solutions and next steps, and feasibility reports discussing the significance of testing results and recommend changes.
- Calculate total invoice amounts for the number of hours worked. They use established hourly rates for labor and add applicable sales taxes.
Scheduling, Budgeting & Accounting Math
- Monitor costs to ensure that projects stay within budgets.
- Schedule tasks for development projects on a daily, weekly and monthly basis. They may schedule the work of large teams comprising database architects, software designers, security experts, production teams and testing groups. They make adjustments to the schedules to accommodate unforeseen events and complete projects within the terms stipulated in contracts.
Measurement and Calculation Math
- Measure free disk space frequently to confirm that demand for disk space does not exceed available space.
- Use formulae to specify the width, height and position of web page design elements relative to other objects instead of hard coding them.
- Calculate length of time needed to download software programs depending on the rates of transfer and size of the files.
Data Analysis Math
- Gather system users’ data such as gender, age, data rates, home domains and log on types to compare system use across different user groups.
- Integrate mathematical functions into software routines. For example, a programmer may write software to calculate the percentage of the Canadian population in a certain demographic category or to average scores obtained in online quizzes.
- Analyze the number and size of data packets sent through the system during a test period and compare the rate or data with corresponding network carrier information. They compare test results with expected performance to identify glitches in systems and to guide them as they make changes or adjustments.
- Estimate the time required to repair software glitches or add new features.
- Estimate the amount of time required to develop software applications. There is no set estimation procedure; computer programmers usually look at old work plans to determine approximately how long similar programming took in the past and they subsequently adjust their estimates by comparing the complexity of both projects. Estimation errors can have a significant impact on project costs and ability to deliver products or release applications in time.
- Phone clients or application users in response to e-mail or voice mail reporting error messages in software applications. They speak directly with the individuals to determine the sources of errors.
- Attend meetings with clients and their representatives to collect information to clarify project specifications, make recommendations and reach agreement in defining system needs.
- Attend meetings with colleagues and co-workers to share information about the development of web pages or software application projects. For example, they discuss clients’ needs and project requirements with design teams and talk to members of system integration teams about problems with related applications and systems. They also consult database analysts to understand how data can be extracted and transformed to fit tables specified by clients and share information with graphic designers so they can adjust the timing of their work to fit overall project development.
- Present proposals to small groups of clients when offering services for web programming projects. Computer programmers have to convince clients of their abilities to achieve results professionally and promptly. Leading sales meetings is an important part of their jobs.
- Interact with Internet service providers when negotiating the management of web sites on their servers or when troubleshooting to identify the source of a computer problem.
- Inherit software projects abandoned by other programmers. They sometimes find that the programming is inconsistent and messy because it was written by a number of previous programmers, each with a different style. Computer programmers clean up the programming of the applications, section by section, always ensuring that the applications behave as expected and that no interruptions occur at the users’ end.
- Encounter ‘bugs’ in new software applications or errors while programming. For example, they may find that interactive features on websites are not responding as expected. Errors may result from a wide range of factors, some of which are unknown. Computer programmers troubleshoot the system, methodically testing one component at the time until the bug is found. Once the culprit code lines have been identified, they modify them and test applications to ensure proper functioning. In some cases, the process is one of trial and error until software applications function as originally intended.
- Find that software designs do not meet clients’ expectations. They call a meeting with clients and information technology experts to clarify expectations and designs. They redesign and make the required changes to the software code to get projects back on track and client satisfaction.
- Decide the names and naming conventions for the various components of software applications.
- Decide the protocols to be used to download and transfer files from central systems to local systems taking into consideration factors such as type and size of data, space available on receiving system, compressibility of data of data and portability of protocol to another system. Computer programmers usually have access to this type of information and rely on their experience or similar past projects to assist in decision-making. Errors can be corrected relatively easily however some additional programming time will be required.
- May decide tasks assignments for computer programmers on their teams. They identify the strengths and weaknesses of all team members and take into consideration their experience and preferences. They must keep in mind the quality of the intended products as well as the timelines to be met.
- Decide which development tasks are priorities. For example, when software development times are short, they may choose functionality over appearance.
- Choose programming methods and languages. For example, they may decide to employ object-oriented techniques and use control structures such as loops and conditional statements for a particular application taking into consideration factors such as project specifications, expected application performance, client preferences and their previous experience with similar projects. Poor decision making can lead to slow or malfunctioning applications and costly redesign.
- Evaluate the utility and relevance of features and functions of various web sites, software applications or products to determine how they could be applied to current projects.
- Evaluate the feasibility of clients’ requirements and specifications for software projects. They consider the time involved, allowable budget, technology available, ability to meet clients’ business needs and aspects of the projects they may find challenging. They also think about how programs might work together, specific capabilities of each program, other products that are available and clients’ requirements.
Job Task Planning and Organizing
Own Job Planning and Organizing
Are responsible for planning their own computer programming activities and meeting project deadlines. Computer programmers often work on several projects at the same time and must integrate and coordinate their workplans with those of several co-workers and colleagues such as website integrators, copywriters and web designers. Computer programmers often face competing demands on their time and must prioritize job tasks. Computer programmers must allow flexibility in their schedules to respond to unexpected requests from clients’ and problems in applications.
Planning and Organizing for Others
Computer programmers may coordinate and direct the numerous activities of testing groups and other infrastructure technicians.
Significant Use of Memory
- Remember where to find files on their computers.
- Remember programming information and logic until they can write it down.
- Memorize sections or sequences of frequently used programming code.
- Remember login names and passwords to access computer and network systems.
- Remember previous programming bugs and use this information for problem solving.
- Find relevant programming code, usually available on the Internet, to see how other programmers have circumvented or solved problems. For example, they may search on the Internet to find technically viable ways of incorporating video clips into web sites or to find solutions to fix computer bugs.
- Search for code examples when programming an uncommon or new feature for a software application. For example, they consult technical manuals, user and application guides, online help desks or support groups and co-workers and colleagues to identify programming solutions. In the majority of cases, there is no immediately available solution and information from various sources needs to be analyzed and amalgamated to create a unique solution to solve the problem encountered.
- Use communications software. For example, they exchange e-mail and attach documents with colleagues and clients, create address lists, schedule meetings and send invitations to participants.
- Use word processing. For example, they create, edit and format documents such as reports, proposals, user guides, workflow plans, schedules and specifications documents.
- Use graphics software. For example, they manipulate photographs of clients’ products by adjusting size, color or contrast. They create animations and visual representations of clients’ products. They may also use presentation software such as PowerPoint to create slide shows outlining the development process for websites including components such as methodology, architecture, data access and ‘lookup.’
- Use spreadsheets. For example, they create list of tasks and timelines for projects, track feedback or comments, build tables and graphs, program macros to produce statistics and transform list of data into different kinds of lists.
- Use the Internet. For example, they perform searches for programming code, information about software or solutions to problems. They visit vendors’ web sites, participate in exchange forums and post descriptions of problems on bulletin boards. They visit and evaluate a variety of web sites for specific features and functions and may connect directly to clients’ systems to find and fix programming errors.
- Use databases. They design, create, manage, update and query the databases. They may use database application development tools to develop custom software specific to clients’ needs.
- Do programming and systems and software design. For example, they develop web pages with interactive or animation features, create interfaces for databases, develop information management systems with query capabilities, create capability to validate information, program e-mail messaging features, and link various documents, tables and web pages. Computer programmers require specialized knowledge of multiple computer languages, codes and mastery of many other system development applications. They must be able to identify when a particular language is best suited for a given application and offer the capability to program the features and functions to meet clients’ needs.
Other Essential Skills:
Working with Others
Computer programmers work independently when designing, writing, testing or troubleshooting software applications. Often, computer programmers are members of teams for large-scale projects. In these cases, while they still work independently on their assigned tasks, they need to coordinate and integrate their work with that of other computer programmers, copywriters, web designers, database administrators and systems analysts.
Computer programmers set their own learning goals and are responsible for identifying learning resources. They regularly consult co-workers, colleagues and supervisors and learn from these discussions. They also learn by reading trade magazines, software manuals, user guides and numerous online resources. Computer programmers participate in formal training activities such as taking courses on particular technical topics through off-site training organized by vendors or at a college or university. They also attend professional conferences or seminars offered through professional associations. The information technology field is fast paced and computer programmers must constantly maintain and update their skills.
Expiring: April 14, 2020
If you have what it takes and would like to be part of this expanding, fast-paced, and exciting industry, we’d like to see your resume. Please submit your resume to [email protected]. Your email subject MUST be:
Subject: Software developer, YOUR complete name
For more information, please contact our office manager Anne Marie at 1-844-HANATEC ext. 33