|
|
(15 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| The title '''Senior Software Engineer''' is reserved for persons working in one of the companies associated with the organization and/or in [[Ekkotek Ltd.]], which serves as the [[Technology Transfer]] for both the [[Cyprus Neuroscience and Technology Institute]] and [[NETS]]. | | The title '''Senior Software Engineer and Project Manager''' is reserved for persons working in one of the companies associated with the organization and/or in [[Ekkotek High-tech business incubator|Ekkotek Ltd.]], which serves as the [[Technology Transfer Office]] for both the [[Cyprus Neuroscience and Technology Institute]] and [[N.E.T.S. Mediterranean Graduate School of Applied Social Cognition]]. |
|
| |
|
| The key responsibilities are:
| | ==People with this title== |
| # Work closely with upper management to ensure prioritization of work according to Board priorities
| | {{#categorytree:Senior Software Engineers and Project Managers|mode="all" |hideroot=on|mode=pages|style=bold}} |
| # Responsible for planning, processing and performing all jobs and tasks in an efficient manner with no need for assistance from the supervisor | |
|
| |
|
| Prioritization[edit]
| |
| Main article: Requirement prioritization
| |
| A key aspect of Product Management is the correct prioritization of enhancements. Here's a method that works well (borrowed and adapted from Joel Spolsky):
| |
|
| |
|
| Identify the panel, i.e. whose opinion you are going to seek
| | <u>The key responsibilities are:</u> |
| Make a list of all items
| | # Work closely with upper management to ensure prioritization of work according to Board priorities. |
| Estimate the effort required (either in days or in money) - this needs to be very rough and approximate
| | # Responsible for planning, processing, performing and supervising all jobs and tasks in an efficient manner with no need for assistance from a supervisor. |
| Add up the total effort, call it E
| | # Efficient and explicit prioritization of tasks and supervision and support of [[Software and Systems Developer|Software and Systems Developers]] to ensure their timely implementation and completion. |
| Give the panel members a budget of 0.5 × E each - they can place this any way they like, including all on a single item. You should disclose the rough estimates to the panel, as it may influence their vote.
| |
| Rank the items in terms of the ratio Votes / Estimate
| |
| Do as many of the items as the actual budget allows, respecting the sequence
| |
| | |
| | |
| | |
| In more detail the responsibilities include:
| |
| | |
| * Work closely with [[Software and Systems Developer| Software and Systems Developers]] to design and develop programming systems making specific determinations about system performance.
| |
| Responding promptly and professionally to bug reports.
| |
| Expected to conduct system analysis and development, with limited support from professional staff, to keep our systems current with changing technologies.
| |
| Analyze, design, coordinate and supervise the development of software systems to form a basis for the solution of information processing problems.
| |
| Analyze system specifications and translate system requirements to task specifications for junior programmers.
| |
| Responsible for analysis of current programs including performance, diagnosis and troubleshooting of problem programs, and designing solutions to problematic programming. | |
| Responsible for developing new programs and proofing the program to develop needed changes to assure production of a quality product.
| |
| Responsible for development of new programs, analyzes current programs and processes, and making recommendations which yield a more cost effective product.
| |
| Writes, edits, and debugs new computer programs for assigned projects, including necessary records and desired output.
| |
| Tests new programs to ensure that logic and syntax are correct, and that program results are accurate; assists lower-level programmers with programming assignments.
| |
| * Ensure that code documentation is happening consistently throughout the development process by listing a description of the program, special instructions, and any changes made in database tables on procedural, modular and database level.
| |
| Search, summarize and keep the team abreast of strategic information from all sources
| |
| Capable of writing proposals or papers.
| |
| Making presentations to customer or client audiences or professional peers.
| |
| Maintain positive client interactions.
| |
| Strong and effective inter-personal and communication skills and the ability to interact professionally with a diverse group of clients and staff.
| |
| Responsible for communicating with engineers and manufacturer's technical support staff regarding programming needs and performance.
| |
| Provide general administrative support to the organization
| |
| Provide feedback to analysis/training staff about performance considerations / usability issues concerning software specifications and implementation.
| |
| Research and recommend software tools to management.
| |
| Provide assistance to testers and support personnel as needed to determine system problems.
| |
| Review, to the extent possible, changes in code and the environment that will affect system performance.
| |
| Provide recommendations to management concerning issues of programmer productivity and software development management.
| |
| | |
| Additional skills and/or areas of expertise:
| |
|
| |
|
| | <u> What the Board expects</u> |
| * Ability to solve problems quickly and completely. | | * Ability to solve problems quickly and completely. |
| * Ability to multi-task and stay organized in a dynamic work environment. | | * Ability to multi-task and stay organized in a dynamic work environment. |
| * Possess a positive attitude.* Ability to identify tasks which require automation and automate them. | | * Possess, and send out to others, a positive attitude, as well as ensure pleasant working conditions for all. |
| * A solid understanding of networking/distributed computing environment concepts.
| |
| * Solid understanding the principles of routing, client/server programming.
| |
| * Possess excellent communication skills, with an emphasis on verbal and written communication.
| |
| | |
| Ability to "think outside the box".
| |
| Consult with the Lead Programmer and the Technical Manager regarding professional skill development.
| |
| Prepare reports and analyses setting forth progress, adverse trends and appropriate recommendations or conclusions.
| |
| Participate in development of long range planning for new projects and facilities.
| |
| Experience and ability to teach or instruct co-workers.
| |
| Providing advice, training and technical support for various projects.
| |
| Working closely with management team in evaluating current systems and making decisions on future development.
| |
| Possess extremely advanced technical skills.
| |
| As new technologies emerge and impact our systems, expected to learn these technologies very quickly and resolve any problems involved in integrating new technologies with our systems.
| |
| | |
|
| |
|
|
| |
|
| ====Additional Technical Skills wished but not required ====
| | <u>Responsibilities include:</u> |
| * Expert knowledge of several computer languages | | * Analyze, design, coordinate and supervise the development of software systems. |
| * Expert knowledge of data structures. | | * Work closely with [[Software and Systems Developer| Software and Systems Developers]] to design and develop programming systems. |
| * Expert knowledge of computer logic and flow-charting. | | * Respond promptly and professionally to bug reports. |
| * Expert knowledge of computer program design methods and techniques. | | * Expected to conduct system analysis and development, with limited support from professional staff. |
| * Expert knowledge of all database vendor versions. | | * Analyze system specifications and translate system requirements to task specifications for [[Software and Systems Developer| Software and Systems Developers]]. |
| * Expert knowledge of all compiler versions. | | * Test new programs to ensure that logic and syntax are correct, and that program results are accurate. |
| * Ability to learn new programming languages quickly. | | * Assist [[Software and Systems Developer| Software and Systems Developers]] with programming assignments. |
| * Good knowledge of mathematical and statistical principles and formulas. | | * Ensure that <u>code documentation</u> is happening consistently throughout the development process by listing a description of the program, special instructions, and any changes made in database tables on procedural, modular and database level. |
| * Assists the Programmer Analysts in designing programs and databases. | | * Ensure that <u>code is always structured</u> and any other programmer can continue coding without need for consultation and new learning. |
| Ability to write, edit, and debug computer programs to achieve desired output.
| | * Consult with, and advice the [[Lead Software Design Engineer]] and the [[Senior IT Manager]] regarding professional software for sharing and maintaining code, bug and version control. |
| Ability to work productively in a team.
| | * Search, summarize and keep the team abreast of strategic information from all sources. |
| Expert knowledge of maintaining and debugging live software systems.
| | * Capable of writing proposals or papers. |
| Expert knowledge of writing program documentation.
| | * Making presentations to customer or client audiences or professional peers. |
| In-depth technical knowledge of the current hardware.
| | * Maintain positive client interactions. |
| Expert knowledge of used operating systems.
| | * Strong and effective inter-personal and communication skills and the ability to interact professionally with a diverse group of clients and staff. |
| Expert knowledge of standard development tools.
| | * Provide recommendations to management concerning issues of programmer productivity and software development management. |
| Expert knowledge of networking technologies from the programmers prospective.
| | * Consult with the [[Lead Software Design Engineer]] and the Management regarding professional skill development. |
| Ability to determine whether a particular problem is caused by hardware, operating systems software, application programs, or network failures.
| | * Participate in development of long range planning for new projects and facilities. |
| Good knowledge of security and encryption.
| |
| Updates and modifies computer programs to improve efficiency.
| |
| Performs work of high difficulty in designing, writing, editing, modifying, and debugging computer programs.
| |
| Define functional specifications of the system for the appropriate hardware.
| |
| Expert knowledge of component writing.
| |
| Demonstrated ability to use standard computing tools: Word processor, spreadsheet, browser, email, and file compression software.
| |
| Overall knowledge of the computing environment at large, e.g. typical uses and user populations of operating systems, communications protocols, hardware platforms, etc.\
| |
|
| |
|
|
| |
|
| [[Category: Definitions]] | | [[Category: Definitions]] |
| | [[Category: Organizational Roles]] |