Senior Software Engineer and Project Manager: Difference between revisions

From Future Worlds Center Wiki
Jump to navigationJump to search
No edit summary
No edit summary
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''' 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 [[N.E.T.S. Mediterranean Graduate School of Applied Social Cognition]].  


The key responsibilities are:
<u>The key responsibilities are:</u>
# Work closely with upper management to ensure prioritization of work according to Board priorities
# Work closely with upper management to ensure prioritization of work according to Board priorities
# Responsible for planning, processing and performing all jobs and tasks in an efficient manner with no need for assistance from the supervisor
# Responsible for planning, processing, performing and supervising all jobs and tasks in an efficient manner with no need for assistance from the supervisor
 
# Efficient and explicit prioritization of tasks and supervision of their timely implementation and completion
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
Make a list of all items
Estimate the effort required (either in days or in money) - this needs to be very rough and approximate
Add up the total effort, call it E
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
 


<u> The Management expects</u>
* Ability to solve problems quickly and completely.
* Ability to multi-task and stay organized in a dynamic work environment.
* Possess a positive attitude


In more detail the responsibilities include:


<u>In more detail the responsibilities include:</u>
Analyze, design, coordinate and supervise the development of software systems
* Work closely with [[Software and Systems Developer| Software and Systems Developers]] to design and develop programming systems making specific determinations about system performance.
* 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.
* Respond 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.
* Expected to conduct system analysis and development, with limited support from professional staff
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.
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 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 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.
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.
* 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.
* 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.
* Search, summarize and keep the team abreast of strategic information from all sources
Making presentations to customer or client audiences or professional peers.
* Capable of writing proposals or papers.
Maintain positive client interactions.
* Making presentations to customer or client audiences or professional peers.
Strong and effective inter-personal and communication skills and the ability to interact professionally with a diverse group of clients and staff.
* Maintain positive client interactions.
Responsible for communicating with engineers and manufacturer's technical support staff regarding programming needs and performance.
* Strong and effective inter-personal and communication skills and the ability to interact professionally with a diverse group of clients and staff.
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.
Research and recommend software tools to management.
Provide assistance to testers and support personnel as needed to determine system problems.
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.
Provide recommendations to management concerning issues of programmer productivity and software development management.


Additional skills and/or areas of expertise:
Additional skills and/or areas of expertise:


* Ability to solve problems quickly and completely.
* .* Ability to identify tasks which require automation and automate them.
* 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.
* A solid understanding of networking/distributed computing environment concepts.
* A solid understanding of networking/distributed computing environment concepts.
* Solid understanding the principles of routing, client/server programming.
* Solid understanding the principles of routing, client/server programming.