Skip to main content
ALPHA    This is new software undergoing tests! Thank you for your patience.

Candidate: tim osahenru tim Assessed by: Nicholas Tollervey ntoll

Python (2023) ~ Grade 5 (Higher)

dev-locate

A platform where developers can signup with their projects on display and hiring managers can make searches of developers based on location, year of experience, tech stack or any other search query.

Attached files
Filename (click to download) Size Uploaded by
Screenshot_47.png 96.8 KB tim
Markdown code
![Screenshot_47.png](/media/assessment/e2c014a6/2022-11-25/21-29-20/Screenshot_47.png "Screenshot_47.png")
Screenshot_48.png 39.2 KB tim
Markdown code
![Screenshot_48.png](/media/assessment/e2c014a6/2022-11-25/21-32-41/Screenshot_48.png "Screenshot_48.png")
Screenshot_49.png 80.1 KB tim
Markdown code
![Screenshot_49.png](/media/assessment/e2c014a6/2022-11-26/01-26-13/Screenshot_49.png "Screenshot_49.png")
2022-11-28_20-06-31ipad.mp4 10.6 MB tim
Markdown code
[2022-11-28_20-06-31ipad.mp4](/media/assessment/e2c014a6/2022-11-29/15-46-55/2022-11-28_20-06-31ipad.mp4){target="_blank"}
profile.gif 1.7 MB ntoll
Markdown code
![profile.gif](/media/assessment/e2c014a6/2022-12-03/17-19-41/profile.gif "profile.gif")
project.png 74.8 KB ntoll
Markdown code
![project.png](/media/assessment/e2c014a6/2022-12-03/17-26-39/project.png "project.png")
homepage.png 270.7 KB ntoll
Markdown code
![homepage.png](/media/assessment/e2c014a6/2022-12-03/17-42-05/homepage.png "homepage.png")
Screenshot_57.png 44.6 KB tim
Markdown code
![Screenshot_57.png](/media/assessment/e2c014a6/2022-12-05/11-14-39/Screenshot_57.png "Screenshot_57.png")
bad.png 50.0 KB tim
Markdown code
![bad.png](/media/assessment/e2c014a6/2022-12-05/11-29-30/bad.png "bad.png")
good.png 50.1 KB tim
Markdown code
![good.png](/media/assessment/e2c014a6/2022-12-05/11-31-55/good.png "good.png")
form.png 20.6 KB tim
Markdown code
![form.png](/media/assessment/e2c014a6/2022-12-05/12-01-04/form.png "form.png")
count.jpg 739.2 KB tim
Markdown code
![count.jpg](/media/assessment/e2c014a6/2022-12-05/19-14-36/count.jpg "count.jpg")
create.jpg 712.2 KB tim
Markdown code
![create.jpg](/media/assessment/e2c014a6/2022-12-05/19-14-55/create.jpg "create.jpg")
virtual.png 34.8 KB tim
Markdown code
![virtual.png](/media/assessment/e2c014a6/2022-12-07/03-49-27/virtual.png "virtual.png")
tutorial.png 33.8 KB tim
Markdown code
![tutorial.png](/media/assessment/e2c014a6/2022-12-07/03-50-55/tutorial.png "tutorial.png")
Screenshot_88.png 271.2 KB tim
Markdown code
![Screenshot_88.png](/media/assessment/e2c014a6/2022-12-08/20-54-47/Screenshot_88.png "Screenshot_88.png")
Screenshot_86.png 363.5 KB tim
Markdown code
![Screenshot_86.png](/media/assessment/e2c014a6/2022-12-08/21-06-28/Screenshot_86.png "Screenshot_86.png")
1.png 14.2 KB tim
Markdown code
![1.png](/media/assessment/e2c014a6/2022-12-08/21-15-04/1.png "1.png")
2.png 5.3 KB tim
Markdown code
![2.png](/media/assessment/e2c014a6/2022-12-08/21-16-03/2.png "2.png")
whatsapp.png 239.1 KB tim
Markdown code
![whatsapp.png](/media/assessment/e2c014a6/2022-12-09/17-19-06/whatsapp.png "whatsapp.png")
received.png 30.1 KB tim
Markdown code
![received.png](/media/assessment/e2c014a6/2022-12-09/17-21-53/received.png "received.png")
sent.png 31.7 KB tim
Markdown code
![sent.png](/media/assessment/e2c014a6/2022-12-09/17-22-27/sent.png "sent.png")
Screenshot_101.png 160.1 KB tim
Markdown code
![Screenshot_101.png](/media/assessment/e2c014a6/2022-12-10/00-21-24/Screenshot_101.png "Screenshot_101.png")
Screenshot_102.png 23.9 KB tim
Markdown code
![Screenshot_102.png](/media/assessment/e2c014a6/2022-12-10/04-50-59/Screenshot_102.png "Screenshot_102.png")
Screenshot_105.png 41.3 KB tim
Markdown code
![Screenshot_105.png](/media/assessment/e2c014a6/2022-12-11/17-54-53/Screenshot_105.png "Screenshot_105.png")
Screenshot_105.png 41.3 KB tim
Markdown code
![Screenshot_105.png](/media/assessment/e2c014a6/2022-12-11/17-55-08/Screenshot_105.png "Screenshot_105.png")
inbox_error.png 66.3 KB ntoll
Markdown code
![inbox_error.png](/media/assessment/e2c014a6/2022-12-13/16-12-03/inbox_error.png "inbox_error.png")
Screenshot_108.png 37.0 KB tim
Markdown code
![Screenshot_108.png](/media/assessment/e2c014a6/2022-12-13/16-38-58/Screenshot_108.png "Screenshot_108.png")
Screenshot_117.png 27.8 KB tim
Markdown code
![Screenshot_117.png](/media/assessment/e2c014a6/2022-12-15/01-42-56/Screenshot_117.png "Screenshot_117.png")
git_error.png 42.0 KB tim
Markdown code
![git_error.png](/media/assessment/e2c014a6/2022-12-15/19-41-34/git_error.png "git_error.png")
sphinx_error.png 32.5 KB tim
Markdown code
![sphinx_error.png](/media/assessment/e2c014a6/2022-12-15/19-47-55/sphinx_error.png "sphinx_error.png")
sphinx_tree.png 18.9 KB tim
Markdown code
![sphinx_tree.png](/media/assessment/e2c014a6/2022-12-15/19-49-55/sphinx_tree.png "sphinx_tree.png")
readthedocs_error.png 50.8 KB tim
Markdown code
![readthedocs_error.png](/media/assessment/e2c014a6/2022-12-15/19-55-53/readthedocs_error.png "readthedocs_error.png")
complete_build.png 298.1 KB tim
Markdown code
![complete_build.png](/media/assessment/e2c014a6/2022-12-15/19-57-14/complete_build.png "complete_build.png")
message.png 43.5 KB tim
Markdown code
![message.png](/media/assessment/e2c014a6/2022-12-15/20-00-29/message.png "message.png")

