Also is considered to measure whether a programmer is noob, junior, intermediate, or senior, which is a whole subject by itself that i hope to write about next time.
anyway, for the fun and interest, i will test myself, as objective as i can be, (i'll ask some guys @work to correct me and update), so the columns will be subject, my notes, score. 0-3 will be the scores so 0 is total noob, 32 is junior, 64 is intermediate and 96 is senior.
Note that since there is such a huge variety of skill someone that actually scores 96 is like the top of the world senior, and you should thing it more like 0-32, 32-60, 60-75, 75-96, since scoring 32 should be quite fast to any programmer that wants to step up, and anyone that scores 2 in everything is really a junior-senior, and even just a few scores of 3 is a real senior already.
I count on you to go read the table, so.....
|Computer Science||total points: 9||1.5|
|data structures||I can even explain a bit but not in depth||1|
|algorithms||Ye, never did any degree, i can look for the right one and alter it but not explain or write one||0|
|systems programming||I have some knowledge about compilers, assembly and basic CPU suff||0.5|
|Software Engineering||total points: 9||1.5|
|source code version control||Used once a bit SVN and using a bit Git, know merging ect. if TFS||1.5|
|build automation||I know technically there is a way to compile C# from CMD, did some with python, have some automation with PowerShell||0|
|automated testing||I think like 1, but act like 0||0|
|Programming||total points: 45||25|
|problem decomposition||I always try to make my code generic and put the base layer in a designated zone for reuse, i would give myself a 3 here but i'll try to be modest.||2.5|
|systems decomposition||Currently (actively) learning to apply design to correspond all relevant technologies/platforms.||1.5|
|communication||Well, this is really the only thing i have a really good feedback except for my lazy emails....||2|
|code organization within a file||Using regions, code organized, basic commenting, refrences only where critical||1.5|
|code organization across files||I naturally like organizing my files in folders, cant give myself "structure gives insight into design"||2|
|source tree organization||Here i am a bit closed to 3, but still||2|
|code readability||I am improving, i used to be 0, have some comments about unusual code and bug fixes but mostly for myself||1|
|defensive coding||Only checking arguments and return values, or for exceptions when critical, obvious, or after a bug already occurred||1|
|error handling||Most parts of my projects leaves program in good state, good logging layer||1.5|
|IDE||I know the basic tools of VS and my own daily shortcuts||1.5|
|API||This one is hard since i definitely write many times some code on top or to fill gaps in the API, even in .Net and JQuery and even Angular, yet i still learn stuff everyday||2.5|
|frameworks||Used and using alot, written 2 mini-frameworks used in my company for Sharepoint||2.5|
|requirements||I can more and more able to see the places needed more spec, but still having mid ideas||2|
|scripting||Touching python for fun, knows well Sharepoint Powershell.||1|
|database||Able to write good selects, knowledge of columns ect, but not to design a DB nor its concepts||0.5|
|Experience||total points: 12||8|
|languages with professional experience||OOP, prototype (JS), basic SQL, dont know static vs dynamic ect.||0.5|
|years of professional experience||Although programming since i was 8, and it shows, also mentored some 7-8 years guys, in industry almost 5 years, i'll give myself and extra half point||1.5|
|domain knowledge||I'm a web-dev, so i always work on and inside a domain||2|
|Knowledge||total points: 21||7|
|tool knowledge||I know to use some text editors for Client-Side files, can use sharepoint-designer||1|
|languages exposed to||My bonus is that i have basic understanding of prototype oriented (JS), and i know some SQL||1|
|codebase knowledge||Not much in C#, bit in asp.net, angular, made some bug-fixes on plugins and able to understand their codebase||1|
|knowledge of upcoming technologies||Keep hearing and reading about upcomings, but never even taken betas||1|
|platform internals||Basic knowledge of how my platforms works internally||1|
|books||Maybe its time.....I'm more of a googler-blog-reader||0|
|blogs||Here i am trying to step from 2 to 3||2|
Grand Total: 43
HA HA well that's embarrassing, i always though of myself intermediate licking seniority, guess i'm just finished noobinity and learning to be a true and good intermediate, which is good as long as i am improving.
I am taking additional comfort that i past the 50% in the programming area, so there i am licking some seniority, same in Experience, and main pitfalls in in the science-engineering fields, which i never was into.