I always want to be a better version of myself, but it's unclear how to quantify my quality. In sporting, there're many stats about athletes to look at. In academia, you can look at some indirect indexes about your research quality. But as a programmer at work, I often receive feedbacks from 1 or 2 persons at most. It's easy to think that I'm good enough, when the truth may be not.
So, as a programmer, how do you quantify or estimate how good you are?
Thank you,
> I read a study that measured the efficiency of locomotion for various species on the planet. The condor used the least energy to move a kilometer. And, humans came in with a rather unimpressive showing, about a third of the way down the list. It was not too proud a showing for the crown of creation. So, that didn’t look so good. But, then somebody at Scientific American had the insight to test the efficiency of locomotion for a man on a bicycle. And, a man on a bicycle, a human on a bicycle, blew the condor away, completely off the top of the charts. https://www.brainpickings.org/2011/12/21/steve-jobs-bicycle-... https://youtube.com/watch?v=0lvMgMrNDlg
> ... There need be no real danger of it ever becoming a drudge, for any processes that are quite mechanical may be turned over to the machine itself. https://wikiquote.org/wiki/Alan_Turing
Your four points on effectiveness happen to me on a daily basis, but I tend to see them as annoyances, mind you, I rarely refuse to help and advice. This gives a whole new light and meaning to all those interruptions.
But there's also the 10x dev that can help others be 10x more effective. Those types see a problem, and write an insanely useful tool.
Also, welcome to thinking like a manager.
> Do I solve more problems than I create?
Who judges what constitutes a problem? How do you know when you've created a problem?
> Do I see simple solutions to complex problems?
Define 'simple'.
> Can I refactor terrible code to more easily maintained code?
Define 'terrible'. How does one know what code is more easily maintained?
> Can I avoid terribly written code in the first place?
See above.
> Can I effectively communicate with people in order to get the answers I need without wasting their time with needless questions?
What constitutes "effective" communication? What are "needless" questions?
I generally agree with the questions, but I would imagine most programmers could read them and think, "I must be pretty effective."
What's wrong with that?
Zero code has zero bugs, and zero maintenance cost.
Could also mean you write unreadable code and, by extension, unmaintainable code.
> You're the go to person by the boss.
Could also mean you write unreadable code.
In this situation, I think the context is when a colleague is asking for help with their own code/writing a new feature and wants input from someone well-versed.
Only ever measure yourself against yourself. As long as you make sure you are a better programmer today then yesterday then you have nothing to worry about.
Expect to learn new things every day, and from every conceivable source: your fellow developers, junior and senior, of course, but also your PM (for example, prioritization, techniques to organize work), designers (information flow, HCI), business analysts (how the client ticks), etc.. Very likely everyone you ever worked with could teach you something, and you'll never have time to learn it all.
Stop trying to measure yourself or others, get in there and code.
In sports, for most people, staistics are meaningless. I climb 5.10 okay... am I good climber? I'm not world class, but I do stuff that I like.
I've been an academic. I know I was a bad one, because in retrospect I had to step away from a lot of my ideas and research... at the end, I didn't see value in the projects I was doing.
As a programmer... who knows. I don't usually have a lot of problems coming back to old projects and building new stuff. I don't have a lot of systems I put together breaking down and requiring work. I know that there are at least 10-20 other folks think I am good, because I've solved things for them and they have told me I am good.
But I just build CRUD apps, admin some linux servers, and put together custom code for WordPress. Some folks would look at that pile of day-to-day tech cruft and say that I am not even a "real" programmer (even if I do know how to implement a buffer with TTL and I've written toy mouse drivers and serial implementations).
All that comes down to this: it really comes down to you and your goals, and what you want to get out of your life. You are the only measure of what you consider to be a good person. Most of us are sane enough to peg that estimation to feedback we get from other people. But fundamentally the metrics are still our own.
So, for myself, the thing I pay attention to is my ease of expressing the things I want to create. I also pay attention to my ability to produce things with certain "qualities" correctness, simplicity, and how modular and composable my code is. There is no objective measure of those things and my understanding of those things constantly expands. I learn these things through by my own experience and looking at what other people are doing and having in depth discussions about programming ( and outside of programming ).
So I have no idea how good I am, but I have confidence in what things I can create and confidence in my ability to learn more.
Did I introduce new bugs?
Are people using my building blocks to add features or working around them/ redoing them?
These are not good metrics. I have researched this and it seems there is no good way to measure coding improvement except subjective measurements.
- You can compare yourself to other developers (there are plenty of qualities to compare)
- You can review your statistics (commit frequency, average file size, accuracy of time estimates)
- You can compete in programming competitions
- You can evaluate yourself using the Programmer Competency Matrix: https://sijinjoseph.com/programmer-competency-matrix/
Also, "Good" is subjective. Some programmers are "good" in certain contexts, but "not good" in others.
2. Read more code.
3. Write more code.
4. If your code which you wrote few years back looks bad to you, then you are on right path.
5. How much you understand the core concepts. New languages and frameworks are more of an glitter.
6. You want to be better version of yourself, then your progess is your stats you need look at. How many books did you read year on year? How much code you read year on year ? How much code you wrote ? How much fun you had :)
7. Adding, if you can think of the future maintainer of your code in mind and code, then you are lot better than many programmers out there in business.
8. Try to be a clean code enthusiast.
What if the recent stuff looks bad too? :)