#ProgrammingSkills #FutureProgrammer #GeeksForGeeks
Hey fellow programmers! 👋 I’ve been immersed in the world of coding for the past two years and I’m loving every minute of it. But as I strive to become one of the best in my field, I can’t help but wonder – what does it really take to be a top-notch programmer?
Here are some essential qualities and skills that I believe make a really good programmer stand out:
– Solid understanding of programming languages like C++, Java, and Python 🖥️
– Proficiency in problem-solving and logical thinking 🤔
– Ability to work well in a team and communicate effectively with others 👥
– Continuous thirst for learning and self-improvement 📚
– Experience in working on real-world projects and applications 🔨
But what do you think are the key qualities and skills that define a great programmer? Let’s share our insights and help each other grow in this exciting field! 💡
people have different strengths and usually not all strengths. Some are very good technical coders and know all the rules and tricks but they are bad at interface or architecture. Other’s are the opposite. Some are good at ideas, some are good at implementing them. Some can only implement and have zero new ideas.
I dont like coders who follow best practices all the time, they obviously have no talent as they cant think of their own. But they are considered good coders since they know “the rules”.
So what is a good coder? i dunno 🙂
There’s probably no good answer for everyone. There’s no particular standard. It generally is NOT how fast you can write code, though that helps.
Here’s my list:
* Ability to figure out new technologies and get it to work (a surprising number of developers try something, and it doesn’t behave like it should, so they never get it to work).
* Able to ask good questions to find the intent of what a customer wants and not just do what the customer wants (because it may make no sense).
* Able to write easy-to-read (non-repetitive, not convoluted) code so others can also read it (this is harder to do than it looks because some programmers think of code in ways that produce code that is a mess to read).
* Able to debug code well and reasonably quickly
* Able to understand outside issues (network problems, certificate changes, upgrades in external data sources) that could affect the application from working.
* Able to plan out projects well.
* Good at communication (should be higher)
* Works hard
* Nice to have: good at mentoring
To be fair, a really good developer might only hit some of these aspects. Someone might, for example, be excellent at debugging, but suck at general code design (or code architecture).
Whatever you do, be a developer who wants to help other developers. Ego-driven-development is a pandemic in programming. Never forget where you came from, we all start from nothing and learn from others. Pay that forward.
You need to be the person people know to ask for help. If you’re the guy they go to when they can’t figure it out and you manage to figure it out you’re scoring points. For this you will need to work somewhere obviously.
>Tried to make few games and apps.
“Tried to make”? So did you succeed? For example, in making anything beyond a calculator or simple todo list or what?
Having the ability to be inquistive and experiment and explore. For example I just had fibre broadband installed I used speedtest CLI in the Linux terminal to see my speed then I saw it could output JSON so I outputted the JSON to a text file, then I wanted to see if I could format it better that led me to use jq ‘.’ filename to format it to human readable text. This isn’t programming but it is an example of doing things even when you don’t need to do them. You are just naturally inquistive. I find that approach happens with programming, so you just learnt arrays, but then you think what can I do with them how many ways can I use them, that then leads you to manipulating them iterating over them with a loop, then that leads you to find out about iterators and then you wonder can I use iterators with indexing, then you start making custom iterators then you find out Golang doesn’t have iterators so then you start looking at Golang and wondering how you manage the same functionality in Golang.
So really it is how many interesting rabbit holes can you go down type of mentality.
Your ability to be constantly learning and adapting. The learning never ends. There’s always something new, but you can get better at learning, and learn things quickly by recognizing patterns.
Solve a leetcode problem
Your ability to communicate outside of code. What separates the “good” from “the best” developers is not anything that they can do technically, but how they can communicate to both other technical audiences and non technical audiences.
Problem solving, critical thinking, perseverance. Accepting being wrong
communication & testing. these cover most practical aspects of working as a programmer in a job.
communication:
* how to understand what the customer wants to see as finished software
* how to express what you want to write as code. by this i am mostly restating the above. you want to write code to be understandable in terms of users, managers, and other devs. not the computer. the computer can read code whether humans can or can’t. your job is to write it for humans
* how to express differences or issues to fellow programmers
* how to ask useful questions to resolve issues
* how to put explain to management what is or isn’t a real problem.
testing:
* guides design
* serves as code documentation for others
* facilitates useful question asking
* provides a confidence booster to you and other devs that have to touch the code you wrote.
A unique thing i find is when developers aren’t maried to a language. Once you understand the principals of programming, it should become relatively easy to start working with a different programming language. Also understanding how the language works, for example what functions work best / better in certain senario’s. E.g. looping over a csv file can be done in multiple ways, but some could end up being much faster when working with large cvs files by reading each line by line for memory. Understanding when this becomes usefull and able to debug and optimize something like that is what makes a good developer in my eyes.
Empathy towards follow developers:
= Write code that is easy to comprehend, test and use. Prefer small functions vs elaborate class hierarchies.
Knowing, what not to do
= experience
I’m not a dev so I can’t give dev related advice yet but as far as soft skills go (I work with devs in my current career), don’t be an asshole. Be helpful, be constructive. I’ve seen a lot of devs leave my job for being assholes, and a lot stay and have very good careers for being helpful and constructive, cooperative..
organization, common sense, not being ‘that’ lazy
To me, what is really essential is getting the program written on time and as close as possible to the requirements as you reasonably can. If a writer writes, a developer develops (i.e. writes programs).
The more programs you write, and not just write but finish and deploy, the faster you will progress.
Anybody can write code that does stuff.
Only good developers write code where people can look at it 6 months later and they don’t swear at them for making a convoluted mess.
Aim for zero WTF moments in your code.
Unit testing helps a lot with this.
Patience
The best quality is to try and be comfortable being uncomfortable. It’s okay to go back to 0 to learn something new. It’s okay to not know something an ask.
In my experience most people aren’t limited by some arbitrary brain capacity, information is cheap you can look it up at will. People are far more likely limited by ego, comfort or fear.
Try and always learn, try to get out of your comfort zone, try to stay humble. Anyone trying to make you feel bad about things or gate keeping is probably already self-limiting. Just be yourself and be sure you’re going where you want.
Everything is not as it seems, if you go by what you read online everyone is a genius who knows all the best coding techniques and strategies.
In real life average programmers and code base are just normal struggling people writing the best code they can and failing. Don’t believe anything else it will make you think you’re further away than you are.
Knowing a language is really only about 30-40% of what I consider to be a good programmer. The balance is more about problem-solving or how you would propose a solution. This has to be abstracted away from the language used.
Another part of that balance as others have mentioned is helping others. Too many programmers I’ve worked with are like bulldozers and only want to get in, do the project, then get paid. They are not involved and frankly, when I was a coder for hire I didn’t have time to worry about feeling either. But it doesn’t make you a good programmer.
Since you mentioned you know C/C++, Java, etc get involved. Go on GitHub and find some projects that might interest you. Check their reported bugs/issues and see if you can submit patches. Back in the early 2000s I was doing web development in PHP and got involved in WordPress, Drupal, and a few other systems and learned a lot. But there are plenty of open-source systems. You will meet some fantastic people. And if you are patient and keep at it they will help you so you can help others.
This is probably ahead of where you are, but understanding state management and responsibility of objects.
Being a great programmer is about more than just coding syntax. It’s about effectively analyzing problems, breaking them down into manageable steps, and then designing creative solutions through code. Excellent written and verbal communication are crucial for collaborating with teammates, explaining technical concepts, and documenting code. This ensures everyone involved understands the code’s functionality and purpose.
Ability to write code that’s maintainable and extendable by others than yourself. Some never progress to this level even after a lifetime of coding. And many that are cabable of this still write obscure code for job safety or elitism.