Requirements of an excellent programmer to build a strong and successful career

Mantad

Reputable
Oct 3, 2014
189
0
4,710
Hey guys!

I am studying programming and a lot of other different things related to computer science.
I'm just wondering what makes a professional programmer, not talking about specific programming languages. I'm talking about the proper skills, capabilities of the person and or you can say abilities... Maybe certain amount of knowledge in maths and etc...?

What do you think? :) What kind of programmers are the most valuable ones? :)

 
Solution
Don't like itmoba's list fool you, some of that stuff is knowledge and can be gained by reading or practice, but "understanding" falls more into what Derza10 listed. Problem Solving.

Knowledge i something anyone can get, experience is much is harder when you're starting out, but problem solving is much harder to teach. If you're good at problem solving, you can eventually be an excellent programmer, but without it, youi'll probably be limited to only a decent programmer.

itmoba

Reputable
Aug 14, 2015
768
0
5,360
{*} Knowledge and understanding of algorithms
{*} Algorithm analysis
{*} Ability to document one's code
{*} Ability to document another's code
{*} Technical background (e.g., knowing the intricacies of a language and/or system)
{*} Understanding of user/server hardware and routing
{*} Understanding of the OS, libraries, frameworks, and APIs
 

Kewlx25

Distinguished
Don't like itmoba's list fool you, some of that stuff is knowledge and can be gained by reading or practice, but "understanding" falls more into what Derza10 listed. Problem Solving.

Knowledge i something anyone can get, experience is much is harder when you're starting out, but problem solving is much harder to teach. If you're good at problem solving, you can eventually be an excellent programmer, but without it, youi'll probably be limited to only a decent programmer.
 
Solution

itmoba

Reputable
Aug 14, 2015
768
0
5,360
Eh, how is gaining experience any harder when one is a fledgling? Simply find an open-source package coded utilizing the programming language of your choice which lacks a man-page. Once you've accomplished that, review the code. If the code and concepts are way above your level, keep searching until you have successfully found a package which meets the requirements (i.e., coded in the language of your choice, not overly sophisticated for you, and lacking a man-page). Then, simply write and submit a man-page for the said package.

Alternative: Documenting a program you like written in a language you're learning. Find an open-source project you're interested in, like, one that's hosted on GitHub. Submit documentation for the code -- if it's good enough, it'll likely be approved and incorporated into the main branch.
 

Kewlx25

Distinguished
I guess getting experience documenting is probably easy with the many opensource projects and documentation is a great skill to have.

Software architecture and design is a bit harder of experience to acquire, and so happens to be major issues with most Opensource software. You could look at OpenBSD, they have great code quality and have a track record for extremely low bug counts.
 

Mantad

Reputable
Oct 3, 2014
189
0
4,710
Thank you guys for your response, quite straight-forward to understand your opinions which I see as facts.
I've never thought that documenting a program is so important. Well if I understood what you meant by documenting, which I'm pretty sure I did.
Describing how the programs works and what could go wrong, right?
I'm doing my best to obtain the effort and fully committing to master the art of programming software and I/O(hardware). To become successful even if you have the problem solving skills, you still need to fully commit to the studies/practical work as no one is pushing me and I want to learn it by myself, doing free time studies. I'm a lazy person, but I love computers the most and truly am interested in to programming, so I never wanted to give up on this subject, but am putting effort to achieve the habit of full commitment for this role. If that makes sense to you guys, lol.
 


1. You must have an analytical mind. Question everything, believe nothing. Everything should be considered broken until proven otherwise.

2. A keen interest in, and understanding of algorithms is essential. Without this you'll end up bored and frustrated. Pick the job that you love and you'll never have to work a day in your life.

3. Communication skills are essential. Document everything that you write and describe why you wrote what you wrote. In doing so, not only will you make everyone else's life easier but you will also be able to easily identify and address deficiencies in your own work while reinforcing your understanding of the same. If you have the opportunity to do so, take a couple of courses on technical writing.

4. Being a stubborn bastard goes a long way. The most annoying problems are also often the hardest to solve. You should expect to spend 8-10 hours trying to hunt down a tiny but problematic bug. It will get extremely frustrating, but you will feel incredibly accomplished when you succeed.

The most valuable programmers are the ones that exhibit the following two traits:

1. They are team players. Mavericks, no matter how skilled they may be, just make everyone's lives difficult. Modern programs are a team effort, and a team cannot function when each member is trying to do their own thing their own way. I absolutely hate receiving work that does not conform to an agreed upon coding style; it sticks out like a sore thumb.

2. They take pride in their work and want it to show. Code that is both pretty and well written is a wonder to behold.
 

Mantad

Reputable
Oct 3, 2014
189
0
4,710
I haven't seen anyone suggesting the assets Pinhedd has pointed out, but it does make sense and from my point of view what I have read from your comment, I would strongly agree to your points. Nice one +1.
Thank you guys, appreciate your time :)!
What would build the foundation for understanding algorithms? I'm pretty sure I as time will pass by, I will develop it myself whilst learning to program, would you say so guys? :)
 


An understanding and appreciation of algorithms will come with time. Algorithms are the foundation of Computer Science as a field of study; as long as you enjoy your studies and constantly challenge yourself you'll do fine.

I highly recommend that you challenge yourself by implementing many of the more common data structures and algorithms that you've been exposed to already in C. Do this as a hobby, not as a matter of course work. Most modern languages have native support for these in their standard libraries, but reliance != appreciation. In order to build that appreciation you'll need to know not only when to use one algorithm over another, but why. Further to this, when implementing them on your own you'll eventually be able to identify specific optimizations that suit your own particular use case.
 

Mantad

Reputable
Oct 3, 2014
189
0
4,710


Thank you, you're a star!