amoose20 / indieProject

1 stars 0 forks source link

Final self evaluation ready #7

Open amoose20 opened 1 year ago

amoose20 commented 1 year ago

@pawaitemadisoncollege final self evaluation complete! I will start with answering the questions from the 'Final Self Eval Tips' document, then post the evaluation. Thank you so much for all your help this semester Paula.

How I have grown as a developer:

I started Ent Java with not much knowledge about many of the technologies and techniques we learned throughout the semester, such as consuming/producing API's, Hibernate, Data Access Object pattern, and Object Relational mapping. But I was still able to plan an entire application utilizing these technologies. I had a vision at the start of the semester, and while it wasn't always clear what the steps were going to be to complete the tasks, I still saw it to completion. To me, that shows growth. Being able to plan a product out without much knowledge or experience with the technologies required to implement has given me great confidence in my ability as a developer. While I wish that my indie project had been more complete and functional, it's only Version 1! I plan to continue developing my live odds application as there is much to improve and modify.

A year and a half ago, I would have never imagined that I would already be in a position where I feel like I have the knowledge, experience, and confidence to work as a developer. But I do now and I owe a lot of credit to you Paula, and all of the professors at MATC who spent a lot of time working with us students to shape us into competent developers.

Grade:

Number of criteria consistently met or exceeded: 11 Number of criteria showing meaningful progress: 5 Number of criteria not started or not progressing: 0

Ent Java Self-Evaluation

