FW: Unit 4: cumulative exam
toggle quoted messageShow quoted text
Someone mentioned on Twitter that the final exam for prospective developers isn’t public when I clearly said the public can try it, and for that, I sincerely apologize. Below is a oc0py of the cumulative developer exam sent to people who took a year-long course on NVDA internals and development.
From: joseph.lee22590@... <joseph.lee22590@...>
Sent: Sunday, June 17, 2018 11:07 PM
To: 'email@example.com' <firstname.lastname@example.org>
Subject: Unit 4: cumulative exam
A few notes for unit 4 people:
Instructions: the questions below will let you meet different facets of NVDA development (both add-ons and Core, although emphasis will be on Core for now). For those seeking to move onto NVDA development should answer ALL questions. Total points will be 100, with passing score being 70 or higher. There will be up to 10 extra credit points, and they will count when calculating scores (if you choose to do them). Answers should be submitted to me no later than June 22, 2018 at 5 PM pacific (8 PM Eastern, 00:00 UTC on the 23rd). Your answers will be reviewed by at least two outside developers (in case of question 4 extra credit, your evaluators will be those reviewing your pull request). Extra credit opportunities have their own deadlines.
Question 1: a new user of NVDA wants to know the answer to the following questions (write your answer in complete sentences, and answer it as though you’re talking to this user, not me; points: 20, five points per question):
Question 2: pick four commands from the following list. For each command, give its command, a short description, and a trace of how the command works. Then if you want, explain in your own words how the command really works. Write it as though you’re producing a video tutorial for power users who wants to know more about how a command works (points: 20, five points per command):
If you choose to answer settings panel or review cursor commands, choose only one command, as they are a collection of commands. If your answer consists entirely of four commands from one or both of these, you’ll get zero points.
The next two questions are “time limited” questions and you need to mark one of them as such. For example, you can mark question 3 as “time limited”, which means question 4 will not be subject to time limits. Once chosen, you’ll have 45 minutes to answer the marked question. The purpose of this exercise is to simulate time limited research (question 3) or programming lab (question 4). If you are adventurous about providing code-based solutions, choose question 4 as time limited question. If you feel writing or research is your strong point, choose question 3 as time limited question. After answering the time limited question, be sure to record how long it took you.
Question 3: These days, one of the biggest things software development firms (and projects) look for is ability to research things and communicate with others. To get you to experience this, choose two terms from the list below and write an “internals” paragraph (or two) as though you’re giving a talk at a developers’ conference. Your answer must contain definitions, explanations (in your own words), use cases, examples, and a place in NVDA where it is used. Extra points will be given for one or more of the following additions: actual NVDA code that demonstrates the concept, a reference or two outside of NVDA, and an offer of code or concept redesign to make it useful in the future, or a flaw with current implementations (overall points: 20, ten per item).
If you chose to mark this question as “time limited”, you can just write definitions, use cases, explanations, examples, and if time permits, actual NVDA code examples; no need to include references, design flaws and such, but you’re more than welcome to do so within the time limit (hence extra points). Your time begins once you choose the two items you’d like to write about.
Scoring for each term:
Question 4: when it comes to screen reader development, theory isn’t enough; now it is time to showcase your programming skills, and to do that, choose an NVDA issue on GitHub that you think you can program a solution (quickly if you mark this as “time limited”). Be sure to provide a link to the issue, your rationale for choosing it, a short description, and a basic solution design and code. Extra points if you can demonstrate that your code actually achieves something, complete with tests (points: 25).
If you mark this question as “time limited”, then you DO NEED to have at least a basic solution design and code ready within the time limit. If you chose question 3 as “time limited”, then a solution design will be acceptable; time begins the moment you choose an issue, SO CHOOSE IT WISELY!
Extra credit (eligible if you did ALL of the parts above, including coding and testing):
This extra credit opportunity ends on June 30, 2018 at 5 PM Pacific (8 PM Eastern, 00:00 UTC on July 1st).
Question 5: being a developer means more than programming a solution. Users matter, and you need to always remember that you are users also. To help you understand this, I’d like to ask you to serve as a resident tech support engineers for users for the next few days: subscribe to the NVDA users list and answer questions on at least three topics until the end of the exam period. Be sure to provide helpful answers when asked, and show respect to users (points: 15, five per topic).
I will announce this on users list also. A the end of the exam, I will ask NVDA users group members to provide feedback.
The following questions are all extra credit and won’t count toward your final score. As they are community activities, your participation is highly encouraged.
Question 6 (extra credit, five points): review at least one NVDA add-on marked for review (for details, see NVDA Add-ons mailing list archive).
Question 7 (extra credit, five points): test-drive NVDA master or next snapshots throughout the exam period and report bugs if any. Extra points if you can offer solutions.
Question 8 (extra credit, five points): find a developer outside of NVDA community that you think can contribute to NVDA in the long run.
Question 9 (extra credit, five points): offer constructive comment on a GitHub issue.
Question 10 (extra credit, 10 points, highly encouraged): please provide feedback about this course (strengths, weaknesses, teaching style, what worked, what didn’t work, what can be improved, etc.).
As noted above, anyone who gets a 70 or higher will be recognized as beginning NVDA developer.
P.S. You may have noticed that programming didn’t take the center stage at this exam. The reason: coding alone won’t define you and your talent as a developer. Through this exam I want you all to experience what it is like to be an actual screen reader developer: introducing new users to NVDA, coming up with helpful overviews and tutorials, networking with others and showcasing the project, proposing and programming needed solutions under possible constraints, and providing ongoing technical support for a product.
Good luck with the exam.