Feedback and results


Project purpose:
4/5

Was the purpose of the project, its aims and objectives and the needs of those interacting with it clearly articulated?

Well done. You have clearly explained your aims and objectives. I appreciated your focus on helping both engineers and hiring managers, while being aware of the core functionality needed for this website to meet their aims.

To have achieved the very highest marks, evidence of engagement with potential users (both engineers and hiring managers), a survey of similar sites in the marketplace and the current state of software hiring practices, as part of a requirements capture and analysis exercise, would have helped. Describing how such research informed your aims and technical decisions, backed up with real-world evidence would have pushed this aspect of the project to the very highest level.


User engagement:
4/5

How well did the candidate engage and empathise with their project's expected users, their needs and potential stumbling blocks?

You started with users as your primary focus: both based on your own experience as a coder and through your empathy for the work of hiring managers and others involved in employing potential candidates. As a result the core functionality of the website addresses aspects of the requirements of both types of user. I also appreciated that you demonstrated you had reached out to others to get their feedback and impressions of the website. Well done.

To achieve the very highest mark for this aspect of the assessment, and something to think about in future, I'd need to see evidence of how you address (if appropriate) such important things as internationalization (Django is good at this), accessibility (how your site interacts with assistive technology or engages those for whom regular computing devices are hard to use - the a11yproject is a good resource for this sort of thing), or the way your users learn to use the site (also called onboarding).

While you reached out to others for their feedback (and this is a very good thing), perhaps including a "feedback" link on the website for your users would also be helpful? The link could even take them to a Google-forms (or similar) questionnaire service so you could more easily track and present your user's feedback as structured data.


Running the project:
5/5

How clear and accurate were the instructions for executing the project, and how robust was the project when run?

After some initial glitches, the instructions you've provided for running your project are clear and engaging. Well done! Your code is easy to run and mostly works as expected. The README is well written and contains all the information any new developer joining the project might need to set up a local development environment.


Architecture and design:
5/5

How well was the project designed, architected and put together?

As an experienced Django developer I really appreciated how you closely followed the architectural patterns enabled by using class based views. You have clearly understood, not only the theory and Django way of doing things, but how to apply such things simply and effectively in practice. I also appreciated the use of comments in your source code to describe why aspects of your code worked in the way they did (for example, like this).


User experience:
4/5

In terms of the presentation and interface of the project, what is the user's experience of interacting with the project?

Thank you for the clear and well designed way in which you help people interact with your website. The visual design also looks great! There is clear evidence you have thought about and refined this most important aspect of the project, with reference to the user interface idioms and expectations appropriate for this type of software. For instance, the messaging aspect of the website looks like how most people expect messaging to look and behave, thus making your site easy to learn and use. I also liked how professional your site made my own Mu project look in my profile. A real plus point for engineers who want to present their work in the best way.