Criteria Not started or progressing yet Making progress Meets expectations Exemplary
Explanation of scale Not enough information is present in the work to determine whether there is understanding of the concepts. This might mean we haven't covered the topic yet, work is incomplete, or work contains too many issues to justify correcting each one. Partial understanding of the concepts is evident, but some significant gaps remain. Needs more work. Understanding of the concepts is evident through correct work, and clear documentation. Some revision or expansion might be needed, but no significant gaps or errors are present. Work meets or exceeds the expectations. A high level of proficiency with the concepts is evident. Work could be used as a classroom example.
Industry best practices I believe in some areas of industry best practices, I can meet the expectations, but there are areas where my design can 'smell.' In some places, I break out my code into smaller more controlled steps and there are some areas where I could further implement that to reduce technical debt. For example, my 'favoriteTeams.java' servlet could utilize some additional helper methods. My 'BuildOdds.java' servlet does utilize additional methods to break the code out, but there could be some more methods. I'm a bit inconsistent in class naming as well.
Documentation I always strive to implement javadoc comments and provide clear descriptions of classes and methods. Comments describe all @param's and @return values to help others understand methods or class purpose throughout my indie project and other exercises completed throughout the course.
Build and Deploy I routinely completed the weekly exercises and labs and feel confident in my ability to add the proper maven goals and configurations to get applications built and deployed. However because I was not able to figure out the AWS cognito deployment, my final indie project deployment really wasn't fully functional, I had to rely on building locally. I think I can definitely improve in this area.
Unit Testing I believe I made a lot of progress in this area. My indie project has close to 100% test coverage and I am confident in my ability to adequately write tests that will pass (or fail) satisfy the conditions I am looking for. For example, my API generates responses that are usually very different every day. Sometimes, the responses change after a few hours. Sometimes to confirm I was getting the correct information, I would first write a failing test to see the response from the API, then I would write a test which gets the response that I expect. I would also sometimes write tests according to the response that I would have open on a browser window. This was effective to confirm the information I was expecting to receive from the API. I have made it a habit of writing tests before I even start coding the planned functionality, and I hope to continue to implement a Test Driven Development mentality.
Security - Authentication/Authorization Completed the exercise successfully, but have not been able to successfully implement in my indie project. I reviewed the cognito deployment again and unfortunately was unable to resolve the issue. Users can create accounts and sign in locally, but not on the AWS beanstalk deployment. This is an area I need improvement on.
Logging Framework Practiced implementing logging in the labs, exercises, and indie project. Since learning and practicing implementing logging, I can confidently use logging to help with troubleshooting issues/errors while coding. Logging has been a huge helper for me when working on the indie project and really all development I do. Logging is perhaps one of the most useful things for me when developing and I feel confident in my ability to effectively utilize logging to help with issues. For example, while working on my indie project, I was having difficulty getting the User object, of the user who is currently logged in, placed in to the session as an attribute. I implemented logging statements in the Auth class to determine if I even have a user object, which user object do I have, and if the user object actually is in the session. I use logging constantly throughout all development and I am confident in using logging to help figure out development issues.
Produce Web Services With the team-project complete, I feel much more confident in my ability to create web services. While I feel I have met the expectations, I also feel like I am just scratching the surface of developing web services and creating API's. There are some parts of the team project that could have been improved still. Our web service could have perhaps been a bit more robust, and also could have been programmed to accommodate for producing the OpenAPI specification YAML file which could have then been used to create a SwaggerAPI documentation. Still, I believe our service worked well regardless and met our goals.
Consume Web Services I have continued to work with the API in my indie project as well as other web services for other courses. I think I definitely made significant progress in consuming web services. When I started this course, I truly had no idea how to use an API in an application, or how to make a request, or even how to read an API response. I was even confused about how I would use the POJO classes generated from the API response. But I figured it out and learned how to get to the information that I needed for my application. Specifically, I was really thrown off by seeing how each my API POJO's had a List object with a type of another class. I stuck with it and figured out how to get the information that I want from each POJO. Starting from knowing nothing to being very confident in being able to obtain exactly the information I want to use in my application feels pretty good. I think this is one of the areas where I showed the most improvement.
Git and GitHub I am independently using git and github, additionally, I feel confident in my ability to search the github documentation to find how to do something I am not certain how to do. Continuing to build on my ability to work with others using Github with the branching practice activity as well as the team-project. I have continued to build off this and now feel even more confident in using git/github with the practice we had with merging branches. One way I showed additional improvement is breaking out features into separate branches. This is something I never used to do but have now incorporated creating branches into my normal development approach.
Asynchronous messaging Completed the associated exercises but I think additional practice would be beneficial.
Object relational mapping - JPA/Hibernate Hibernate has been an excellent tool to learn; I was able to successfully complete associated exercises and labs and implement in to my indie project. I was able to implement a Many to Many relationship in live odds which was a new concept that we didn't focus much on while learning Hibernate/ORM. I required some assistance to implement the Many to Many relationship but was able to successfully get it working.
Patterns such as Data Access Objects (DAO) I believe I made a lot of progress in implementing and understanding the DAO pattern. Without the DAO pattern, much of my indie project would not be possible (at least, I don't think so!). I believe I also effectively utilize the MVC pattern by structuring my application accordingly.
Debug and troubleshoot independently I feel much more confident in my ability to debug and troubleshoot independently with the progress I have made implementing logging and setting breakpoints throughout the exercises and project work. Also, IntelliJ is excellent at identifying errors and helping correct them. By using IntelliJ more I believe my ability to debug and troubleshoot is greatly improved. I will add to this that I also use logging a tremendous amount to help debug and troubleshoot independently. Between the class lecture videos and effectively searching the web, I believe I improved my troubleshooting ability significantly.
Learning process reflection and improvement I always feel I can make improvements in this category. However, the progress I have made so far in learning the new material from videos, labs, and exercises and implementing those concepts into my indie project has shown an competency in learning process/reflection. One way my process has changed as a result of reflecting on my learning is developing with a Test Driven Development mindset. I have started to get in to the habit of writing tests before coding functionality which I did throughout my indie project.
Collaboration/Teamwork After completing the team project I feel my ability to collaborate has improved. We worked together to come up with an idea and while we had to make some adjustments along the way, we pushed the project across the finish line. I definitely think we could have made improvements to our process and the service in general but we worked together to complete the tasks presented to us which I think is a positive nonetheless. I routinely make an effort to respond to slack posts if help is requested, and I believe I can actually help resolve the issue.
Feedback - giving and receiving I believe I put thoughtful effort into peer reviews and helping others. I also always thoroughly review and implement changes based on feedback from Paula as well as peers. The coordination with my partner for the indie project peer review could have been significantly improved. My peer review lacked because of this and the by the time I submitted it, improvements couldn't really have been made before the deadline. I should have managed my time a bit better to give my partner a better peer review.
Other? Is anything missing? An area I need to improve on: continuously updating time log and weekly reflection for my indie project. Time management needs to step up.
pawaitemadisoncollege commented 1 year ago

Hi @amoose20 - You clearly put a lot of time and thought into this evaluation, and I appreciate your honest assessment of your learning and achievements this semester. I think there are three categories that are rated a bit low:

  1. Asynchronous messaging - there was not really an opportunity to do much more with this to demonstrate your knowledge, so I believe completing the exercise is enough to show proficiency relevant to what was possible in the course.
  2. Security/Auth and Deployment - Given the issues several of us had with cognito on beanstalk, I do not agree that you are "only" progressing here. The fact that you were able to get things working locally and did your best to troubleshoot shows an understanding of these processes. Often more learning happens when things don't work!!!

So, with that said, I would like to override your rating of a B (proficient in 11 competencies, to proficient in 14 competencies which is an A).

It has been a real pleasure to work with you this semester and I wish you only the very best in your career!

Lastly, I will provide a review of your final indie project, but I wanted to confirm grades first as I realize there may be some anxiety related to waiting for those. :)

amoose20 commented 1 year ago

Thank you Paula! I'm looking forward to your feedback on my project. I definitely plan to work on it more; particularly improve functionality and add the additional features I discussed for Version 2.