Sunday, July 17, 2016

my post and thoughts about what is a Senior Developer

So i've just written a post measuring myself according to Programmer Competency Matrix, and i know this matrix for a long time and its a really awesome matrix to test for a highly technologically skilled developer, i think that a real senior is something even past a Team Leader, and for that i'll try to build my own matrix, and comment be about it :D.

Some of these thoughts you can read from some links i collected here

p.s. IMHO anyone that is intermediate in in all skills can be a great Team Leader, since the main thing about being a TL is the mentoring and grouping part. I see many TL that are noobs/juniors in many of these fields.

Don't think i am anywhere near senior, am a "proud" junior trying to advance into mid, but i take a look at a couple of real senior @work and this is more of my observation about them and after getting pounded by their feedback.

skill noob junior intermediate senior
tech skill - measured by Programmer Competency Matrix 0-30 30-50 50-70 70+
human skillsunaware of his severe lack of skillsaware but cant understand how it will take him forward in his careercontinuously learningable to read people, giving them what they want to hear while saying what they need to hear, is wanted in all meetings
time table cant manage a time table, need to be nanny-edcan manage his own time per taskcan manage his own time for multiple tasks and help / prepare / nanny otherscan manage the entire project, including spec, QA, deployments, surprises, ect., can expect realistic delays
task managementcant manage more that his current taskcan manage few parallels taskscan manage most tasks that matches his skills-set in the project, to a limitcan manage the entire project, including .....
mentoringcant even accept helpable to accept helpable to give good productive helpable to identify the real backset of the other and give him aimed and specific help (able to say dont learn this)
profession / code skillsknows about his code onlyknows what is happening with system around his code, both framework, server, ect, and whatever the team has make and can understand the impact on his code and react accordinglylike the former but can also plan ahead and even take use and advantage understand everything around the code and the project, knows IT better that the IT guys, can plan the project according to the hardware
methods / patternscan code only strait forwardknows about them yet still competing which is bestused multiple and knows that there is no best, only appropriateable to understand a pattern from reading, knows to choose the most appropriate per project
businesscant relate business to his workunderstands that someone is paying and able to  adjust a bitunderstands that the money in the final say and able to adjust accordingly by demand (doing it "less best practice")completely aware and design all work according to budget
QAblames someone else for his wrongs ("you didn't tell me to do it like this")hate QA since he is still unable to connect his wrongs to the bugsdoesn't hates QA anymore and is implementing bug fixes as lessons to himselfafter QA cant find any bugs he teaches them that real QA should test the flows and he adds smoothness to that
self-estimationthinks he can handle the entire project, hard to learnthinks he knows best, able to learn after hard failureunderstands he is a junior, able to learn from anythingcan handle the even he can handle the project ect. he is still always exposed to mistakes ect., is asking for help and second opinion, able to learn without a cause (like bug or feedback)

Friday, July 15, 2016

self-test for the Programmer Competency Matrix by Sijin Joseph

The Programmer Competency Matrix by Sijin Joseph is a table of parameters to test the reward you will get from a programmer vs the effort you'll put in him.

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.....

skill notes score
Computer Sciencetotal points: 91.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 programmingI have some knowledge about compilers, assembly and basic CPU suff0.5
Software Engineeringtotal points: 91.5
source code version controlUsed once a bit SVN and using a bit Git, know merging ect. if TFS1.5
build automationI know technically there is a way to compile C# from CMD, did  some with python, have some automation with PowerShell0
automated testingI think like 1, but act like 00
Programmingtotal points: 4525
problem decompositionI 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 decompositionCurrently (actively) learning to apply design to correspond all relevant technologies/platforms.1.5
communicationWell, this is really the only thing i have a really good feedback except for my lazy emails....2
code organization within a fileUsing regions, code organized, basic commenting, refrences only where critical1.5
code organization across filesI naturally like organizing my files in folders, cant give myself "structure gives insight into design"2
source tree organizationHere i am a bit closed to 3, but still2
code readabilityI am improving, i used to be 0, have some comments about unusual code and bug fixes but mostly for myself1
defensive codingOnly checking arguments and return values, or for exceptions when critical, obvious, or after a bug already occurred1
error handlingMost parts of my projects leaves program in good state, good logging layer1.5
IDEI know the basic tools of VS and my own daily shortcuts1.5
APIThis 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 everyday2.5
frameworksUsed and using alot, written 2 mini-frameworks used in my company for Sharepoint2.5
requirementsI can more and more able to see the places needed more spec, but still having mid ideas2
scriptingTouching python for fun, knows well Sharepoint Powershell.1
databaseAble to write good selects, knowledge of columns ect, but not to design a DB nor its concepts0.5
Experiencetotal points: 128
languages with professional experienceOOP, prototype (JS), basic SQL, dont know static vs dynamic ect.0.5
platforms with professional experienceC# [console, winforms],, sharepoint, javascript/JQuery, knockout/Angular, i'll count it as 52
years of professional experienceAlthough 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 point1.5
domain knowledgeI'm a web-dev, so i always work on and inside a domain2
Knowledgetotal points: 217
tool knowledgeI know to use some text editors for Client-Side files, can use sharepoint-designer1
languages exposed toMy bonus is that i have basic understanding of prototype oriented (JS), and i know some SQL1
codebase knowledgeNot much in C#, bit in, angular, made some bug-fixes on plugins and able to understand their codebase1
knowledge of upcoming technologiesKeep hearing and reading about upcomings, but never even taken betas1
platform internalsBasic knowledge of how my platforms works internally1
booksMaybe its time.....I'm more of a googler-blog-reader0
blogsHere i am trying to step from 2 to 32

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.