To get the very highest marks you'd need to fix the (very minor) layout and behaviour bugs in the user interface. Also, an acknowledgement of (where appropriate) aspects of internationalisation and accessibility would also have been welcome. Finally, ensuring the website fully works on mobile devices is important. I notice that while the website is itself "responsive" to the devices upon which it is displayed, some of the essential aspects of the UI disappear (such as the link to the home page, or the "shortcuts"). But this is a very minor oversight that can be easily corrected.


Core concepts:
4/5

Does the candidate understand and display knowledge of the core concepts for this, and all previous, grades?

You show a depth of understanding of the core concepts that indicates you appreciate their more subtle or complex aspects. I appreciated how you illustrated and explained your use of the core concepts for this grade, and how they apply to your project. Well done!

I especially appreciated how you very quickly demonstrated understanding both in a theoretical and practical sense of aspects of the core concepts that were not initially evident. For example, you were able to quickly add a JSON dump of user data.

To get the very highest mark we need to see a further level of polish and refinement. For instance, while you added the JSON dump of their user data, the JSON dump didn't also include details of their portfolio projects. Put simply, you're working beyond the level of knowledge and skill for the core concepts of grade 5, but you must make sure you're careful to check, reflect upon and refine the way you use these skills to their full potential and your project's advantage.


Code quality:
4/5

Is the code idiomatic, efficient, simply written and well organised?

Well done. Your code is easy to understand and idiomatic (as mentioned earlier, it follows the conventions and idioms of class based views in Django). You name things in a way that clarifies your code. Your code is well organised, following the Django patterns, so it is easy to see how things fit together, and you have clearly taken care and attention about the way it is presented. Well done for using black to format and tidy your code.


Understanding and technical engagement:
4/5

How well does the candidate apply their knowledge and understanding of the core concepts to address the requirements of their project?

Good job. Your code is idiomatic, mostly appropriate and fulfils the technical requirements of your project. I can also see evidence of refinement and refactoring of the code, to improve its quality and make it easier to understand and maintain.

As mentioned during the mentoring process, I would have liked to have seen more evidence of automated testing. As I said, I can't stress how important it is to have a comprehensive suite of tests. While I can see evidence that you understand how to write tests, having a comprehensive suite of such tests for the project would have got you the very highest mark in this category.


Creativity and imagination:
3/5

How unique, surprising, delightful and/or authentic is the approach of this project?

This is an original take on the well known formula of a portfolio website for job seekers. You have made this your own by executing your project in a unique way that demonstrates imagination and creativity when it comes to fulfilling the common aspects of such a website.

To get the very highest of marks it would have been good to see you exploring less obviously technical aspects of your problem domain. For example, perhaps comparing and contrasting similar websites that fulfil the same role as your own in order to learn two things:

  1. how best to implement the core usage patterns, and,
  2. how best to differentiate your own offering so you stand out from the crowd.

Demonstrating such research, describing the lessons learned and evidence of the resulting refinement and creative differentiation would have increased your mark.


Collaboration, community and compassion:
5/5

How did the candidate approach, behave and react to interactions and contributions from others, relating to this project?

You are a credit to yourself and the project through the leadership you have demonstrated. You are an empathetic, compassionate, respectful and engaged collaborator. Your contributions to discussions are clear, concise and engaging while retaining a cooperative and welcoming tone. Your project is a wonderful example of how to actively engage in promoting a healthy, respectful, diverse and technically effective community. This is wonderful to see, please keep up such great work, and thank you.


Documentation and comments:
5/5

Was the project's documentation appropriate for this level of grading and were the comments in code helpful?

Documentation is clearly integral to your project, and well done in overcoming the travails of deploying your Sphinx based documentation to ReadTheDocs.

Your docs are clear, engaging, accurate, comprehensive, simply organised and carefully presented. Your code comments are equally clear and well written making the source a pleasure to read.

You write in a thoughtful, precise, informative and empathetic manner for a wide range of different readers. What a great job! Well done.


Development practices:
4/5

How well did the candidate understand and make appropriate use of effective development practices? (e.g. testing, CI, debugging, refactoring, source control, issue tracking etc...)

Well done. Not only do you refine and improve your project through coherent development practices, but you show you are adaptable and have the foresight to code for change. This ensures your coding process results in a high quality outcome. Well done using GitHub for source control - this is an important skill for professional level collaborative coding.

As mentioned before, one aspect of coding practice that would have got you the very highest of marks is ensuring you have a comprehensive test suite.

As your code (and the website) develops, being able to run, check and re-run the test suite is a critical safety net to ensure your changes don't break anything in an unforeseen manner. As I mentioned in the commentary during the grading process, the CodeGrades website is itself written in Django, has several hundred tests, and is configured in such a way that it can't be deployed if there is a failing test. It's also worth pointing out that it's not uncommon for there to be much more test code than actual functional code in a project.


Tools and third-party technology:
5/5

How well did the candidate understand and make appropriate use of core tools used for software development? (e.g. a code editor, debugger, the command line, vcs etc...)

Well done. You make effective, informed, idiomatic and confident use of tools, frameworks and APIs needed to successfully implement your project. You also have a deep understanding and appreciation of these aspects of the project, along with an intuition for how best to use them together.

Clearly Django is your thing, and your use of front-end CSS themes is also evident. I also appreciated your explanations of the thinking behind using various aspects of Django to fulfil the requirements of your project (for example, like this). Demonstrating this sort of evidence is key to gaining the very highest level of coding practice.


Learning and research:
5/5

Is the candidate an effective and autonomous learner from documentation and other educational resources related to the technology and tools used in their project?

Congratulations. You are a confident, careful and curious consumer of documentation and educational resources needed to understand the technology used in your project. Nothing but good can come from such open mindedness. Very well done!

This was especially evident when you tackled the problems encountered while trying to deploy your documentation to ReadTheDocs. It was such a joy to see you both investigate and fix your problem without any help.


Effectiveness:
4/5

Did the candidate achieve their aims and objectives for the project?

Congratulations. Not only does your project fulfil its stated aims, objectives and needs of the user, but you have done so in a highly effective, considerate manner with well crafted code.

However, there is still room for improvement (see the various comments above).

This is an opportunity for growth: challenging steps to take in order to achieve the very broadest and deepest mastery of code.


Overall impression of the project:
9/10

For this level of grading: requires significant improvement (1-3), working towards the expected level (4-5), achieving the expected level (6-7), a high quality project (8-9), and exceptional project (10).

Very high quality. It's a very professional project, of which I hope you are deservedly proud.


Overall impression of the candidate's attainment:
10/10

For this level of grading: requires significant improvement (1-3), working towards the expected level (4-5), achieving the expected level (6-7), a high quality candidate (8-9), exceptional(10).

Exceptional. I have been nothing but impressed with the way you have conducted yourself, your willingness to throw yourself into the substantial effort required to produce a project of this calibre and the sustained momentum on your journey of growth, attainment and understanding.


Candidate's level of achievement:
4/5

How did the candidate meet the level of achievement expected for this grade?

You have attained a level of skill and knowledge beyond the required level of attainment for this grade.

To have got the highest mark for your level of achievement, I would have wanted to see those aspects of your project requiring attention (mentioned in the commentary above), to have already been addressed, fixed or demonstrated through the evidence you provided during your grading.


Total marks:
88/100

(Pass: 60, Merit: 75, Distinction: 90)


Tim,

You have created an excellent project and it has been a privilege for me to watch you engage, refine and grow as a developer.

Your website isn't just a project for grading purposes, but could legitimately be used for the purpose you intended and I hope you continue to work on it and find success with it. At the very least it is a great example of the sort of portfolio project folks should put on your site (a rather circular thought, but I hope you see what I mean).

While you are clearly invested in, and a considerable way along your journey to coding experience, there are areas that could be developed further:

I'd also like to encourage you to step up and step into the local Python community. It's a great way to meet like-minded folks, learn from each other and offer mutual support. There are likely to be local PyCons in your area and perhaps a Python user group that meets regularly. It's a friendly way to meet people and also learn of job opportunities too.

To take that engagement to the next level, you could contribute to your local community by giving a technical talk or by writing a guest blog post for their website. While giving a talk might seem frightening to start with, remember that a large part of being a developer is to explain yourself to colleagues, customers and potential users. The more practice you have in this regard the easier and better will it become.

It's also a good thing to put onto a CV... for instance, "Speaker at PyCon Ghana giving a talk on 'Effective Internationalisation with Django'". Perhaps being able to list such things is a new feature for Dev-Locate?

This grade 5 project is a very strong first grading, and you absolutely deserve the very high mark you have obtained. I realise it is close to a distinction, and this might feel a little disappointing, but I hope you see how such room for improvement is an opportunity for growth, self development and reflection.

By passing grade 5 you have shown you have experience of the basic core aspects of Python. Grades 6, 7 and 8 beckon, with the promise of an opportunity to explore more advanced (and challenging) skills, practices and outcomes that will stretch you as you take steps on the path to Pythonic maturity. On the very strong showing of this grade I am confident that you are capable of distinction level projects in the higher grades. This won't be easy, but we don't do these sorts of things because they are easy... we them because they are hard, and growing through such challenges is the route to maturity, depth and mastery.

Keep up the great work, the great learning and, most importantly, the great attitude you bring to your craft as a software developer.

Bravo Tim, Bravo.

Back to top