What Have You Gained From Competitive Programming
What Have You Gained From Competitive Programming
32 Answers
Przemysław Dębiak, aka Psyho; won 4 TCOs + bunch of other stuff; ranked #1 in MMs
Answered Jul 15, 2015
Yes, a lot. It actually redefined my whole life (in a good way).
In no particular order:
Job offers. Not that I care about them, but it's good to know that I have a backup plan
in my life.
Everyday skills. Problem solving, focus, time management, stress management,
mental stamina, etc.
Realistic self-esteem. I know what I'm capable of and I know my good and bad sides.
Specialized knowledge. Algorithms, AI, machine learning, computer vision, low-level
optimization and bunch of others.
Less time wasted at university. Competitive programming turned out to just be a
better way of learning things for me. Much better than many courses I had at
university. Ultimately, thanks to my results in competitions, I was able to safely drop
out from my studies.
Traveling and meeting new people. Priceless.
$$$. Well, sometimes € € € too.
Back pain. Oh...
Last but not least, it gave me a great background when I recently switched to being a game
developer/designer. Honestly, I can't imagine having a better background for this.
Each time I see "competitive programming is bad for you" I want to punch the author over
TCP/IP. It's like arguing that going to gym is bad. Sure, if that's the only thing you do in your
life, it might not be the wisest choice. But... well, you get the idea.
53.7k Views · View Upvoters · Answer requested by Bohdan Pryshchenko
Your response is private
Is this answer still relevant and up to date?
YesNo
Upvote648Downvote
Share
RecommendedAll
I've worked at Google for 7 years now. I think I personally over-invested in programming
contest ability in terms of pay off for real, day to day work. Of course, programming contests are
really fun, and it helps a lot in the interviews. But solving well defined algorithmic problems
quickly is not a super important a skill to have to be an effective software engineer. I think it's
more useful to be able to understand large, complicated systems. It's important to be able to
solve complex, poorly defined problems in the span of months, rather than simple problems in
the span of minutes.
It's not that the skills relevant for programming contests aren't useful; to be able to break down
problems, cast them as things I already know, to learn tons of algorithms, to see right through
dynamic programming problems, and quickly debug small programs are certainly not useless
skills for a software engineer. It's just that the marginal utility of hours and hours spent
practicing is fairly low, those skills might be 10% of the job, and improving from very good to
great at it doesn't help with the remaining 90% of day to day things.
If I were to do undergrad over with the intent of being immediately useful as a software engineer
for Google, I'd probably invest less time time in programming contests, and more time building
large projects and studying machine learning and statistics.
63.5k Views · View Upvoters
Upvote637Downvote
Share
RecommendedAll
Anudeep hails from Samalkot, a small town near Visakhapatnam. While in school, he did not
know much about JEE or AIEEE, and his father gave him freedom to do anything he wanted,
rather than focus on JEE training. He appeared for the state level engineering entrance exam
and reached ANITS. His sister insisted that he take CS because, “CS is easy, you can start
preparation one day before exams and clear them.” He was looking forward to having fun in
college and accepted her advice.
In his second year, he started doing competitive programming. He gradually excelled in it while
solving problems on different online judges. Soon he started winning state-level and national-
level coding contests. Last month, he was invited to Russia to compete in the ACM World
Finals, where his team finished 45th, surpassing some of the IITs and other top institutes of the
world.
He had to risk his job for Zurich. He was initially offered London, Bangalore and then
Hyderabad. He told he do not want to take those position, and was in a situation of being
completely rejected by Google. But it was okay with that too so he told no to those 3 positions.
70 days after his onsite interview He was finally given Zurich with package 1.32 cr INR
(approx.).
What helped him get this job - Competitive programming. That is all he did right from my
second year till date. What ever he could answer in interviews was because of what he learned
for competitive programming. :)
This is the best success story i heard till date about a tier-2 or tier-3 colleges. He is considered
to be GOD for many fellow programmers including IITIANs etc.
2.3k Views · View Upvoters
Your response is private
Is this answer still relevant and up to date?
YesNo
Upvote12Downvote
Share
RecommendedAll
Any person who follows competitive programming enthusiastically in India must have heard the
name of this outstanding girl. The thing that will leave many people dumbstruck is that she was
homeschooled. She does not have class X and class XII certificate!
So what made her unique? What makes her so special that she is admitted to one of the finest
institutes of higher learning in the world? The answer is competitive programming. She started
out at an early age and now has 2 silver and 1 bronze medal which she won at the prestigious
International Olympiad of Informatics(IOI). In a recent interview to a popular newspaper, she
herself mentions that - “When I started unschooling, that was 4 years back, I explored many
different subjects. Programming was one of them. I found programming interesting and I used
to give more time to it than to other subjects, so, I started liking it at that time”. CMI's
Madhavan Mukund, who is also National Co-ordinator of Indian Computing Olympiad says-
“This is possible only for a student whose academic achievements are outstanding, which is the
case with Malvika's performance at IOI”.
Here is a brief account from her own mother, Supriya Raj Joshi from Mumbai:
“To all who doubted, accepted, rejected, supported, respected, cherished, criticized our
unschooling journey and our fellow homeschoolers.
It was never a smooth journey but it was different in two ways, no teacher, no board, no
government but we ourselves chose to take responsibility of our own learning and we pursued
that with tremendous freedom and conviction. Secondly, more than marks and medals, we
believed and practiced the “joy of learning”.
My elder daughter Malvika left her formal schooling at the age of 12.
Scholastically she was a bright student and so people were even more concerned. and I repeat,
the journey was never a smooth journey but you see when I say this I am not talking about
socialization or assessments. Those are really petty things and this is not what I say, this is
what our daughters say because they had more challenges to tackle.
And yesterday Malvika received this note from MIT, world’s top college for science and
technology!”
PS: I know this does not answer the question exactly but a little inspiration for competitive
programming to youngsters won’t do any harm.
Sources & additional reading: ‘Unschooled’ Mumbai teenager Malvika Joshi makes it to MIT
7.6k Views · View Upvoters
Upvote44Downvote
Share
RecommendedAll
1. Firstly and primarily, you have a bit of fame in your department and among your
friends.
2. You manage to solve almost all the problems you face in your programming labs.
3. You meet a lot of smart people around you.
4. Your life-style changes in a way which invokes you to think about any problem (even
which might not be related to programming) you see around you.
5. You get some values while making any decision among your non programmer friends
(since they will start to think you are kind of genius :P).
6. MOST IMPORTANTLY, you discover an entire awesome, restless, cool and amazing
world full of excitements which you would never be able to discover otherwise
3.7k Views · View Upvoters
Upvote12Downvote
Share
RecommendedAll
2. Do I think that the skill set I gained from such competitions is sufficient
and complete in a sense?
No. Such competitions don't teach me how to work on large code bases. They don't
teach me how to use modern tools and technologies. They don't teach me fundamental
abstractions useful in software design. Even for research, they don't teach me how to
approach an incredibly difficult problem (say NP complete) over months.
I did such competitions with lot of vigor for a few months only. After that I lost that
vigor and passion - though I'd still do them every now and then and would learn new
stuff as well, I lost a sense of competition and virtually stopped doing individual
competitions focusing primarily on team competitions. After an initial learning curve,
I see them more as sports. You can participate in such contests only if you've an urge
to compete. Good CS skills might be required to do well in this sport, regular practice
might improve regular skills as well. It is like wrestling. People who do it are usually
strong, constant practice of wrestling makes one further strong as well. But more than
that wrestling has nothing to do with strength - it is a sport in its full right.
RecommendedAll
But having said these there are a lot of other jobs like data scientists, Sys admins etc which may
or may not require these skills and would require other
specific skillsets.
2.5k Views · View Upvoters
Upvote14Downvote
Share
RecommendedAll
Abhimanyu Mongandh Ambalath, I code
Answered Jul 6, 2012
Originally Answered: Do you find skills you achieved during programming contests to be useful outside of them?
Programming contests are no different from mathematical puzzles,
1 .Doing them would make you sharp,
2. would enable you to think more clearly and properly,
3. Might help you in getting into Google, fb etc.
So just like a math wiz would have to be a lot more than a wiz at math puzzles being good at
programming contests is just a bonus not the goal (Unless you are like a global topper, then you
wouldn't need to ask this question).
It will definitely help you in analyzing each and every piece of code you actually write, and in
general, on a micro level the code of PC guys tend to write much better, and usually their code
sucks at macro levels.
So ideally what you would want is to do such contests when ever you want to have a bit of "fun"
and pick up a few talents along the way.
6.1k Views · View Upvoters
Upvote28Downvote
Share
RecommendedAll
RecommendedAll
Jeff Ronne, OO, Java, C++, C, noSQL, Big Data, automation, control systems, AI
Answered May 19, 2014 · Upvoted by Jeff Nelson, Invented Chromebook, #Xoogler
Originally Answered: How much does competitive programming help you in future programming jobs?
In industry what matters are large software projects built over the course of months by teams of
5 to 20 to possibly even more programmers.
The required skill is not speed, but to be able to decompose problems in to manageable,
maintainable, reliable subcomponents and integrate into the larger design. Everyone needs to
design, implement, test, integrate and maintain their components. The SW lifecycle.
The preeminent skill is the SW architect who oversees the design and decomposition into major
functional units.
OOP is a favorite.
I have played far to much chess in my life, there is a huge difference between expertise in speed
chess and being a great grandmaster.
4.4k Views · View Upvoters
Upvote12Downvote
Share
RecommendedAll
First of all.. it´s a good way to practice code! If you are self-learner, maybe to practice code is
one of the hardest part, and competitive programming, if you like it, is a good way to practice
tons of code!
Second one, you learn to think in the right solution. You learn not only how to find a solution,
but, how to find the right one! (And not only in competitive programming problems, I mean in
life too)
If you face one problem, you will think and will find more than one kind of solution, and this
process will be really quick, because you are used to do it.
Third one, is addictive, but not the bad addiction! I know a lot of people who are addictive
(including me) to competitive programming. I love it!
Fourth one.. let me think.. you meet great people! I think that you can apply this not only to
competitive programming, but of course, is another benefit here!
Fifth one.. In some interviews, they will ask you algorithmic questions, which will be easier if
you have done competirtive programming.
In my personal case, the first point was the most important because, thanks to all that practice,
was easier for me to get a job as software developer.
2.4k Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
But for some, getting job may not be the ultimate benefit. For example I do competitive
programming because it motivates me to cross my limits each day. The problems which were out
of my scope few months back, are now a lot easier. So for me ultimate benefit from competitive
programming is slightly different.
For others it might hold some different meaning. So there isn't any specific answer to this
question, just an individual perception.
Find out why you jumped into competitive programming in the first place and you'll have your
answer.
RecommendedAll
Suchith Javagal (ಸುಚಿತ್), I did competitive programming for some time.
Answered Feb 5, 2017
I did competitive programming for some time. Unlike people here who have won competitions
like TCO, or participated in World Finals. I didn’t go that far. My career in sport programming
ended after 4 regional ICPC contests. I never made it to div 1 in Codeforces. Let me share my
perspective.
Does it help? Yes, it does. It is a fun way of learning discrete mathematics, algorithms and data
structures. I managed to learn a lot of data structures which are not usually taught in the basic
DSA course (I’m not a CS student. But I heard this from my friend). I got interested in
algorithms and bought the famous book, CLRS and started studying it. It is just the beginning. It
helped my problem solving skills. I didn’t prepare much for the algorithm interviews I faced
previously. But I could clear it without much effort. That is a plus.
Conclusion
For university students, a lot of job opportunities open up. Personally, I improved my
programming skills A LOT. I had trouble dealing with recursion or writing backtracking
solutions before and I can do it comfortably now. You also learn to come up with test cases and
identify the corner cases. You learn to handle the pressure.
But you miss a lot of things if you go too much into it. That said, if you do it for a job or for fun
or as a hobby, it is perfectly okay. But don’t make a big deal out of it because being red in say, CF
or TC doesn’t make sense much sense. It is just an arbitrary cutoff. Don’t think that is everything
you need to know. You don’t have “editorial” for real-world problems. You have to figure out the
solutions yourself.
2.3k Views · View Upvoters
Upvote29Downvote
Share
RecommendedAll
CS Academy
1.3k Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Ankush Jain, Data Scientist at CleverTap - App Analytics and Mobile Engagement (2016-present)
Answered Oct 10, 2014
Originally Answered: What is the benefit of doing competitive programming from a job perspective?
Any competition award gives credibility to your point.
The higher the award or the popular the competition, the better your resume will be trusted.
In many cases, you can directly qualify ( at least for the interview process ) if you mention that
you have achieved a significant position in a well known competition.
Believe me, if there is tie between 2 candidates, a point mentioning that you reached ACM-ICPC
finals/regionals will be a tie breaker!
1k Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
My experience working with the competitive programming world has greatly influenced both my
teaching and research (several of my research publications are inspired by "tricks" that I
originally learned in the context of competitive programming). And the problem-solving skills I
learned from competitive programming were probably a substantial factor in helping me
through a PhD at MIT and an ensuing academic position as a computer science professor.
When I was interviewing for things like summer internships while back in school, my
competitive programming experience made technical interviews much easier. I also have
stronger coding skills as a result, which has helped me in both academic and industrial settings.
On being a competitive programming fanatic -- there is also a lot of great stuff beyond the
boundaries of competitive programming, so do also be sure to balance your time and efforts
accordingly. Many unique and exciting career possibilities should be within reach if you study
"competitive programming plus X, Y, and Z".
13k Views · View Upvoters
Upvote71Downvote
Share
RecommendedAll
1. Language skills. When you do competitive programming you have to master the
language you're using ! And use the right one according to the specific problem. You
have to write code like your speak your native language. Most of the times competitive
programming challenges have time limits and you really don't wanna lose your time.
Thus, it's quite a funny way to learn a language as you mostly participate a challenge
for fun !
2. Team work. Often, competitive programming challenges are team based
experiences. You may only have one computer for your whole team so it has to be
organized. That's a great way to learn how to work inside a developers team. You have
to make your ideas clear for your team and be efficient at every moment
3. Rigor. For the same reason it's not acceptable to produce dirty code. You're expected
to write self readable code that your teammates will understand and complete. Even if
you're not in a team it's really important to make sure your code is structured and
organize. You'll have to try your code and change it many times, according to the
opponents strategies if it's multiplayer or simply for time limit for example. That's also
a great skill you'll need as a professional developer.
They are the main 3 skills according to me but there are many many.
That's basically why all big companies like Google Facebook and co. are always really up to date
concerning these challenges. Participating to these challenges is according to me the best gate to
these dream jobs.
2.1k Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
But I learned to carefully read and understand the problems I'm facing. It tought me to think
very well about what I'm fascing and how I could go about solving it.
2.2k Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
Further in your life when you'll become a developer, it will help you sometimes.
For example, I never did scraping(extracting data from a site, for example you want to extract
contacts of all dealers in a particular area) with PHP, nor did I learn PHP earlier.
But it took me very little time to do it. The guys with me who had not done competitive
programming earlier wrote lengthy codes to parse the data but
my code was shorter and precise.
So yes not everywhere but sometimes it'll definetly help and anything you learn
never goes in waste.
Good Luck. :)
1.1k Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Anonymous
Answered May 2, 2013
Originally Answered: Do you find skills you achieved during programming contests to be useful outside of them?
Yes, but those skills can be learned in a plethora of different ways.
It's nonsense that we should prostitute Computer Science by turning it into a
competition.
In my opinion, doing programming contests is the worst way to spend your valuable free time in
college. Programming contests boil down to solving imaginary algorithmic problems. Yes,
solving a hundred DP problems will make you extremely good at recognizing the next problem
that can be solved via DP but in real life you won't ever encounter such problems. The amount of
time that you are going to spend to become good at programming contests can be used much
more productively. While being one-dimensional algorithm junkie can impress your future
employer, I think that having a broad knowledge of the field is more beneficiary.
Yes, hot tech companies will ask you to solve an algorithmic problem during an interview but if
you have genuine interest in CS you will do just fine.
1.6k Views · View Upvoters
Upvote6Downvote
Share
RecommendedAll
Livepro, Ecommerce website, Application, ERP and all kind of website development service
Answered Mar 22, 2016
Originally Answered: What is the ultimate benefit of practicing competitive programming?
There are many benefits of practicing ultimate programming. Like my friend Prakhar said, I
totally agree with him. If you do programming everyday, one day you will be a master, day by
day you will cross your limits and one day any program will be just a click away. There are
different definitions of ultimate programming for different people. But I think, by ultimate
programming practice, you will get good job also and it will be easier for you to code.
Gkinstitute.in is one of the best coaching institutes where I have seen people taking admissions
when they don't know anything and getting placed in brands.
368 Views
UpvoteDownvote
Share
RecommendedAll
I have been fired for not fitting in a research group that loved a man who got naked in the office
and tried to convince be that I should be gay. That was from a number one computer science
school.
I was fired by a woman who is best friends of a friend of that same man. I was fired from a
contracting firm at a NASA space center.
I was fired twice by a teams in SF, the member of which had made porn films. And, they didn’t
really like me. But, then, I never made a porn film, never used or sold drugs, etc. And, these
companies get a lot of shiny press and investment.
The last place that fired me, I had a chance meeting with the manager once in SF. She was
walking around in the nude propositioning men. She propositioned me. Some years later, I met
a professed Christian who sent me in to interview the company. I had forgotten the people in
this company. I forgot meeting this women in town with the Christian dude, where they were
sitting having coffee. I forgot that I had brought up that she and her group were known in town
for having made a porn film, and that she happily told me that it was great fun doing that and
that they had this wonderful consultant to train them in the proper “dance movements” for their
film. So, I interviewed this place, and then started going to work. One day, the lady wore a pair
of shoes that was the same pair of shoes she wore in SF the day she was wearing only that pair of
shoes. I found out more about the company. And, I while I was there, one of the “engineers”
signed up for a porn film in Florida with some sick team, I don’t know. His desk was just across
the cubicle space. And, I saw him go on line, find this porn company and apply for a role. He was
accepted to the role, and another manager congratulated him for going and getting more money
for his family. But, he then went into some histrionics declaring that his laptop was broken and
hacked into. He had the company replace his laptop, which he took home and never brought
back to work. Apparently the parent company, which had purchased this group of miscreants
had some strict rules about porn and firing. The guy had to get used to it. Anyway, I started
getting unhappy there, and they fired me for incompetence.
Strangely, I did find another contract job after that company. The next one was considerably
more legit. A kid form India, who was better to work with than many other kids from India was
using a problem solving site to get a rank. I went onto it and got a really good rank in a short
time.
I think back on the people who fired me, and I think about what kinds of people they were or
still are. And, I wonder if any one of them could begin to solve the problems I did on this sort of
competitive site. The answer to that question is an absolute no.
My input into the problem solving sites has yet to turn into a real paycheck. But, I am much
older than those who go onto these sites. Yet, I get to know in myself that I have my integrity. I
am really a very good programmer. I am also good as the architect, partial business person, and
all the other things I need to be good at to be in this business that I have been in for a long time.
Those who fired me never had really good reasons to do so. Their behavior was abominable.
So, these competitions, taken seriously or not too industriously - as in my case, where I do feel a
little old to grind away with it - these competitions have helped restore some faith in myself. I
am hoping that I can restore faith in others and find better employers than the ones I had
before.
Yes, the problems found on the competition sites led to reading more or more reviewing
literature for finding the bleeding edge of solving problems. Some curiosity has been restored.
And, I took this course on multi-core programming this summer because I have become more
aware of algorithmic solutions for some problems being improved by multiprocessing. If the
money was there I would love to dive into some this research, or work on problems that I have
thought of while solving the problems on these sites and in these courses.
If I can get back to an economic stability, I can leave all the bad stuff behind and just forget
about it and the people who felt empowered by their sicknesses. And, in time society and history
will also forget those people. But, if I keep solving those problems, I might get to make history at
best while at least I will be able to have my integrity.
1.1k Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
RecommendedAll
Mariya Mykhailova, Nickolas @ TopCoder and Codeforces. Problem writer. Not a coach :-)
Answered Jul 14, 2015
Yes, of course
Mariya Mykhailova's answer to How did one small decision change your life?
6.1k Views · View Upvoters
Upvote10Downvote
Share
RecommendedAll
Gregory Popovitch, C++ and Haskell - nothing else!
Answered May 19, 2014
Originally Answered: How much does competitive programming help you in future programming jobs?
Since you don't trust what "Nearly every answer on Quora says", what is the point of asking
again? Do you just want someone to confirm what you clearly want to believe?
Look, even it it doesn't translate directly to software development in the industry, competitive
programming can't hurt, and if you do get good at it, you will have a very good understanding of
data structures and algorithms, their efficiency and when to apply them. So go for it, and see
where it take you.
2.3k Views · View Upvoters
Upvote11Downvote
Share
RecommendedAll
RecommendedAll
Anonymous
Answered Aug 17, 2014
Originally Answered: In what way does Competitive Programming help you grow as a programmer?
It allows you to explore the terrain of data structures and algorithms well beyond what your
regular algorithm courses in college or your job could ever allow you. As you indulge yourself in
knowing more problems, you begin to see an entire timeline of how the different algorithms and
data structures came into being at different points in the history of computer science. In this
way, algorithmic problems allow you to realize the origins and importance of these different
algorithms and data structures and their evolution. And competitive programming makes it
more exciting as it brings in gamification into solving those algorithmic problems.
So you see, even without realizing, competitive programming allows for a great proxy into the
complex world of data structures and algorithms, which otherwise could possibly be done only
in a rather difficult and costly academic setting.
739 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Competitive programming is extremely similar to tech interviews except that you actually have
to implement your solution and it actually has to work. That's probably the best thing in
compare to.
6.8k Views · View Upvoters
Upvote30Downvote
Share
Dan Zhang
Sounds like the benefits to regular CS coursework (or a small side project) to me. If that's not ...
Mithun Mohan K
Answered Aug 13, 2015
Originally Answered: How has competitive programming helped you?
I find myself fortunate to have got the opportunity to know about competitive programming.One
of the most significant impact of it in my life happened when i cleared GATE 2015 with a descent
score without any preparation. Being a CSE student i loved learning about data
structures,algorithms and programming. I answered mostly questions related to them, but never
expected to clear the exam. I personally thank codechef and codeforces for everything i have
learnt :)
1.2k Views
UpvoteDownvote
Share
RecommendedAll
Anonymous
Updated Dec 12, 2015
Yes a lot.
2) patience to debug
3) getting a job
1.1k Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
(Disclaimer: I don't do it "on the clock", but I do as many problems as I can in my spare time.)
1.8k Views · View Upvoters
Upvote7Downvote
Share
RecommendedAll
Alex Wang
Answered Feb 25, 2015
Originally Answered: How much does competitive programming help you in future programming jobs?
It helps you crack the coding interviews and get into a company, where you get to solve real
software engineering problems.
100+ Answers
So what should you do with that 20% time? Since you're at a well-known tech company, you
should take advantage of the resources available to you. Here are 10 suggestions:
Looking for more ways to excel as a software engineer? Download a free, sample chapter of
my book, The Effective Engineer. It's designed specifically for today's software engineers,
based on extensive interviews with engineering leaders at top tech companies, and packed
with hundreds of actionable habits and techniques to accelerate your career.
292.1k Views · View Upvoters
Upvote2.3kDownvote
Share
Leon Guianu
Working at Google would imply using C++, Java, Python, Go and Javascript (as you also said in ano...
Vipin Tiwari, Learner 1.0
Answered Aug 14, 2014
Originally Answered: How do I improve my coding skills? And get a good foundation in coding?
Coding is just a part of process of problem solving, You should need to understand the
underlying problem and efficient solution within given constraint. So i will better tell you,how to
be better at problem solving:
Resources:-
CS106A: Programming Methodologies (Stanford Java tutorial)
Eclipse And Java Video Tutorials
CodingBat Java (Elementary problem on java programming to kick start the things)
Coursera (C++ course )
Buy The C++ Programming Language (Bjarne Stroustrup)
Page on stanford.edu( CS101 course by stanford university for non cs students/beginner
computer science student)
Resources:-
Introduction to Algorithms Book(CLRS) ,easy language,very detailed explanation about each
and every algorithm technique(bible book :) )
Data Structures and Algorithms Made Easy : Second Edition: Data Structure and Algorithmic
Puzzles Book
YouTube Channel:-
mycodeschool
saurabhschool
Do's:-
1. Try to implement every solution on paper first before starting the code
2. Analyze the problem, define the constraint , compare your own solution with the parameter
of time/space complexities and then start coding (It may be hard to do at first but it will surely
make you a better programmer)
At this point of time you would be pretty confident enough to imagine ,which technique shall i
follow or which algorithm shall i utilize to solve a particular problem, Now it's Practice Time!!!
1. Start solving problem on Sphere Online Judge (SPOJ) ,200 problems
2. Once you finish step 1, try topcoder problems for DP and other algorithmic techniques ( solve
around 300 div2 or div1 ,until you feel confident in yourself)
3(Optional) If you are looking for interview preparation ,Start solving problems from
Cracking the Coding Interview: 150 Programming Questions and Solutions
GeeksforGeeks - A computer science portal for geeks
Bottom Line:- It's not the only "The" way to achieve a good programming mindset but it's a
better way that helped me to equip myself with better programming knowledge.
25.6k Views · View Upvoters
Your response is private
Is this answer still relevant and up to date?
YesNo
Upvote90Downvote
Share
RecommendedAll
Be curious about how the software you currently use is built. Have you ever wondered how
Gmail identifies messages as spam? Try building a basic spam filter using Bayes' theorem (it's
more simple than it sounds!)
Ignore design and interfaces in the beginning. You can learn an incredible amount by just
working with text, and you won't be overwhelmed with trying to make things look polished.
Want to see your code affect the physical world? Buy a cheap Arduino micro-controller
(http://www.arduino.cc/) and experiment with different sensors. Blink an LED when a passive
IR sensor detects motion. Sound a piezo when you push a button.
Purchase a Pebble smartwatch and make a simple watchface that displays the time. Have it
display the weather for your zip code using a public web API, even though that has been done a
thousand times before. It's a concrete and clearly defined goal that will teach you how to utilize
any kind of data from external web APIs.
Download Unity - Game Engine for free and start by making incredibly simple apps using its C#
scripting. They don't have to qualify as games. Make spheres shoot into the void when you click
the mouse button. Add sound. Add physics. Play with cannon-like acceleration where the
projectile is launched and propels through the air using momentum before eventually falling.
Programmatically create a wall of boxes (nested arrays!) to shoot your spheres at. Have the
boxes change color depending on the force they experience.
You'll soon realize that being able to program is like a superpower. You can encode an immortal
bit of yourself into electronics, and then clone it thousands of times. That piece of your
consciousness will continue on indefinitely and free you up to do something else. Those digital
pieces of you will even interface with other people.
If you feel like you were born to code, the process of getting better will take care of itself. Just
clear as many distractions as you can, pick something interesting, and start typing.
23.6k Views · View Upvoters
Your response is private
Is this answer still relevant and up to date?
YesNo
Upvote56Downvote
Share
RecommendedAll
Naman Attri, A Quick-witted, Sagacious & Polymath Software Engineer - Coding is wonderful!
Answered Oct 11, 2014
Originally Answered: How can I develop programming skills?
Programming like Mathematics require nothing but practice.
As a starter, I would suggest you begin with the Mother of all modern programming languages
"C". Studying that you'll develop the basic skill set that will give you an insight of the syntax and
semantics. This information will later help you master other programming languages.
Later on after practicing and polishing your Object Oriented skills you can move on to Mastering
Design Patterns for example @Model–view–controller for Enterprise level programming that
get's you ready for developing Robust and Scalable applications.
If you are looking for making a career in Computer Programming that I strongly recommend
that you do. Then I would suggest you quickly move to server side technologies on which all the
current and future humanity depends upon.
Computer Programming is not enough one should also look into database administration to add
a cherry on the cake. You'll love it when you give it a try. As a beginner start with @The world's
most popular open source database
Hope you'll enjoy this journey, being a Software Engineer myself I welcome you on this fun
adventure.
Good Luck!
2.5k Views · View Upvoters
Upvote7Downvote
Share
RecommendedAll
Choose one language (one of C++, Java and C#). Learn to live, eat and breathe in that language.
You can learn from books, or go for the various online courses. A few of my favorite book are:
Programming -- Principles and Practice Using C++ : this is a pretty useful book for
those with little or no experience in programming; it’ll help you refine you technique.
Thinking in Java by Bruce Eckel is a good beginner level book.
C# 4.0 The Complete Reference by Herbert Schildt
Various courses are available on Learn to code. Sign up.
Also join Stack Overflow - an online Q&A platform dedicated to programming. If you need help
in understanding concepts, or you’re having trouble with some exercise, you’ll find plenty of
help here.
STEP 2: Practice
Improve your speed and accuracy in coding by participating in various online hacathons. Sign
up for HackerRank, or Sphere Online Judge (SPOJ) where you’ll find plenty of challenges.
Once you’re done with algorithms, try solving real-life problems at HackerEarth - Programming
challenges and Developer jobs
STEP 3: Propagate
Form a study group and keep practicing daily. Try developing your own
algorithms/applications; try answering a few questions on Stack Overflow.
You can even organize workshops for the juniors in your college.
Happy hacking
7.5k Views · View Upvoters
Upvote36Downvote
Share
RecommendedAll
Swarup Sahoo
Updated Jul 26, 2014
Originally Answered: How can I improve my programming Skills?
To enhance programming skills, you need to focus on the following 4 topics.
Programming Languages
Data Structures
Algorithms
System understanding
To keep my answer short, I will not suggest any books, but keep myself limited to overview of
each topic.
Each topic is a big subject of interest in itself. But you can try to grab as much possible gradually
in long term.
Programming Languages
Never limit yourself to one language. Keep learning multiple languages - one
procedural, one object-oriented, one scripting, one functional, etc.
Also, don't try to learn too many languages in a short time span. Gradually keep
learning one new language every year. But never forget the old one you learnt.
Don't focus only on syntax. Focus on the paradigm of the language, its weaknesses and
strengths. Understand where each language fits well. Learn what the language
designed to offer.
Good hold on 3-4 languages will give you a very nice insight about these languages,
which will be useful to you.
Keep practicing a lot. Almost daily you must write a program, even if it is a 10 lines
program. Make it a never dying habit.
Data Structures
Learn all the basic data structures - array, list, tree, graph, trie, dictionary/map, set,
etc.
Learn the advanced data structures whatever you can - suffix array, suffix tree etc.
Implement data structures in whatever languages you know.
Understand the basic operations (read, write, etc,) time complexity for those data
structures.
Understand the strength & weaknesses of each of those.
Remember the data structure support by the language libraries (STL, classes etc.).
Keep playing a lot with those.
Algorithms
Learn all the easy algorithms - sorting, searching, graph algos, etc.
Learn all the advanced algorithms whatever you can - dynamic programming,
backtracking, etc.
You need to master algorithm complexity computation.
You need to learn how to design your custom algorithm as per the need.
Keep implementing lots of algorithms.
System Understanding
Understand your target OS nature. What your OS supports? How a process is being
executed? etc.
Understand program segments - data, text, stack, heap, etc.
If your language is based on virtual machine, then learn how your VM works at a high
level.
Tools [Optional]
Choose a suitable editor.
Prefer compilers, build tools which follow the standards.
Learn static analysis tools, profiling tools.
Finally
Write a lots of code, compile, run, debug.
Read lots of code authored by others, may be from popular open source projects.
Keep learning new languages, new data structures, new algorithms, new tools year
after year.
RecommendedAll
RecommendedAll
Scott Danzig, I've been programming for 30 years, in many languages but lately mostly Java and
Scala.
Answered Dec 9, 2013 · Upvoted by Jessica Su, CS PhD student at Stanford
Originally Answered: How can I quickly improve my programming skills?
While you're actually building something, learn whatever you don't know. Look it up
online and RTFM.
Be an expert in one technology at a time. Even a small API you're working with...
think reading the instructions, and really understanding the design and the
functionality of it. Read a book on the programming language you're using, cover to
cover. You'll find you can even teach the experts a thing or two about the things you
have mastered.
If any of your "superiors" take the time to educate you, take advantage of the
opportunity and learn all you can. If you don't understand something, look it up later.
Don't be shy to ask when you get stuck on Stack Overflow. I find that usually while I'm
properly formulating a question, I'll figure out the answer on my own before I post it.
Don't slack off, but try to learn about technologies to make your life easier, BEFORE
you write your code. Figuring out if there's existing code out there that you can reuse
is not an easy task.
Enthusiastically take advantage of code reviews.
25.5k Views · View Upvoters
Upvote41Downvote
Share
RecommendedAll
Sumit Arora, Full Stack Software Engineer With Cloud,Networks and Web
Answered Jun 22, 2013
Originally Answered: What are the good ways to improve programming skills ?
I will suggest you the following approach :-
You need to follow a very organized and disciplined approach If you are preparing for the
Software Engineering Job at Facebook/ Google/ Amazon/Microsoft etc.
(Example: You may use following approach, for a two months plan - around 250 hours)
Actually all these companies e.g. MS, Google, Amazon, Facebook, Apple follow an approach on
which that measure the thought process of a candidate.
And they use different means to evaluate that, but yes most of them uses Algorithms/Data
Structures/Open-ended questions(If you have applied for a software engineering job) as one of
the approach to evaluate the talent.( As those are the base to develop the technologies).
(Step-2): You should have practical understanding of Data Structures e.g. (Practical use cases
related to :when to use circular buffer , or when to use adjacently list or the combination of both
or something else to solve the problem ).
(50 Hours)
(Step-3) : You must practice several coding problems to implement the things which learn
from Step-1 , and Step-2 (you may do the following choose any coding language for the choice of
yours (C, C++ or Java or Python or PHP or any one else ).
(50 Hours)
(Step-4): Solving the problem doesn't mean just to solve it, but to understand the best way to
solve it e.g. The given technical problem can use various ways to come to solution, and you
might want to use the optimal one. (How you connect the given solution with the
computing/memory resources e.g. Memory/Processing Power)
(50 Hours)
Most Important One.
However other than programming you might need to understand the main concept for the
interview is to keep the interview active and this requires some action from your side, such as
the following:
You need to understand the interviewer’s expression and mindset to un- derstand those
questions.
You might need to ask appropriate questions to understand the question or any other discussion
item. (50 Hours)
And also :
Prepare : "Please tell me about your self" , "Your skills related positive/negative further interest"
, Basics for the most needed computer science concepts or anything as you presented on your
"CV/Resume".
(10 Hours)
Above is just a sample plan, you may customize the way you want(e.g. 50 hours to 10 hours or
something else) - Click to Amazon, to find the best books you might need (e.g.
cormen algorithms)
(Here Google doesn't mean the Google, it means any company which is very creative to
introduce the computer science related products ).
4.6k Views · View Upvoters
Upvote34Downvote
Share
RecommendedAll
Choose an object-oriented language like C#, Java, Ruby, or Python for exposure to the industry
standard that is OOP. From what I've seen the .NET and Java platforms are the big players, so if
you're interested in learning what wins jobs, bear this in mind.
Choose a functional language like Clojure, Racket, or Haskell to gain exposure to functional
purity, state management, and immutable data. Definitely peek at an ML-based language (F#,
OCaml, Haskell) if only to see what's so incredible about algebraic data types and strong typing.
Build things that are suited to the language you're using. For example, make something in
Erlang that capitalizes on its actor model.
Extra credit: There's a good deal of value to being able to compare and contrast languages. To
that end, it would be useful to build the same thing in different languages. For example, you
could build a game (maybe a roguelike) in each of your 3 or 4 languages taking care to notice
how each language's properties play out in the design.
The long view: If you build 10 things in 3 languages (30 things) you'll be a more capable
programmer than the one who built 30 things in 1 language. I would definitely not extrapolate
that building 1 thing in 30 languages is yet again better as it takes a while to master a language.
Concentrate on 3 or 4 languages until you feel you've learned all they have to offer. I'd estimate
no fewer than 2 years per language so 3 or 4 languages should take you 6 to 8 years, bare
minimum.
I would contend that to become truly advanced as a programmer one should know at least 4
languages well not counting faux-languages like HTML and CSS. I used to think I was a pretty
good programmer coding professionally in COBOL for a stint and then in .NET over my twenty-
plus year career. And then Rails caught my attention and opened me to a community embracing
Ruby and doing more amazing things than I had seen in my consulting job. That whet my
appetite for programming languages altogether. I've been learning one after another and
watching countless talks in each. I learned more in the past five years than I learned during the
15 years preceding.
The real eye-opener, however, has been functional programming. The ideas abuzz in the FP
community are some of the best in technology, in my humble opinion. (I'm enamored by the
ML- and Scheme-based languages.) F# for fun and profit is the best of the best when it comes to
showcasing the power of FP: read everything! If you grok all of it, you'll be coding at a whole
new level.
5.3k Views · View Upvoters
Upvote7Downvote
Share
RecommendedAll
1. Run every code: You should run every code you write because only then you will get
the joy of coding.
2. ALWAYS try to do it yourself: Always try to solve the problem yourself before
taking help of others.
3. NEVER try to copy other’s code without understanding it: If you are stuck at
a point, you may see other people’s code for reference. But, never try to copy
anybody’s code blindly without understanding it.
4. ALWAYS clear your concepts: Before going to the next part of a programming
language, you should understand the current part very well because these part are
related to each other.
5. Practice AS MUCH AS YOU CAN: Without the practice of writing code, you can’t
be a good programmer. You should use HackerRank, CodeChef etc. for practicing new
codes.
6. ALWAYS try to understand what is happening inside the computer: Always
try to think that what is actually happening inside the computer when you write
particular line of code. This will help you to understand programming languages
better.
7. ALWAYS try the WRONG things: Always try to see what will happen if you code
the program wrongly (For example, try to find out what will happen if you include 2
main functions in your C code) (Click here to find out why we can’t use 2 main
functions in C: Suman Adhikari's answer to Why can’t C have two main functions?).
This will make you understand the working of a programming language in a better
way.
8. Ask questions: Keep asking as much questions as you can until you have understood
the topic well.
And try to learn C very well. Because, once you fully understand C, you will find it very easy
when you learn other programming languages.
Hope my answer helps you. And best of luck for your future. Happy coding :)
359 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
If you also wan to look at Best Android Apps to learn and practice programming[1]
1. HackerRank
2. LeetCode Online Judge
3. HackerEarth - Programming challenges and Developer jobs
4. Programming Competition,Programming Contest,Online Computer Programming
5. Deliver Faster through Crowdsourcing
6. Technology and India's Largest Tech Community
7. Codewars: Train your coding skills
8. CodeFights
9. Codeforces
10. Sphere Online Judge (SPOJ)
Footnotes
[1] Top 10 popular coding challenges websites 2017
535 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Meta-habit: learn to adopt different habits for different situations. With that in mind, some
techniques I've found useful for various situations:
Take a look at file sizes. The biggest files usually contain the meat of the program, or at
least a dispatcher that points to the meat of the program. main.cc is usually tiny and
useless for finding your way around.
Single-step through the program with a debugger, starting at the main dispatch loop.
You'll learn a lot about control flow.
Look for data structures, particularly ones that are passed into many functions as
parameters. Most programs have a small set of key data structures; find them and
orienting yourself to the rest becomes much easier.
Write unit tests. They're the best way to confirm that your understanding of the code is
actually how the code works.
Performance work:
Don't, unless you've built it and it's too slow for users. Have performance targets for how much
you need to improve, and stop when you hit them.
Before all else (even profiling!), build a set of benchmarks representing typical real-
world use. Don't let your performance regress unless you're very certain you're stuck
at a local maxima and there's a better global solution just around the corner..
Oftentimes you can get big initial wins by avoiding unnecessary work. Cache your
biggest computations, and lazily evaluate things that are usually not needed
Don't ignore constant factors. Sometimes an algorithm with asymptotically worse
performance will perform better in practice because it has much better cache locality.
You can identify opportunities for this in the functions that are called a lot.
General code hygiene:
Don't build speculatively. Make sure there's a customer for every feature you put in.
Control your dependencies carefully. That library you pulled in for one utility function
may have helped you save an hour implementing the utility function, but it adds many
more places where things can break - deployment, versioning, security, logging,
unexpected process deaths.
When developing for yourself or a small team, let problems accumulate and fix
them all at once (or throw out the code base and start anew). When developing for a
large team, never let problems accumulate; the code base should always be in a state
where a new developer could look at it and say "I know what this does and how to
change it." This is a consequence of the reader:writer ratio - startup code is written a
lot more than it is read and so readability matters little, but mature code is read much
more than it is written. (Switching to the latter culture when you need to develop like
the former to get users & funding & stay alive is left as an exercise for the reader.)
Hope it helps!
820 Views · View Upvoters
Upvote8Downvote
Share
RecommendedAll
Programming is one of the most valuable skills you can pick up in these modern times, whether
for career prospects or to stretch your brain and create something awesome. If you're just
getting started on your coding journey, here are ten tips and resources to set you off on the right
foot.
The direction you go in will depend in large part on why you want to learn to code in the first
place and how much time you have to devote to learning. If you want to be a professional
programmer, signing up college courses might be your best bet. (Google has a list of suggested
skills and courses for would-be software engineers.) If you want to build websites or games for
fun (and possibly profit) in your spare time, interactive tutorials might be better. Bloc has
a comparison of course options based on workload, cost, and reason you're picking up
programming. And if you're still deciding on a tech career, Switch will recommend one based on
your interests.
The Tech Skills and Courses Google Recommends for Software Engineers
Software engineering is one of the most in-demand and best paying careers, but learning
computer…
Read more
9. Choose the Right Language
There's no one "best" programming language, and once you've learned one, it's fairly easy to
pick up another, so don't get hung too up on choosing your first language. That said, some
languages are more beginner-friendly than others. The language you choose to start with might
depend, again, on your purpose. (For example, if you want to write an iOS app, you'll need to
learn Swift.) There's a case for starting with C if you're serious about programming, although
higher-level languages, like Python, are easier to jump into right away. Here's an infographic
comparing a few popular programming languages.
You've always wanted to learn how to build software yourself—or just whip up an occasional…
Read more
No matter which language or learning method you choose, you should start at the very
beginning (a very good place to start). When David Sinsky taught himself to code in eight weeks,
for example, he spent one weekend getting an introductory grasp of Python and one weekend
getting an introductory understanding of Django—going through the tutorial, deleting all of the
tutorial code, and working through the tutorial again from scratch. Start with the basics and be
patient with yourself as you progress. To take your first coding project from start to finish, break
down the project into simple steps. And if one method of learning isn't working for you (e.g.,
books), try another method before giving up.
To a lot of non-developers, learning to code seems like an impossibly daunting task. However,…
Read more
Even toddlers are learning to code these days. That's actually a great thing for all of us. Although
many of the programs designed to teach kids to code are very simplistic, many of them,
like Scratch, are suitable for all ages. It doesn't matter how old you are; even kids' animation
apps can get you started with the basics of programming (edX has a new course
on Programming in Scratch, by the way).
Read more
Free online training sites like Codecademy and other Hour of Code participants can help you
write your first computer program. Tutorials from KhanAcademy, Codecademy, The Hour of
Code is here!, and many other organizations will introduce you to the basics of programming—
all while creating a new game, site, or other project. Find the resources you need according to
the language you're learning with Bento. These are good starting points, but you'll need to take
the initiative to further or continue your learning after these introductions.
Want to learn web development and programming? Bento will start you off on the right foot by…
Read more
Online computer science courses offer a bit more of rounded educational experience compared
to online training sites focusing on one language. These courses are designed to teach you
fundamental skills over several months in college-level classes. I can't personally recommend
Harvard's CS50 (which you can take for free) enough, but there are many others you can take
(many listed on our Lifehacker U series). You can even build a college-level computer science
education with this selection of fifteen online courses.
An introduction to the intellectual enterprises of computer science and the art of programming.
Read on edx.org
When you get stuck on a problem or just need to look something up, reference books come in
very handy. There's a huge collection of over 500 free programming books posted on GitHub,
and another collection of Ebooks covering 24 programming languages.
Whether you're learning to code or are already an experienced programmer, this GitHub…
Read more
Often the best way to learn is through games. While plenty of coding tutorials have you building
simple or complex games yourself, a couple of teaching sites are literally games: Code
Combat and CodinGame are two you might have fun with.
There's no dearth of resources for learning to code these days. Add to your collection Game…
Read more
The programming community is full of people who are willing to help the next generation of
programmers. Hack.pledge() is one site that will connect you to a mentor, or you can sign up to
mentor someone else. Even just planning to teach what you've learned can help you retain the
information better.
When you reverse engineer someone else's code, testing each line to see how it works, you get a
better understanding of the big picture. Thanks to tons of open source code, you can learn just
about anything—and keep learning through the incremental-hacking cycle. Just remember to
share your code back with the community if you improve on a program.
1.1k Views · View Upvoters
Upvote13Downvote
Share
RecommendedAll
Matthew W. Christenson, 15+ years with a strong focus on Microsoft and Open Source technologies.
Answered Feb 24, 2016
Originally Answered: What is wrong with my coding skills?
It sounds to me like you're experiencing something that many developers experience... Tunnel
vision.
As a software developer, your job is not to write code, it's actually to research to figure out what
code you're supposed to write. Research is generally over 50% of our work, sometimes over 80%
depending on your role in the team.
Too many developers will only research what they need to research to complete the task at hand,
and not spend time researching general technologies or areas that are new.
You will never grow as a developer if you chose only to learn the facts that you need to learn to
solve the problem ahead of you, because there are some very important things that you'll never
think to look up.
It's the bottom one on that list that will hold you back from becoming a better software
developer. You'll never encounter a problem in your day to day work that will directly lead you
to learn something that you don't know that you don't know. You have to actively go out and
look for things that you don't know that you don't know.
After you learn one of these things, it's okay to forget it if you don't need it for your work,
because that knowledge will move into the "know that you don't know" slot and you can go look
it up when you need it.
Set aside 6 hours a week minimum to read up on new stuff. Here are some ideas for you:
The idea is to force yourself to learn about technologies that you don't need to know about, even
if you never use them, even if you forget what you read - because down the road you'll start to
notice you've got a much larger toolbox of resources in your head because you are aware of so
many things that you don't know - where previously you didn't even know that you didn't know
them!!
2.9k Views · View Upvoters · Answer requested by Theodore Teler
Upvote5Downvote
Share
RecommendedAll
Prashant Nair, Project lead with over 7 years of professional software engineering experience
Updated Apr 19, 2016
Originally Answered: How do you improve your programming skills?
There are 3 aspects in which programming skills can be improved for any programmer -
1. Efficiency - This comes mainly with practice and studying a particular language. The
more you code in a language, the faster you get because you get used to the functions,
framework, configurations, IDE etc. This happens naturally. I've often worked with
programmers who have just 1 or 2 years of work experience but code quite fast. In
hindsight, I was that sort of programmer in my early years. I thought everything is
possible and as long as it's possible I could quickly write code and make it work.
2. Pragmaticalness - This is the most important aspect of programming skill. This aspect
depends on how good your thought process is. If you have to write code for a feature,
do you just open a text editor and start coding away like a champ, or do you think and
plan. The programmer who does the latter is usually the better programmer. To
improve approach and thought process, you should learn how the masters do it. I
recommend reading a few books mainly "The Pragmatic Programmer". This book is all
about programming wisdom. Being pragmatic means you do think ahead, plan
well and identify the major flaws in your logic and refine your algorithm to a point
where you are convinced there's no major loophole in your approach. Then you simply
execute(write code). The best programmers don't worry about coding speed as much
as quality. They usually don't rework on features. Their code has only a few minor
bugs and their features last for years because they write it in a way that you can build
additional features on top if it and scale it. They write code which looks so neat
and simple that anyone can understand it easily. You won't find lengthy complicated
functions or methods that are hundreds of lines of code. Everything will be broken
down(delegated) into smaller functions such that when you read any function, you
will understand what it does in just a few lines(all details are delegated to other
functions/methods just like a manager breaks down a task and delegates it to his team
members). You won't find waste code lying commented etc in their files because good
programmers refactor early and refactor often.
3. Using best practices - Again this involves reading. Whichever language you program
in, you will find articles on best practices for that language. You should read those and
follow them after understanding the purpose of those practices i.e. without blindly
following them and being willing to break the rules when it really makes common
sense.
Without having the right thought process, you can be as fast as you want and still be an
underachieving programmer. But with the right approach, your efficiency will increase with time
while keeping quality high. If you continue on that path, you will achieve mastery.
As for what to learn, start by reading a few good programming books. Jeff Atwood, the co-
founder of stack overflow, has recommended some books that he thinks every programmer
should read:
A good programmer with a few years of experience knows that any programming language will
have the basic programming constructs such as variables, conditional statements(if-else,
switch), iterations (for, while) etc. All MVC frameworks are basically the same, only the details
are different. All OOPS languages have classes/objects/methods. So you can pick any
tool(language) and become comfortable with it in a few weeks, if your know how to use these
basic constructs very well and you write smart, neat, simple and reusable code.
545 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Tips:
Happy Coding :)
746 Views · View Upvoters
Upvote11Downvote
Share
RecommendedAll
Rudra Nil Basu, C,C++, Java. Nothing more, nothing less. Next stop - Python.
Answered Dec 16, 2015
Originally Answered: How do I increase my programming skills?
You learn by doing.
Step 1: Forget what college is doing. They are trying hard to complete the syllabus somehow.
Don't be in that hurry. Rather, try to find out what "powers" you truly get once you become great
at programming. See how programming is used in various fields like solving problems, building
apps, building games, etc. Once you understand that there is more to it than "somehow scoring
great marks in exams", you will be far better than where you were yesterday. Be inspired to get it
all started.
Step 2 : Stick with one language in the beginning. Try learning the basics of coding if you
haven't done it (properly) already, there are tons of online videos/tutorials out there. (Do not
overestimate/underestimate yourself in this point)
Step 3 : Practice. The more hours/day you spend behind typing codes and solving problems, the
better you become. As simple as that. Learn algorithms, implement them. To start with, I would
recommend to practice the problems from SPOJ ( Sphere Online Judge (SPOJ) ) sorted from
easy to hard. Also there are tons of other good websites like GeeksForGeeks ( GeeksforGeeks | A
computer science portal for geeks ) which you should keep an eye on. If interested, you can
also take part in programming competitions held on CodeChef( Programming
Competition,Programming Contest,Online Computer Programming ) and similar other
websites. (Note: There are several different ways to practice programming, and I just mentioned
one such way to do so, which works best for me). Remember - The more you practice, the better
you become. As simple as that.
Step 4: Hang out with other (great) coders. Maybe your college friends, seniors or just on any
online forums. The more you hang out with them, the more you learn new ways of doing things.
See how they write codes. How they approach to solve a particular problem. You will learn a lot
here.
Step 5: "Your training is nothing. The will is everything. If you make yourself more than just a
man, if you devote yourself to an ideal, you become something else entirely. Are you ready to
begin?"
- Ra's al Ghul
Batman Begins
2k Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
First glance at the question and the only thing that caught my eyes were "7-8 months". That is a
lot of time. By doing competitive programming, you will get the confidence to approach unseen
problems which is a major asset during interviews. By simply concentrating on data structures
(DS) and algorithms, you will miss out on the ability to churn out quick and correct code. Most
of the time, you will not be allowed to use the standard template library (STL) during interviews
(although if the focus of the question is an algorithmic concept which is aided by a DS, then you
might be allowed to use a STL DS).
There's one thing to note: Improving your coding skills and preparing to get placed are
not the same.
Preparing to get placed involves a lot more than proper knowledge of algorithms & DS and the
ability to churn out correct code quickly. It involves proper communication of what you know,
the ability to explain your code properly and not be confused by tricky trap questions posed by
interviewers. In my opinion, a lot of interviewees fail to pay attention to these aspects, which
adversely affects their interview performance.
Anyhow, coming back to point - to get good at competitive programming - get started
with topcoder , attend SRMs to see how you fare against a clock and use the practice rooms to
strengthen your weak areas. Then head over to Jan's LightOJ to practice problems topic wise.
Getting better at competitive programming involves practice, smart practice. There are no
shortcuts.
However, if your aim is to not sweat it, get better at programming only to get placed (which is a
bad idea, but I don't judge you) Page on geeksforgeeks.org is for you. Head over to LeetCode to
practice interview questions. Leetcode also has an active discussion forum.
LPT: This is what I used to get familiar with interview questions. Take a problem. Read through
the concept and the solution (don't bother wasting time and coming up with the solution, find
it). Make sure you understand it properly. Head over to Ideone.com and paste the solution, clear
the function block. Try to recreate it. Create edge cases and see if your code handles it. This will
help you to write tight code and also help you in writing test cases which is also an integral
component of interviews. On the downside of this being a time consuming process (but you
having 7-8 months, shouldn't be worried about it), it is highly effective.
RecommendedAll
Coming to the question again, could you please share your current situation so that we can
provide tips tailored to your needs. Your question is just in general - how to improve your
programming skills. There are a lot yet general answers. Will jolt them down for you in points:
1) Practice more - do hobby projects, start a project and COMPLETE it. Good or bad, finish it.
Get it reviewed if possible. Learn from it.
2)Go to github and check for projects that you are interested in, read and learn from the code.
Yes, read good code and learn what all tricks are used there and understand and try implement
the same
3)Improve your understanding regarding computers and its functioning, dont just learn a
programming language. Learn more of computers - its functioning, networking etc. This may
not improve your programming but will defenitely help you grow.
4)Understand various data structures and there uses. Give a try on algorithmic problem solving.
Implement them in a language you choose.
5)Interact with people with similar interests. Share ideas and get feedbacks.
6)Participate in hackathons and contests if possible. It will be good to have a team for this. Find
people of similar interest.
...also, keep coding more. Push out projects. To improve on anything, it is just practice. Practice
good, take tipcs.
These are just minor stuff with not much detail. Give specifics if you require specifics. Also, as
mentioned earlier, please go through all the similar questions. This is an essential part of
learning to program, not asking questions already asked. Rather, look at the provided solutions
and if it does not suit you, then put out question which do justice to your situation and say why
something is not working for you. People will help you more then.
382 Views · View Upvoters · Answer requested by Aastha Sharma
Upvote4Downvote
Share
RecommendedAll
Don't get worried looking at your rank in the beginning. Recently I read a post somewhere, a top
ranked guy wrote how he managed to move higher in the ranks. He started at nothing, failed a
lot of times, almost believed programming isn't for him. But after a coarse of time, after solving
a bunch of problems, things became easier for him. Because after a while, most problems can be
related to some other problem you solved somewhere a long time ago. So it's just a repetition in
a new flavor.
Start studying on the basics of algorithm design and learning common data structures like
bubble sort and quick sort. Learn important problem solutions like dining philosophers problem
and traveling salesman problem. You'll be good to go.
Chandan Boruah
Who is that top ranked guy, could you share that post?
Jianmin Chen, worked at Mplighting
Updated Sep 26
I like to write down what I have done last 12 months to help me improve my programming skills.
1. Play over 20 hackerrank contest, and win 10 medals, include one gold. I documented
the journey First Gold Medal on Hackerrank.
2. Ask over 30 algorithm questions on User Jianmin Chen, and also answer a few of
questions.
3. Write coding blogs to document my practice of Leetcode. I just learn to read the
statistics and respect the result. Do one thing a time, Julia's coding blog - Practice
makes perfect
4. Code review my own code 8 years ago, it was tough moment to read my own code and
see so many issues to work on. Julia's coding blog - Practice makes perfect
5. Try various activities, like mock interviews, I wrote down my mock interview and
tracked my progress. Julia's coding blog - Practice makes perfect
6. Have a good sportsmanship. Learn to share your progress no matter how small it is,
and also learn from some professional sports players. I learn a lot of WTA tennis
players and specially through the practice video, interviews. Get good understanding
of mental toughness and help yourself to stay physical health and mental strong. How
to overcome fear is my favorite research topic this May. Sports research - How To
Overcome The Fear Of Losing In Tennis
I think that the smart programmer spends less time to write code, more time to get connected
best talent in the world. Just practice daily, read code, write code, share your idea. Enjoy the
journey to one of the best competitive programmers in the world.
2k Views · View Upvoters
Upvote17Downvote
Share
RecommendedAll
As you mentioned, you have basic programming skills in C and Java, hence now the next logical
step is to start learning and implementing algorithms in those programming languages. For
learning algorithms I suggest the book titled "Introduction to Algorithms, 3rd edition"
which is Co-author'ed by Thomas Cormen.
Competitive programming in conjunction with algorithm learning & Data Structures is very
helpful. So instead of learning algorithm or competitive programming. Do both. Doing this will
make you more proficient in understanding, applying and modifying algorithms.
Most recommended competitive programming websites are CodeChef.comand TopCoder.com.
Try to get a part of any open source project, preferably the one which is having an active
development going on. Find open source projects that interests you, and c
convince the members that you can become a part of the team, this can be achieved by learning
the programming, finding bugs and coding patches to fix them or a simple Skype interview.
Becoming a part of open source project helps you increase your skills drastically. It also helps
you learn how to collaborate among team mate.
Also, you mentioned you have vacation coming ahead, you can use the vacation to grab an
internship.
Internships can add an extra value to your resume and gain you a lot of knowledge. Assuming
you're from India, some sites to find suitable internships
are www.internshala.com and www.letsintern.com
You can also Complete some free online courses in different branches of algorithm, data
structures and programming during your vacation. There are many website that provide you
with free courses. Complete 8-10 courses in 25 days. And you'll be a highly evolved coder. My
favourite website in this regard is www.coursera.org
Now to divide your time, let us look at a dummy schedule which you and I might follow when we
have vacations going on. (assuming the desire to become better is intense).
Start your day with listening to a TED talk in technology, you could either listen to
the full talk or set your time preference and area of interest and let TED decide which
talk is best for you..
Login to your computer, check out forums, you should be subscribed to a good
number of programming and development related forums. One of them
is www.stackoverflow.com. Check out what questions are emerging in your area of
interest, and learn new things everyday.
Read a book based on algorithms, maybe a chapter everyday? And perform the given
exercise when done.
Take a good nap. Listen to some Pink Floyd.
Prepare for aptitude test, practice for about 1-2 hours daily. Some good websites for
this is www.indiabix.com and www.m4math.com
Log on to any competitive site and code a program. Some programs take at least 3
days. For example, www.CodeChef.com
At the end of the day, you can read about a new computer science concept. Hence
you'll improve everyday, and regular practice for a month should make you a great
programmer. Or at least get yu going. I'd recommend geeksforgeeks.com for this.
The important thing to understand is that one cannot nail the interviews by mugging up all the
important questions of data structures and algorithms. One needs to practice
and implement the concepts of data structures in a programming language. And the best way
is to start competitive programming and participate in the contests conducted by them. But how
should one get along with competitive programming?
Recently I have discovered the Data Structures and Algorithms Certification by Codechef. The
preparation phase of the certification is quite good. It starts from the beginner level, mentioning
articles on where to study and then contains some practice problems which would get one
acquainted with competitive programming. So it is a good site to begin competitive
programming.Apart from this, one should participate in Long Contests of codechef. And then
after the competition is over, one should try to solve the remaining unsolved problems with the
help of editorials.
For being able to pass the coding round of any company, one needs to solve problems in
a specific time. So the speed at which you solve a problem also matters. This could be
attained by participating in Short Contests of codechef.
Apart from this, one should know about the libraries of at least one programming language,
which would aid in the implementation of algorithms and data structures. The most
recommended is Standard Template Library (STL) of C++, however one may go for
libraries of other languages as well.
And for updating ourselves with what kind of questions are asked in interviews, we must go
through geeksforgeeks website. However, as earlier mentioned , we must not mug up the
solutions and always try to implement them.
Prepare | CodeChef
283 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Mayank Jaswal, B.Tech Information Technology, Northern India Engineering College, New Delhi
(2017)
Answered Mar 25, 2017
Originally Answered: How can I improve my computer programming skills?
Improving programming skills require constant practice and patience. It is not like one can
become master of programming in just one day.
Coding is easier said than done, and there is a huge difference between good code and
bad code, but how do you know? Until you have seen a good code and know why a
particular code is good, you can not understand the difference. This is where books
come to help, more often than not authors are great programmers themselves.They
offer their experience in the form of a book.
Writing small programs lets you write more programs in the same amount of time,
this will improve some of your programming skills much more rapidly.
Modify existing programs written by other people. Reading code without having
previous knowledge of it is a valuable skill you can't debug without it and you don't get
much practice with it when you're writing programs from scratch by yourself. If you
reflect on what you've found hard to understand, it can also help you learn how to
write maintainable code.
Contributing on the Open source code, especially from Apache, Google and some other
projects helps you to listen the discussions between good programmers and also helps
in understanding the problem and their approach, solution and view which
automatically develops good programming habits in you.
Most of the good programmers are really good in data structures, algorithms, and
basics. By learning these things, you take better advantage of what is available. Since
data structure is a key piece of any program, solid knowledge of them helps during
problem-solving.
Look code of open source projects, your fellow programmers code, your existing
proprietary code, code from Java SDK and try to understand how they work, try to see
what they are doing and why they are doing. Find patterns, develop navigation skill,
initially you will find it boring and difficult, but with time you will develop a good code
sense.
Participating in StackOverflow and answering others queries, commenting on blogs
and forums is a nice little way to revise knowledge and same time correct your
misconception.
Apart from the natural talent of programming and problem solving, it requires a lot of hard
work, constant learning, and perseverance to become a better programmer.
261 Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
We all learn differently. Some learn best by reading a book. Some prefer hands-on experience, or
need the structure provided by a formal course. Fortunately, there are plenty of free or low-cost
learning resources only a quick search away so you don’t have to waste your time on methods
that don’t suit you. Whether you. Here are a few great sites to get you started.
Code School
Udacity
Safari Books Online
Lynda.com
Pluralsight
Coursera
Confreaks.TV
Free programming books
2. Learn from others
One of the fastest ways to improve your skillset is to leverage the knowledge and experience of
people who entered the field before you. While a formal mentor is a great asset, it’s not required.
Seek out expert help from sources like your team lead, members of your local user group,
or Stack Overflow. Show your code and ask for feedback. And don’t let fear of criticism or feeling
like you’re bothering people prevent you from tapping into one of the most powerful resources
available for leveling up your skillset. You’ll be surprised at how eager to help many people are
to help. It’s flattering to be asked to share expertise.
If you’ve been stuck on a problem for more than 15 minutes, ask for help! Turn around and ask a
coworker how they would solve the problem, or describe your issue in detail on Stack Overflow.
Regardless of whom you ask, the very act of describing your problem in detail puts you on the
path toward the solution. Most problems are not unprecedented, and someone will be glad to
share their experience or to team up on the issue.
The surefire way to improve? Practice and challenging yourself. This means you should always
be working on a coding project. Even if you have a full-time programming job, the work may not
be challenging enough to build your skills—so find something that will. Some of the best
developers always have a side project to work on. Not having an idea is not an excuse. Find an
open source project to contribute to regularly, build web apps for charity, or tackle that silly app
idea your buddy keeps pitching to you.
Most programmers rely heavily on frameworks such as Spring, Rails, or Angular to get the job
done. While these frameworks promote productivity, they are also a treasure trove of examples
and inspiration you can apply to your own solutions. Check out their source code and study it. At
first you may feel lost, but over time you will learn to navigate large codebases, identify design
patterns, and quickly understand code.
As the old saying goes, the best way to learn is by teaching. When you learn something new,
don’t keep it to yourself. Share your new skill or finding in a blog post, record a screencast of
yourself building a new feature, package your code into a library and put it on GitHub, or
present new discoveries at a local meetup. Not only does sharing reinforce what you learn, but it
demonstrates your skills to future employers and clients. It makes you feel good, too!
No one masters programming overnight. It takes consistent, deliberate practice. Take a few
minutes to slow down, and make one small improvement every day. It could be learning a new
language feature, reading a page out of the manual, or changing your editor configuration to add
a shortcut for a common task. When compounded over time, these small, daily improvements
add up to major breakthroughs.
8. Explore
Take a timeou...
(more)
Upvote8Downvote
Share
RecommendedAll
Practice
Learn about ReFactoring.
Spend a lot of time ReFactoring and improving programs, even if they work fine.
Design
Learn about SoftwareDesignPatterns!
CodeReview
Find some good mentors and let them review your code, and try to do
some PairProgramming with them.
Find some peers with whom you can review your code. People of similar skill levels
can teach each other a lot. And this gets around problems with sharing your "bad
code" with a senior person who might give you a harsher critique than you want (not
to mention a bad performance review.
Learn from good programmers
ReadGreatPrograms.
Adapt some good code (I learned a lot about C idioms while adapting a Btree Index
library in order to add compound key index feature).
Team with good programmers. Sit at their knees and learn. Emulate their habits.
Do not insist they adopt your practices/tools/habits because you think you know a
better/faster/cheaper way.
Broaden your horizon
Learn multiple programming languages. Each language you learn will give you ideas
about how to do things better in other languages. (The worst programmers I know are
the ones who think that language X is the only one they need to know.)
See LearningProgrammingLanguages for related tips.
Learn different kinds of programming languages: procedural,
functional, ObjectOriented, etc. See GroundBreakingLanguages.
Learn multiple operating systems. Learn to write portable code.
Read
Read books about code quality, like CodeComplete. It can save you a lot of time.
Buy the book ThePragmaticProgrammer and read it, learn it, live it.
Generally, read GreatSoftwareBooks
Read books about other subjects. Philosophy, history, art... anything. Become a
broader person. It doesn't directly affect your programming as such, but it widens the
mind, which has to be a good thing.
You can view some more advice here.
762 Views · View Upvoters
Upvote9Downvote
Share
RecommendedAll
Good Luck :)
387 Views · View Upvoters
Upvote10Downvote
Share
RecommendedAll
Frank Harvey, chipping away at the enormous list of things I don't yet know
Answered Apr 12, 2013
Originally Answered: How can I significantly improve my programming skills in 4 months?
I won't give you any specifics, but I will give some general guidelines that I have developed and
think have worked for me.
1. Focus (but not too closely) on a technology. I realized I needed to find a balance
between trying to do C++, Java, C#, Python, JavaScript, HTML, and CSS all at the same time on
one hand, and memorizing the minutiae of the PyGame API on the other hand. You want to
develop a large toolbox, but I feel like having a strong foundation in at least one of those tools if
crucial. You'll be much better at one language in 4 months than you will be at four languages in
that same time period.
2. Learn, but make sure to do. This hit me one day when I was on what must have been my
tenth different tutorial after several months of studying. I spent a few minutes on it until I
realized something crucial -- I knew all this stuff already.
Now I want to be careful here. My knowledge of programming is probably on the business end
of .01% of the entire domain of what's possible to know. But I was rereading tutorials on syntax
incessantly, reviewing how to use print statements and while loops when I already knew how to
do all that. And it struck me that I could spend my whole life reading how to program and I'd
end up being very well read, without anything to show for it.
I realized I had to build. I had to find something that I was reasonably interested in and MAKE
something. That one change on my part, actually applying what knowledge I've acquired --
while acknowledging that learning by reading is still a crucial part of it -- has accelerated my
development as a programmer immensely. I'm solving problems, and then when I come across
the same problem later on down the line, IT'S ALREADY SOLVED. Ctrl+C. Ctrl+V.
Programming is a lovely thing -- make sure you're programming.
3. Finally, whatever you do, don't get burned out. You have 4 months. That's ~120 days,
or 2880 hours. You cannot use all those for programming. You're going to want to, god knows I
fall into that trap sometimes. Luckily I'm married and I have someone who won't let me. If
you're not as lucky as I am, you still need to set limits and don't try to spend 12 hours a day
programming. Because I'll tell you something, I have never, EVER been more productive in the
second 6 hours than I was in the first 6. We get tired, and that's when it's time to stand up for a
second, maybe go outside, or just get some rest.
1.6k Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
Read good code and learn from it. This is easier than ever with all the public repositories
available.
Constantly read books/forums/websites on coding (even if you only get one good tip, then it's
worth it), and constantly wrap your mind around new algorithms. When you are learning any
new algorithm, practice thinking of applications for said algorithm, as well as ways to improve it,
and practice critiquing/criticizing/assessing the algorithm. If you have to discuss the algorithm
online or with friends, then do so. Spend the necessary time on it. Code up all the applications
you think of. There are many books filled with algorithms, get them, and master them, rather
than using them as a reference.
Learn how to think and how to see patterns where others don't. Learn how to optimize.
Eventually, you'll be writing code, and instead of thinking of the next line you're writing, you'll
start searching for patterns in what you're writing to see if it can be automated away (that is, you
switch to writing a script that can write the code you were writing, etc), or if there is some
shortcut you can implement in your IDE to make writing those blocks of code quicker, etc.
Study code you've written constantly and look for patterns in what you write. Not patterns like
the gang of four, but patterns like your code always takes on the same general overall form.
These patterns represent a combination of your habits and what's typically requested of you. Try
to tease the two things apart, and see if you can get any insight into ways you can improve your
habits. Also, once you are happy with the patterns you see (asking another's opinion can help),
then look for ways to automate the writing of them through shortcuts in the IDE that you use.
Things that can also be delegated to the IDE are control blocks that you write often (Ctrl+I+F
produces an if block that you can tab through to fill in, for example), or entire sets of files with
code templates contained within (it may eventually get to the point that you have to write a
quick script). But either way, delegating to a script or to an IDE saves you time, and minimizes
the number of opportunities you have to introduce errors/bugs with new code that you write.
Write code, write code, write code. Write constantly, and optimize and look for ways to improve
everything.
When you write, first practice getting the code written down as quickly as possible, to help speed
up the rate at which you can crank out working code (even if the code isn't that good), then while
maintaining that speed, look for ways to push out code that's elegant, compact, and readable.
The idea is to not waste time getting stuck in a rut trying to figure out what to write, and then
once past that to bring that initial code you write to a higher level of quality. Learn a new
technique (like writing for testability), then integrate. Don't ever integrate anything blindly,
question everything if you have to, then find the answers to those questions before continuing.
Learn to "load up" and get on your mind all facets of the problem you are trying to solve, and
then to give yourself time to let your mind work it all out. If you could take a quick nap, then
that would be even better. It's like distracting yourself with something else between formulating
what you want to write a paper about, and actually writing the paper. It will help your mind
condense and work through countless details while you work on something else. This requires
time, so you need to be able to give yourself time to do these things.
You have to immerse yourself in this process (shut out the world, and focus in on it for extended
periods of time) for it to really beat good engineering abilities into you.
But it will pay off, because eventually you'll have learned enough that almost every problem
thrown at you will result in a solution instantly coming to mind, and not only will you have the
solution, you'll know exactly how good the solution is, how much work it's going to take to
implement, exactly where to go to apply the changes, and you'll write the minimum amount of
code necessary. Also, rather than getting foggy and confused because too many things are going
on in your mind at once, you'll be crystal clear, and you'll just get on with it.
There are other things you can do to ease the process (like skimming the table of contents and
chapter headings of books before you dive into them, and using brainwave entrainment audio to
keep your mind in sync while you study and while you work) and you can search around or ask
around for those tips.
9.8k Views · View Upvoters
Upvote34Downvote
Share
RecommendedAll
Bruno Skvorc, SitePoint's PHP Managing Editor
Answered Apr 14, 2013
Originally Answered: How can I significantly improve my programming skills in 4 months?
Take 8 hours out of every day for furthering this purpose. I don't recommend doing more than
that unless you feel overly enthusiastic because it might cause a burnout.
1 hour every day to read a good programming book. Don't read tutorials, don't read guides. Here
are some essentials: "Godel, Escher, Bach", "Code Complete (2nd edition)", "Design Patterns",
"Introduction to Algorithms", "The pragmatic programmer", "Javascript - The Good Parts".
Anything from this list, really: resources - What is the single most influential book every
programmer should read? - Stack Overflow
1 hour every day to read through the content posted by influential companies and people in the
field which interests you. I'm into web programming, and I follow some web wizards and never
miss out on anything they post. Use this hour also to build a social presence in the communities
related to your interests. Ask some questions, answers others, write a blog, voice your opinion,
join the community. Google Plus is a great place to do that, feel free to connect with me and I'll
share some contacts with you: Bruno Škvorc - Google+
Spend the remaining 6 hours per day on coding. Do not go through tutorials and sample apps -
think of a problem that needs solving, something you're not happy with - and solve it. You'll run
into walls, you'll want to give up, you'll curse and cry and grow frustrated sometimes, but you'll
also have moments of epiphany and pure joy when you figure something out on your own.
The important thing is to avoid tutorials, newbie guides, sample apps and similar stuff. If you
really want to drastically improve, you need to learn from your own mistakes, not mediocre
samples.
12.5k Views · View Upvoters
Upvote52Downvote
Share
RecommendedAll
1. As you are in first year, I guess the language in your syllabus will be C or C++. So, you should
try to adapt that language first. Practice the basic concepts first.
2. The problem you are facing right now is of Logical Thinking or Algorithmic Thinking. So, I
will suggest you to start from very basic program and start writing their flowcharts or rough
algorithm on paper. When you are confident that your logic will work, implement that on
machine.
3. Seek help from friends and teachers. I cant help you much but they can as they are physically
present with you.
323 Views · View Upvoters · Answer requested by Nitin Khare
Upvote2Downvote
Share
RecommendedAll
Giacomo Sorbi, Self-taught programmer, passionate enough to become as good as it takes to answer
a question or two
Updated Jun 1, 2015
Originally Answered: How do I improve my general programming skills?
Come join us on CodeWars: your goal should be to do at least a kata (=problem) each day.
I started a few months ago and I was rather poor (having to Google even simple syntax in some
languages T_T), but then it helped me grow more skilled and learn a bunch of different
tricks and neat ideas to solve problem after problem.
Oh, and problems are categorized both by difficulty and argument, that makes it much
easier to find your best degree of challenge, neither frustrating or too easy.
And once you solve a problem, you get to read other coders' solutions, which makes an
excellent learning combo (I mean forcing yourself to solve X, then read other solutions to X).
Other quorans reached me there and among them, Russell is surely worth a mention as the best
achiever I met until now: he learnt a great deal, is constantly improving his own skills and I
must admit reading some of his smartest solutions is now a pleasure. Even or maybe
particularly when they are best than mine ;)
Final note: if I (an "old" self-taught that started when 35 yo with no formal education, more
about my path here) did it to the top 100, surely so can you :)
Carlos Matias La Borde
Oooh a site with problems that are actually fun to solve.
1 more comments from Brandon Irizarry
- As Vijay Sarathy said, "Practice and enjoy practicing." Which I take to mean practice by
working on code that interests you.
- As Niall Peterson says, "Fail. Then succeed. Then Fail again. Then succeed. And continue this
circle. If you don't fail, then you know you need to do something harder." See
also: http://www.quora.com/quotesilike... and consider starting a journal like this, even if you'd
rather not make it public: http://www.quora.com/Marcus-Gedu...
- Find an open-source project (in whatever language you're learning) and read the code, working
to understand it. Find one that has a reputation for being well-written and one that has a bad
reputation. Continually read other people's code: the good, the bad and the ugly.
- Spend at least a little time studying all the major paradigms of programming, e.g. both
Functional and Object Oriented, even if you're not planning to use a Functional language. I
HIGHLY recommend working through "The Little Schemer." If you're like most programmers,
you'll enjoy the experience and find it enlightening. http://www.amazon.com/Little-Sch...
- Learn about Design Patterns, Common Algoritms, Data Structures, Refactoring, Unit Testing
and Agile, whether you agree with these practices, plan to use them or not.
- Think about the importance of NAMING things. “There are only two hard things in Computer
Science: cache invalidation and naming things” -- Phil Karlton. Understand that programming is
about both "making it work" and communicating to humans. Take that second part very, very
seriously and always worry over your identifier names and the other ways your code may be
clear or baffling.
Anecdote: a co-worker of mine wrote code that extracted some data from an XML file with a
field called "description." He stored the data in a variable called "desc." That's not very
confusing, but it's just confusing enough that every time I read his code, I had a momentary
confusion, in which I thought "What does desc mean?" Like I say, this was momentary, but code
is already hard to understand. Don't throw roadblocks into it that make it harder to understand.
- Learn to step in and step back, step in and step back. Programming is about the tiny details,
like individual functions and, also, the large architectural concerns. So are many other
disciplines, but in most cases, different people attend to the small than the large. For instance,
on a film set, most directors don't attend to intricacies of the sound-recording equipment;
meanwhile, the sound guys don't worry about plot of the entire movie.
Many programmers must do both, and it's tricky to change mental modes. So give yourself lots
of practice stepping in and stepping back.
- If you're looking at the above list (which could easily be extended) and feeling daunted, you
need to work on THAT. If your expectation is to "get it all" in a year, you'll be disappointed.
Programmers must be lifelong students. They never graduate, they shouldn't expect to, and they
should enjoy never graduating. If you're the type who is unhappy unless you reach the finish
line, this isn't a good career for you.
UPDATE: this is a field in which mentors really help. If you can find a programmer who is better
than you (which should be easy, no matter what your skill level) who is willing to look at your
code critically and coach you, you'll grow by leaps and bounds.
19.2k Views · View Upvoters
Upvote32Downvote
Share
RecommendedAll
Ivan Marcin, Software engineer at Lookout Mobile Security, photographer, tea and coffee lover
Updated May 21, 2012
Originally Answered: What is the single most effective thing you can do to improve your programming skills?
The #1 key thing, is to code more and more.
Code alone isn't enough so here are some thoughts:
1. Keep coding. Make tools, write demos, try out new libraries. Coding is like a muscle
and needs to be exercised. Even if you stop coding for some time it takes time to get
back on track. Just keep coding.
2. Read code. Go back and read your own code, read other people's code. You'll be
surprised to see how different your old code was, and how much it could be improved.
Read other people's code but don't assume all code or massive amounts of code are
good coding practices. If you have access to other code repositories from your work by
all means read it, you'll gain lots of insight. Github makes this super easy as well.
3. Do code reviews and check out some code guidelines. Google publishes their code
style guidelines and they're quite good. Code reviews don't have to be formal and can
be for your own entertainment & knowledge. Read, understand, and try to think how
to improve the code. You'll learn some really clever techniques from other peoples
code, and as consequence, identify inefficient code in other places. Don't assume code
is good because it is extensive, because it comes from a big place like google or
microsoft, or because it belong to some famous project.
4. Know your tools like the back of your hand. You don't need to know 25 editors, the
newest IDE, or all vim and emacs bindings. Whatever is that you use, be comfortable
enough so it's not a distraction.
5. Step out and learn something else. Check out haskell or clojure, do some SQL or
NoSQL. Check some other scripting language. Just keeps things fresh in your mind.
6. Nail the basics. Read about what makes things work in the language you use the
most and how things work behind the scenes. Do you know what happens with
memory generations in your garbage collector? Ever stepped through code generated
by your compiler? There's plenty of articles of this kind online.
7. Read about programming concepts rather than languages or syntax. For
example, read about Design Patterns. Heads First Design Patterns is an awesome book
on this topic. There are others like Clean Code, Code Gems, Beautiful Code,
Refactoring to Patterns, Coders at Work.
8. Learn some heavy stuff debugging. Find out how to debug things after
deployment, try to trace back a crash from a crash dump.
17.2k Views · View Upvoters
Upvote122Downvote
Share
RecommendedAll
Anonymous
Answered Dec 26, 2013
Originally Answered: How can I quickly improve my programming skills?
There is a lot of good advice on this page. But here is a recounting of my experience, which, I
hope, will have something to add to all this.
I too, am an engineer at a well known company and was pretty much in your position few years
back. The big difference was that I did not know that I was bad at programming. Let me be clear,
I was great at problem-solving, math, algorithms - even coding (in some sense) but I lacked a
certain skill that I did not know at the time.
Few new people joined my team. I did not know at the time but they were top notch
programmers. One of them reviewed my code and made comments that I wasn't used to
hearing. They were regarding redundancy in code. I had a great reputation on the team and so
being publicly criticized about my code was not something that was easy for me to take. I
remember clenching my fist, biting and taking deep breathes as I was typing my responses to his
comments. He kept saying something along the lines of "...this is not maintainable..." and I kept
saying things that amounted to "This is *my* code. Only I'm going to use this and it is throw
away code anyway." I believe that the problem was with the word "maintainable" - when I hear
that, I picture some vendor hired 5 years after I've left the company to make some changes to the
code. I obviously did not care about this faceless person. But that code review changed how I
thought about maintainability. What it really means is "change-ability" - the ability to change
what your program does. And this doesn't have to be by the poor vendor many years later - it
could be you - the next week. This made more sense to me - I should be able to get my code
dance to my tune - make it so beautiful that I should be able to very easily build on it.
Unlike in movies, in real life, such realizations take time to materialize and reflect in your
actions. So, it took me many months to internalize this concept. Along the way, I completely
changed my style of programming. I got much better - but then something else happened.
Few months later, a very senior guy (someone I respect a lot) happened to look at a small piece
of code that I wrote. As we were chatting about something else in the corridor, he mentioned
that he did not understand my code. I chuckled, thinking to myself how much smarter I was
than this smart guy that I looked up to. Very soon, I was to realize how wrong I was. He sat at
my desk, and began to dissect the code with me at the keyboard. He kept asking "what is this
code *really* doing?" and I kept thinking "I conceived of this to solve a problem I had and you
really thing I don't know what this code is doing?". Surprise, surprise, I was wrong again. When
it was boiled down to its essence, the code was simply performing a join of two streams of data.
This is something that I had not realized because of all the details. Then, we together, rewrote
the code. It is the single most educational experience that I have had in my working life. The
whole thing lasted for less than an hour. I learned a ton during that hour. The most important of
which was that even great programmers don't write great code the first time around. It is an
iterative process. At some point, I stopped to ask him something like "Do you think, it would be
better to implement it this way or that?" and I was expecting him to dazzle me with his deep
wisdom. Instead, he just said "I don't know yet, let's do it one way and see where it leads us". So,
that's what we did. We wrote the small function a certain way, looked at it carefully, removed
pieces until there was nothing more to remove and moved things around until we got it right.
And the result was beautiful.
As in the case of most things - I only have been able to see the full import of that experience in
hindsight. I slowly changed my style of coding. And more importantly, the attitude towards
code. (I like to think of myself as more a "researcher" than an "engineer" - so, really changing
my attitude towards coding and caring about the little things was a big deal for me.) Because of
the newly acquired ninja coding skills, I was able to accomplish a lot in the following months.
Few months back, I made a big career switch to a much more challenging place and I have to
credit this success to the skills that I picked up.
I'd hate to summarize and give you a pithy idea to take away. But if there is one thing that I'd
like the reader to take away from this story - it is that learning to code well is a long and slow
process. It is something that you have to develop over the years in a very deliberate fashion.
There may be other ways of doing it but this is the only one that I have seen working.
15.5k Views · View Upvoters
Upvote115Downvote
Share
RecommendedAll
Start writing programs. Build your own blog in PHP, build a JavaScript plugin, get a
feel for how these things work, so you’ll have the confidence. Remember Improving
skills usually enhances productivity.
Modify existing programs written by other people. this lets you work on many more
big programs than you would have time to write yourself from scratch, which helps a
lot with those skills that only apply to large programs.
Find some good mentors and let them review your code, and try to do some pair-
programming with them. This will help you to learn their approach towards
programming and will help you to understand your shortcomings.
Find some peers with whom you can review your code. People of similar skill levels
can teach each other a lot.
Broaden your horizon by Learn multiple programming languages. Each language you
learn will give you ideas about how to do things better in other languages. Read books
about code quality, like code complete, The Pragmatic Programmer.
Get into the habit of understanding the problem domain. Try to create a mind-map for
the problem. Once your understand the logic behind the code, you will be able to write
it. You can refer to Raj Bapna’s book for understanding Mind-maps.
Participate in Various Online Coding Communities. You will gain quality knowledge
on these platforms.
Here are links to top communities:
Reddit: https://www.reddit.com/r/program...
Github: https://github.com/
Geeks For Geeks: http://www.geeksforgeeks.org/
Codechef: https://www.codechef.com/
Project Euler: https://projecteuler.net/
CodeAcademy: https://www.codecademy.com/
CodeMonk: https://www.hackerearth.com/prac...
Practicing data structure, Algorithms, and Design related problems. When you try to
solve a particular quiz with your programming you end up with a solution. It must
execute faster, use less memory and still be accurate.
Whenever you face a particular problem, You can share them on dedicated
communities.This will help you get answers to your problems quickly without wasting
a lot of your time and effort.
StackOverflow: https://stackoverflow.com
This is the biggest community for asking programming or computer science related
questions.
You can also read Daniel Coyle's The Little Book of Talent, this will help you to
nourish and improve skills.
142 Views · View Upvoters · Not for Reproduction · Answer requested by Rohini Ganorkar
Upvote3Downvote
Share
RecommendedAll
Ernesto Bascón, C++ programmer
Answered Dec 23, 2015
Originally Answered: What are the best ways to improve your coding skills?
Coding, just coding.
You can read a lot of programming languages, you can buy some books related to the
programming language you are learning, you can read blogs related to programming language,
but the only way you will be good at coding, is getting your hands dirty with it:
* Find a little real life problem YOU have and solve it through your program (something that
computes your savings/expenses, etc).
* You can find an open source and start contributing it (translating, fixing bugs, then adding
new small features, etc.)
* Create some cool program (try to implement a game, for example) and so on.
While coding, your coding skills will improve; coding will show you some barriers you will need
to bypass and you will find new problems you will want to solve.
Just do it
3.2k Views · View Upvoters
Upvote33Downvote
Share
RecommendedAll
HackerRank
Programming Competition,Programming Contest,Online Computer Programming
Stack Overflow
www.w3schools.com
855 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Anonymous
Answered Sep 23
Originally Answered: How can I improve my programming skills?
First of all you need to Select your best programming language , in which you have interest while
executing it , after that you grow up with it. For improve you skill into it i suggest you watch
Youtube videos , Second if possible Purchase Books of it Like as follows :-
You Can Also Watch Oxford University Programming Language Course videos , they are good
for understand the actually concepts .
209 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
1. Start from learning basic coding principles and get your base knowledge right,
be it in any language, here language does not matter.
2. Learn to write down codes on a paper. Writing codes on a paper helps you to be
precise in indentations and punctuations. And then run that code on an IDE and see
where you missed.
3. Be consistent - Consistency helps you to learn something subconsciously that you
didn't aim to learn at the first place.
4. Read code! Read as many code as possible, it also deals with learning through the
subconscious mind!
5. Set targets - Don’t try to learn all at once just because you are going good. Set target
on how much you have to learn and strictly follow it.
6. After all the basic concepts, learn Data Structure and Algorithms! You must
have heard it a lot of times and it’s true! Data Structure and Algorithms are the
backbone in the Software Industry.
7. After getting a grip on the above things, start doing competitive
programming! There are multiple websites for that, the most famous being :
a. HackerRank
b. | Deliver Faster Through Crowdsourcing
c. HackerEarth - Programming challenges and Developer jobs
8. Practice! Practice! Practice!
Kindly Upvote if you found it a useful read!
Keep learning!
94 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
Anonymous
Answered Feb 25, 2016
Rising alongside the relatively new technology of Big Data is the new job title data scientist.
While not tied exclusively to Big Data projects, the data scientist role does complement them
because of the increased breadth and depth of data being examined, as compared to traditional
roles....You Can Visit This Link-:Data Science Courses from Intellipaat A data scientist
represents an evolution from the business or data analyst role. The formal training is similar,
with a solid foundation typically in computer science and applications, modeling, statistics,
analytics and math
. What sets the data scientist apart is strong business acumen, coupled with the ability to
communicate findings to both business and IT leaders in a way that can influence how an
organization approaches a business challenge. Good data scientists will not just address
business problems, they will pick the right problems that have the most value to the
organization.
The data scientist role has been described as “part analyst, part artist .“A data scientist is
somebody who is inquisitive, who can stare at data and spot trends. It's almost like a
Renaissance individual who really wants to learn and bring change to an organization."
Whereas a traditional data analyst may look only at data from a single source – a CRM system,
for example – a data scientist will most likely explore and examine data from multiple disparate
sources. The data scientist will sift through all incoming data with the goal of discovering a
previously hidden insight, which in turn can provide a competitive advantage or address a
pressing business problem. A data scientist does not simply collect and report on data, but also
looks at it from many angles, determines what it means, then recommends ways to apply the
data.
Data scientists are inquisitive: exploring, asking questions, doing “what if” analysis, questioning
existing assumptions and processes
Data is doubling every two years, and everyone has heard of the preposterous growth numbers
stated in reports. Against this backdrop, the inevitable outcome is the emergence of the Data
Scientist. A data scientist needs to analyze vast amounts of data and cast the technology map to
make the transition of data to insights possible. The scope of the job of a data scientist includes
identifying data sources, quality of data, correlations between data points and dissemination to
the users of information.
For the moment, the role of a data scientist is played by a combination of people in the BI team,
such as the data warehouse architect, Business analyst, and others of that ilk. As the situation
evolves, the data scientist would work above these professionals to unearth new trends and
associations that may be beyond the realm of current models and Business problems. The
Business analyst would work on the data that has been put together by the data scientist. James
Kobielus, a senior analyst with Forrester, in his Business, goes as far as to compare the work of a
data scientist with the work of scientists in the natural sciences and social sciences, stating that
they would need observational data and experimental data to work with. “Historically (data
scientists) have had to be content with mere examples.” With a full-fledged career emerging, this
will soon change.
Discussions on who exactly is qualified to be a data scientist do not vary too much from the
debate held earlier on whether a Yet, at the outset, industry experts have indicated that a data
scientist should have a master’s degree in mathematics or statistics. Meanwhile, , group CTO at
Shoppers Stop, states, “There is a shortage of professionals who can be called data scientists. At
the moment, whoever has a passion to work with data is filling the void.”
A data scientist will work at developing new algorithms and bring forth new patterns and
insights into the data that otherwise would stay hidden. “Along with statistics, a data scientist
can have a qualification in economics, and most definitely needs a dozen or more years’
experience with working with ten to fifteen BI tools,” says Chuck Hollis, VP for global marketing
& CTO, EMC.
a provider of decision science and analytics services says “Data scientists will also dabble in
experimental psychology, anthropology and social sciences.” With a need to establish BI centers
of excellence (CoE), analytics will get institutionalized.
With the advent of social media impacting most facets of business, organizations look forward to
integrate technology, social software and BI to create a congenial decision making environment.
The data scientist will be responsible for providing a social context to information. BI and
analytics dance to a new tune when adopting new approaches such as Hadoop. They do not wait
for structured, cleansed, pristine data but work with a mixed bag of data to provide real- or near
time analysis. Descriptive analytics, inquisitive analytics, Predective and prescriptive analytics
are all part of the new paradigm, with the data scientist at the center.
The evolution curve is moving from decision support to becoming increasingly operational, with
an imminent progression that will take strategic competence to a whole new level with data
scientists in the picture. BI came on the scene fifteen years ago and IT owned these initiatives.
Now, BI is a Business function involving market research with a central focus on analytics.
Companies with large volumes of data (internal and external) would take to The Notion Market
without batting an eyelid, but smaller companies would think twice before paying someone
money to do something their BI vendor told them their BI product would do.
However, it is not as if there are data scientists in abundance, all clamoring for jobs. On the
contrary, as Hollis from EMC says, “There is a shortage of talent. For every data scientist out
there, there are thirty jobs waiting.”
522 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Mitesh Pathak, Y-ACE (Yet Another Computer Engineer)
Answered Nov 6, 2014
Originally Answered: How do I improve my programming skills?
9 question on SPOJ
Well done bro. You are on right track. Initially don't consider world rank to judge yourself.
When you solve 100-150 questions on SPOJ, comeback to this question and ask yourself - Have
I improved? I'm sure the answer will be yes... coz you will know 100-150 new concepts. You'll be
a better programmer (time/memory/algorithms complexity)...
Cut the crap and focus on present. Dedicate 3-4 hours on each problem, brainstorm but don't
quit. Look for hints not for solutions. Learn the concept behind each problem. Practice smart &
have patience.
RecommendedAll
Debasish Ghosh, Author - DSLs In Action, open source contributor, programmer at large, software
engineering enthusiast.
Updated Feb 10, 2011
Originally Answered: What is the single most effective thing you can do to improve your programming skills?
There is no silver bullet in improving your programming skills. There are in fact many things
practiced over a period of time that makes you a good programmer. The most crucial thing is to
learn how to think in your programming language. Over the years there have been many radical
mindsets responsible for doing ground breaking stuff in the usage and implementation of
programming languages. Learning them is certainly a good way to probe into the minds of those
thought leaders. Here are some suggestions in no particular order on a few things learning
which will change the way you think of programming ..
And last but not least, make it a habit of reading good (and bad) code. It exposes you to the
world of best and worst practices that you should be aware of when you will be writing code.
5.7k Views · View Upvoters
Upvote20Downvote
Share
RecommendedAll
Rituraj Borpujari, We can't control the situations we face, but we can control how we react to them
Answered Mar 3, 2016
Improving your programming skills involves a lot of things. Fortunately its not that hard if you
are determined enough to learn and master.
1. Be thorough with the basics. Being thorough with the basics will help you
understand and implement complex algorithms easily. You will be able to grasp more
of whats going on when you see some new code written by others. This will also help
you write effecient code.
2. Implement practical life problems. If you don't practice coding solutions to real
life problems, then its a good time to start it. This will help you gain expertise on
algorithms and program flow. It will also help you become good at using different
programming constructs. Practice daily life problems like railway reservation system
model, tic-tac-toe game, reminder system, etc.
3. Learn the concepts of how a computer hardware works in accordance
with software.Learn how low level operations like data fetching from memory,
calculations processed using registers, graphics pipeline in a gpu etc are handled by a
computer. Although these are not necessary for programmer, it will help you write
more effecient programs that takes advantage of the hardware.
4. Learn different programming languages. Learning different programming
languages will help you know and understand different programming constructs and
ways of implementing things. You will then have more options to choose a language to
code your program. You can then choose the language best suited for the job you want
to write the program for.
5. Code with style. This may not seem important but it surely is. Writing program with
good indentation and commenting style is a sign of an expert programmer. It also
helps programmers understand your code and update where necessary. In short, it
helps in maintaining and reuse of code. Coding in a standard style is a pre requisite for
developing in teams.
6. Practice practice and practice. You will never get anywhere without practice.
Practice more of programming. Try writing effecient code for already working code.
Optimisation is the key.
You may like to view my blog Become Developer
369 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Step 1) Learn basic algorithms and implement them (DFS, BFS, Dijkstra, APSP, LCS, LIS etc.)
Step 2) Solve section wise, difficulty wise problems on HackerRank. (Need not go through all
sections and problems).
Step 3) Solve problems from LeetCode Online Judge. First try to write code on paper. Walk
through your code. Type the same code in editor and submit. Learn from your mistakes.
Edit:
1) Try avoiding IDEs, because you won't get to use them during test/interview. They will make
you their slave. So try to be your own master.
2 ) Competitive programming skills are not required for placements. So try NOT to invest your
time there. Rather, strengthen your basics, and ability to write clean code in less amount of time.
3) Divide and Conquer - Code daily and not once in a blue moon.
4) Master one programming language(either C++ or Java). If you are going for C++,
refer cppreference.com for STL.
1.3k Views · View Upvoters
Upvote8Downvote
Share
RecommendedAll
And may be whatever i'm about to give seems silly worthless piece of advice but it really works in
real world. Please learn HTML5 and CSS3 properly without any frameworks mambo-jumbo.
And understand all aspects and concepts of CSS3/HTML5 thoroughly.
Learn to create beautiful websites. Since you already know programming just concentrate 4
months to improve webdesign skills (esp. HTML/CSS) . If possible attend design classes.
Learn about Color Science, Basic Design approach (a design book for programmers and
developers), Amazon.com: The Non-Designer's Design Book etc..
Little Beauty brings enormous advantage to you. The Advantage is better than getting TopRank
in topCoder. (less work , more good impressions to business guys). with that.
1. You can create a beautiful blog and blog your Algorithmic learning Experiences
2. You can learn JavaScript and you can easily create your own framework
3. You can create tutorial blogs and make your choice of framework look marvelous.
4. In case if you have choosen any poison like (lisp,haskell), HTML/CSS skills alone makes you
instant celebrity. (may get a job offer or two).
5. You can make beautiful first impression.
p.s: Along with algorithm skills you can really find easy money.
RecommendedAll
To get better at coding, you must code. However, effectively coding is most important. What we
do at Coding Dojo is provide the most effective learning environment we possibly can. From
project based curriculum that is meant to teach you all the fundamentals of web development, to
amazing empathetic instructors; Coding Dojo will help you change your life.
149 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Christopher Dumas, AA Mathematics & Computer Science, West Valley College (2021)
Answered Jul 21, 2017
A2A. I’ve written a lot about this on this site, and it would be more profitable for me (less time
spent here) and more profitable for you (more in-depth answer for each thing) to read my other
answers. Here they are, for your convenience:
126 Views
UpvoteDownvote
Share
RecommendedAll
This simple 3 words are the base of my developer career: I repeat them every day, and I always
try to discover new things and be motivated and passionated on my job. Be corious, discover
latest technologies, try, fail and re-try.
Practice is of course another important aspect of this job: after work, in my spare time, I try to
learn new things and try to develop side projects, learning a new JavaScript library, new server
side framework, etc etc.
I want to link this simple post, maybe could be helpful: 7 tips to become a better web developer |
DailyGit
232 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
The key is to accept that no job is too small. You must start from somewhere. Every time you
work on code, you will get better. The key is to slowly by slowly build up some experience and try
to look into your what area you would like to focus on. After which, build up some "resumable"
experience (hence the internships and volunteer work). If you really like what you are doing
then it won't be a pain to build up all these credentials.
6.8k Views · View Upvoters
Upvote7Downvote
Share
RecommendedAll
Anyway, here is my list of things, which can help you to become a good programmer.
1) Coding, Coding, and Coding
Why have I coding at the top of this list? because it's difficult and same time its central piece of
programming. By doing coding, you also realize your mistakes in designing, error handling,
threading and then go back to those respective skills to improve. You just can not work in
designing only, coding produce output, which is important to learn and act as a success. By the
way, do not stop just after solving the problem, it's always better to throw away your first
solution, that is just a prototype, your next solution should address issues, missing requirements
which you have found building a prototype.
2) Reading Books
Coding is easier said than done, and there is a huge difference between good code and bad code,
but how do you know? Until you have seen a good code and know why a particular code is good,
you can not understand the difference. This is where books come to help, more often than not
authors are great programmers themselves. They offer their experience in the form of a book. I
love books, but one book, which is particularly helped me is Clean Code by Uncle Bob.
Every programmer wants to become a better programmer, but not everyone succeeds.
Apart from the natural talent of programming and problem solving, it requires a lot of hard
work, constant learning, and perseverance to become a better programmer.
204 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Vivek Khanna, website designer, developer in learning phase
Answered Nov 3, 2016
Originally Answered: How can I boost my coding skills?
hey buddy!
In this question you did not clear that you are on which stage of programming. so there is
difficult to give the exact answer of your question.
If you want to land up in a good company then I want to clear one thing that companies in today
scenario are looking the skills not only the percentages of the students. In many colleges, if you
do not get the 70 to 75% minimum than they do not give you the opportunity to take the campus
interview unless you have some thing extra.
I mean in today scenario companies are looking to the person who is multitasking and have
some thing extra in skills. Does not matter what is your educational qualification. If you know
the thing which they want then you are in a situation to fire all rounds in one single click.
One good thing that you know is the time limit or in other words the duration of time in between
you want to get your target.
RecommendedAll
Vaishnudebi Dutta, studies at Birla Institute of Technology, Mesra (2020)
Answered Jun 14, 2016
Originally Answered: What is the best way to improve ones programming skills?
There's only one way to improve in programming.
PRACTICE !
The more you practice the more you learn and more it becomes easy to solve them quickly.
Go through different books of coding on that platform. Learn the basics well.
Don't give up if the program you want to solve is not giving you the best possible output. Try it
several times before taking help. This habit will make you cling to programming, which is useful
actually !
Also, one must always try to search for mistakes in the program by himself in case of error. This
may acknowledge you more about that programming language.
If you are done with plenty of books you may check this page: https://www.codechef.com/
enjoy ! :)
334 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Zoran Bogicevic, software developer, man of a few human and many computer words
Answered Apr 4, 2015
Originally Answered: How can I massively improve my programming skills?
I think good idea could be to visit some freelancing sites. You don't even have to bid, you are just
interested in users' requests. No matter what programming language, you are just there for
ideas.
RecommendedAll
Vivek Joshy, Built some wierd GUIs for fun.
Answered Jul 19, 2016
Originally Answered: How could I improve coding skill?
Here are some methods:
1. Start writing code. You soon find yourself facing problems and coming across bugs.
Then fix those bugs and the cycle starts again.
2. Don’t be afraid to ask for help no matter how dumb the question may sound to you.
There are plenty of places you can ask your questions like stackoverflow or the
sub reddit for the language. But first make sure to google your problem before asking
on those sites to make sure you don’t get flagged.
3. Start an open source project. Then submit it to a website like Github. This will allow
other programmers to submit patches to your programs and provide revelation to
better or worse practices.
4. Version control systems and important nowadays. Learning to use git or mercurial
may seem taunting at first. But once you learn it, you will never have to worry about
damaging your programs or an endless chain of errors.
5. IRC is a wonderful place. If there is a reddit for your language then there surely is an
IRC channel for it. IRC networks like freenode have tons of users waiting live to help
out people who have problems with their code or other programming needs.
6. Reading a programming book may help. Either download a pdf or buy a book and start
reading and practicing the exercises given in that book.
7. Learn algorithms. Algorithms are so important for many reasons. Learning to do
something quicker is a good asset. This means writing less code that does more work.
You can practice learning to write clever code on hackerrank or buy a good book on
algorithms to start learning.
8. Watch video lectures, courses and tutorials on websites like Microsoft Virtual
Academy, edx, Codecademy and Coursera.
9. Go to a college or university and take a programming and or computer science course.
10. I know this is something not many people do nowadays. But writing down flowcharts
and algorithms on paper and then using them as reference to write code is a good way
to ensure you know what you’re doing. Writing code on the fly is fast, but it’s not
always sound logic.
174 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Pinank Patel, former Application Developer at Tata ClassEdge (2016-2017)
Answered Dec 31, 2014
Originally Answered: How can I quickly improve my programming skills?
- Programming what a nice word it is. First you should love programming - like anything.You
should be just crazy about it.
- Improve your basics. Revise it every week or two it will help you to solve complex problems.
- Tackle the same question in different manner.
- Think different i.e build your own programming style.
- Take regular break's and give time for your mind to relax too i.e don't pressurise your
mind.
- Make proper indentation's and write comments it will help you to understand and
remember your ideas and way of approach next time.
-Read the problem again and again until you analysis it take ample amount of time for
analyzing the problem don't rush relax.
-Think about the requirements note them down and develop the program in such manner by
considering the performance(speed of execution, lines of code, memory usage by code).
- Draw your own diagram or algorithm before attacking any question.If you don't want to
waste time in it than make or write anything in rough for understanding the sequence.
-Ignore breaking your concentration while programming.
- And last but not least just enjoy every moment of programming.And never stop learning.
This are my thoughts how you can improve your programming !! I am also a learner!!Hope this
helps you all !!
648 Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
2. Know the basics. Any concept you learn try to dig to its basics. Once your base is strong you
can understand advanced concepts more easily and appreciate them.
3. Know what you are doing. Whenever you are using any technology try to find out why you
should choose this technology over others. This will help you understand the advantages of that
particular technology and in which scenarios you should /shouldn't use it.
4. Don't be afraid to try completely new things. Get out of your comfort zone and learn and
implement new things. You can find a lot of help on the Internet.
5. Don't concentrate too much on theory. Though theoretical knowledge is important, it can
bore you and you may lose interest. Also successfully implementing something practically gives
you a lot of confidence.
6. Do not try to learn too many programming languages. Knowing two or three is decent
(depends on what you are working). Master the technology you are working in.
7. Move with technology. Always try to keep pace with the latest technology. If the new
technology betters what you are using try to learn it.
9. Don't go for quick fixes. Try to find a long term and stable solution to your problem rather
than using quick workarounds.
10. When you solve an issue know what the problem was even if it was solved by trial and error.
11. Know keyboard shortcuts. Small thing but can help you code fast.
RecommendedAll
Practice.
Build.
Get out of your comfort zone.
The last one may seem like the odd word in the list, but if you look at it, it is the only way that
will make you go for the first two. Because your question is repeated so many times cross Q&A
websites and forums, and the answer is always the same. Build and Practice. To be honest a lot
of people hate that answer (I was one of them), it is like the bitter truth. There is that quote:
“and those who fear climbing mountains, they will live between holes forever” . Trust me,
whether you accept it or not, it’s there, and you’ll never make a real progress, until you accept it.
Of course it is hard, this is the way we get better, right? So, you better try hard to embrace it.
Having a strong will, and passion will play an important rule.
Then, for the “practice” part, I personally use websites like, codewars, codingame… to practice
the concepts of my language (solving small problems). There are a lot of websites like that. All it
takes is a search and you can choose one. I recommend codewars, because, it has sections and
levels.
Build. You can design something on your own, and start building it, or maybe you wanna clone
something and implement it using your language. Also, joining a team or you know, a
community, will help a lot, it really does, it can increase your coding skills, exponentially.
322 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
To get master in solving real world problems, you need to choose a real world project and start
working on it under the consideration of a mentor so that you can ask for guidance
anytime. Holberton has been helping many students since years in getting actual software
engineering knowledge. Try attending a school like programming school, that is free of cost.
Good luck
128 Views
UpvoteDownvote
Share
RecommendedAll
In competitive programming, you often think for a small yet a very complex problem and you try
to get its fastest solution.
When you are thinking to build something (software/app/website) you need to look at larger
picture. So apart from the skills you polish through competitive programming you also need
good coding skills. I would suggest to pick the most recommended books for language of your
choice. Read and implement its examples/exercises cover to cover, and then if you have an idea
to implement, explore it. Divide the goal into mini problems and try implementing them and
merge them eventually or explore github.com and see how people have implemented their ideas.
There are some really mind boggling projects you will find there.
1.9k Views · View Upvoters
Upvote6Downvote
Share
RecommendedAll
Ashish Gupta, Passionate about technology, outdoors. Software engineer by profession - working at
Google.
Answered Oct 12, 2013
Originally Answered: How does one improve his or her programming skills?
This question is very broad in scope. But there are an insane number of dimensions you could
improve in, depending on where you are at right now. And it also depends on what your goals
are (large scale software engineering, mobile app, web apps, game programming -> they all have
very different paths to improvement). Some well known methods that are more generic are:
1. Educate yourself constantly: Read advanced books on all sorts of topics - depending on your
field and needs. These include software design, clean code, large scale engineering, functional
programming, algorithms, data analysis/statistics, new languages, team
collaboration/management, testing, refactoring. Amazon has ton of books on every imaginable
topic. Some obvious ones are "The Pragmatic Programmer", "Clean Code" , "Code complete".
These contain essential practices that are important to master to ultimately build more complex
skills/your personal style on top.
Remember, just practicing/writing a lot of code without a good foundation isn't going to
automatically improve your programming skills, as is commonly suggested. You may converge
to the same ideas in your lifetime on your own, but it is better to take the shortcut and learn
from the current best set of practices.
Youtube also has a ton of talks on these topics. Search for a few topics and you will find videos
on many connected topics from great speakers.
2. Write complex code: If it is not your full time job, pick a side project that is demanding and
potentially helpful to other folks. If you do this full-time, make sure you can find projects that
involve creation of something new/grand/complex, apart from the regular day to day. Suggest
something if nothing comes your way automatically. Do this again and again, and grow your
scope. Pick something that sounds a bit ambitious for your current skill set.
3. Reading good code helps forms good coding habits and code patterns in your brain. Reading
large amounts of code and grasping it quickly takes lot of practice and experience. This is
something that's easier to do if it is part of your job. If you do this as a hobby, pick a nice open
source project and try spending sometime regularly understanding code written by pros.
4. Work on your coding memory. A lot of time can be wasted just looking up how to do things.
Availability of documentation can become a crutch. However a good memory is a programmer's
best friend. Develop a system to note down important code/library functions/patterns/snippets
that you find using again and again. Develop your own reference sheets for different domains.
With time the reference will become a part of your working memory and you can program more
fluidly, without interrupting yourself every few minutes.
5. Master domains that you are involved in. Ultimately everyone is programming in some
particular domain. A great programmer often comes with domain expertise, that can either be
expressed using programming or is a skill that greatly augments writing code. That can be data
science, statistical crunching, distributed systems, games, mobile programming or even solid
leadership/management skills. Domain knowledge will make you more valuable and impactful
then being a "generic" programmer. Strive to gain specialized scientific, CS or "soft" knowledge
outside just core software development and combine the two, depending on your context.
6. Read about best practices used in today's technology. There are many blogs/sites dedicated to
explaining the architecture behind today's top technologies and companies. It is inspiring and
educational to see what goes behind state of the art.
2.5k Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Just ask yourself a very simple question : A kid if does not know counting and multiplication ,
can we make him or her perfect in Tables by just practice
There is a simple rule of 1:10 means for one theory concept you study you should do minimum
10 exercise. Then only practice will yield good results otherwise, no matter how practice you do
not going to make you a good programmer.
If you want to learn Java. You can watch my Video tutorials at YouTube channel
Adroit Tutorials
155 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Step 1 : Visit good websites regularly which provides good tutorials.
Step 2 : Whatever you learn over internet always write down important points/concepts on
your online storage accounts like Google Drive, Drop Box, Google Notes etc. This is the best way
to access your notes when there is no internet connection.
Step 3 : Always do practicals what you learn over internet, create small programs on every new
topic you learn.
Step 4 : Give online test regularly to check your performance of programming.
170 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
Also, it has the happy side effect of being relevant to today's emerging languages which have
both imperative and functional features, such as Scala (programming language) and Ruby
(programming language), so learning it isn't purely an academic exercise.
2.4k Views · View Upvoters
Upvote6Downvote
Share
Dave Briccetti
For me it was learning Scala that did this. I made a huge leap.
Do you believe the programmers working at your office are magical wizards and hold
supernatural powers to manipulate your computers? Well, anyone out there can learn writing
programs, and trust me it does not take a higher math and science education to initiate.
Programming for dummies or virtual programming is a replicate paradigm used for the learning
PURPOSE. IT helps you explore common parts of coding languages and use them to write
programs for various platforms like Windows, Linux or Mac OS X.
Programming for dummies can prove to bea great achievement for the following groups:
Are you a student who needs some authentic knowledge to enhance your
programming skills
Being a stiff worker, are you interested in knowing the mechanism of your Android
mobile applications
Are you a prospective graduate highly aspirant to join the booming sector of computer
programming
Programming for dummies is a perfect startup to enter the real world of programming.
1. Getting started
Before moving forth to the virtual world of programming, develop a general overview ofwhat
programming stands for. This is where you learn the evolution of programming, latest
techniques to make programming easier and faster, functioning mechanism of different
programming languages, tools used by programmers and how the programmers create large
projects.
2. Basics of programming
Programming follows a basic principle irrespective of any other determinants. Grip the
programming basics and evaluate the typical parts of a program, the mechanism of making a
program (a real project) work. Make sure to analyze the purpose of a user interface and the
components that make up a user interface.
In precise, computer programs typically manipulate data. Organized storage of data for its
optimum utilizationin closets or drawers is known to be data structure. Data structure forms the
heart of any computer program. Types of data structure vary with the variation of information
you need to storeor how you need to use the information, so on and so forth. Comprehend the
various types of data structures available, pros and cons of each in order to acknowledge the best
out of it for your written program.
4. Algorithms
5. Web programming
With the advancement in technology, Internet has evolved with all-new features. Traditional
programs run on computers, the other way round, anew set of programming lets you clutch the
entire globe! Web programs are installed on one computer(server) that is run through a series of
computers (known to be clients). Designing programs for web-pages, rather web programming
is not hard. Do you think it’s not your cup of tea? Well, it’s absolutely a misconception! All you
need to do is, learn the different types of programming languages and mechanism to formulate
them.
Programming for dummies makes a handy reference that leads you to accomplish a specific task
using programming language syntax. Language syntax lets you identify the unusual features that
distinguish one programming language from the other.
7. Programming applications
Knowing how to program a computer is appreciable; however, it is of no use unless you know
the mechanism of applying your programming skills to something productive. Programming for
dummies lets you explore the several fields of computer programming used in virtual practice.
Amalgamation of programming knowledge with your significant field of interest lets you carve a
niche in any field you choose.
335 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Ahmed Ayman, Scholarship Android & Computer Programming, Google and Udacity (2016)
Answered Jul 3, 2017
Originally Answered: How do I develop programming skill?
I agree totally with all of the mentioned answers.. to develop skills at something you would have
to practice it!
but talking about Computer science and programming.. I’m not sure that the Practice is the only
thing that would make you better at it.
and one of those who I learned so much from about this point is professor Michael Starbird .
he talked in his MOOC on edx about the effective thinking steps that everybody need to develop
himself and that said that to be an effective thinker you would have to :
understand what you learning very deeply (focus on the details), and this is
really helpful in programming since you will be always learning things and build upon
it, so if the basics weren’t intuitive then you would no longer be able to do anything.
ask questions about what you are doing... that’s very helpful also in
programming since in the coding process we always ask ourselves about all of the
possible probabilities.
learn from your mistakes … and in programming you would be always doing bugs
and you have to learn from your mistakes and think of a better way of doing it..like
another Algorithm or something.
follow the flow of your ideas..hence you would be trying every idea..don’t just
think of a lot of ideas without trying them.
have the ability to really change.
so, simply besides the practice you would have to think effectively, to have a better intuition of
what you are doing and to develop your skills.
finally, I would recommend checking out his MOOC , here’s an intro about it.
173 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Arthur Brooks, From 150+ Rejections to Job offers at Google & Microsoft
Answered Jan 9
Originally Answered: How can programmers improve their skill by themselves?
The best way to take your skills to the next level is by practicing more programming.
Try to look at the things from different view points. Take something you have already
implemented.
You need to get your hands dirty. In your free time start a side project work on it. Implement all
the features you can imagine.
Second best option could be to start contributing to some well know Open source project.
Remember the more you try. The more you will fail.The more you fail, more you will learn.
Learning is a process very deeply rooted into the desire. So if you really desire to be great at
what you do.
The learning process is like an alarm clock. You want to hit the snooze button over and over
again.
931 Views · View Upvoters
Upvote6Downvote
Share
RecommendedAll
for practice:
HackerRank
Codechef
HackerEarth
try to solve a number of problems. Explore approach of others as well, look at editorials.
improve( algo ){
learn;
practice;
return improve( algo );
}
RecommendedAll
RecommendedAll
Then go ahead with implementation of those drawings on the paper with sytax right beside the
drawing on the paper.
RecommendedAll
Go though coding conventions. Coding conventions are style guidelines for programming. They
typically cover: Naming and declaration rules for variables and functions, Rules for the use of
white space, indentation, and comments, Programming practices and principles, Coding
conventions secure quality: Improves code readability, Make code maintenance easier, Coding
conventions can be documented rules for teams to follow, or just be your individual coding
practice.
Check these sites for a simple idea. PSR-2: Coding Style Guide JavaScript Style Guide and
semantic HTML.
If you don’t do it already, try to reduce the code by using loops or recursive functions etc
whenever possible.
353 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Read the existing code, collect all functional features and grasp overall designs
Coding, testing, discover problems when changing programming languages (say from
a typed language to a dynamic language)
Fully understand some design decisions. Some times when you just read the code you
don't really understand why it is that way until you write the code and encounter the
same problem
The fact that you'll actually re-write the code will (mentally) force you to read the code
more carefully
Get to know a lot of libs (the code uses xxx in python and is there some equivalent
project in java that I can use for my re-implementation?)
In short, re-implementation saves you time of finding a project idea, crafting tests cases and let
you concentrate on the programming part. It's also a great way to fully understand the internals
of the projects that you are interested in. During this process it's also possible to find some bugs
in the projects that you are trying to re-implement and this even gives you some chance to
contribute to it!
5.8k Views · View Upvoters
Upvote11Downvote
Share
RecommendedAll
Tushar Dadlani, Software Engineer at Pivotal Cloud Foundry
Answered Feb 28, 2014
Originally Answered: What is a good way to improve my coding skills?
Improving your coding skills is about the will to do something in a better way. Simple example:
Let's say you write the following lines of C code:
1. #include <stdio.h>
2. int main()
3. {
4. printf("Hello World");
5. return 0;
6. }
Being a better programmer means knowing what can go wrong in this code and what can I do to
improve the functionality.
Another way to improve your skills around the same program, asking some
other questions:
1. If I want to run the program a 100 times, what are the best ways to do it? (Will make you learn
about scripting)
2. If your libc implementation is incorrect (rarely happens, happens a lot with third party
libraries in all languages) , is there a way to correct it , if not, what is the information that I have
that so that I can defend myself from such errors.
3. How does the compiler know where stdio.h file is located? Where can I see it?
4. What information is stored in the binary (will lead you to learn about ELF headers in Linux/
other headers formats for other OSes) ? What does a file format mean? How do computers
recognize that they need to open Adobe Reader for a PDF document ?
The list of questions you can ask about a computer program are endless.
A holistic understanding of the environment in which you are running your software is
important (OS, Compiler/Interpreter, version of the OS, version of the compiler, the browser ,
the webserver and everything else in the software ecosystem.
The other part is understanding the way the language you are using behaves for certain kinds of
problems and algorithms. What are the strengths and weaknesses of your language?
Lastly fundamental understanding of data structures (Theoretical and the ones allowed by your
language) and algorithms can go a long way in improving the way you code.
6.1k Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Chetan Bhasin's answer to I am a terrible programmer. I understand things well, but I’m terrible
at implementing them. What should I do to improve?
Chetan Bhasin's answer to How did Jeff Dean learn to program so well?
Chetan Bhasin's answer to How can I understand or manage a program with millions of lines of
code?
Chetan Bhasin's answer to I am a sophomore in high school, who is very good at math. I feel like
I would be good at programming, but currently, I have next to no programming knowledge.
Where, either through books or the Internet, can I learn to program well?
Chetan Bhasin's answer to What are some of the best ways to learn programming?
Chetan Bhasin's answer to How do I become good at coding though it does not interest me?
623 Views
UpvoteDownvote
Share
RecommendedAll
Russell Adams, lived in Lawrence, KS
Answered May 18, 2015
Originally Answered: How do I improve my general programming skills?
To piggyback off what Giacomo Sorbi said, CodeWars is a great place to start. I think it's
structured perfectly for those who are just learning to code. It wouldn't be a bad idea to check
out codecademy.com either.
But, like mentioned before, it's important to practice everyday, even if it's just one problem. I
use my github as a calendar to make sure I do at least some coding everyday.
Also, nothing against Java, which you posted in your question, but I would suggest that you start
looking specifically at learning Python. You'll find that it's syntax is very much like the English
language. The biggest reason I think a someone just learning to code should start
with Python is because it's going to allow you to focus more on problem solving instead of
learning a bunch of foreign syntax. And that's what coding/programming is really about. It's not
about the languages you use, it's about problem solving, nothing more. So the faster you can
get to solving problems, the faster you're going to progress.
RecommendedAll
http://www.youtube.com/playlist?...
The will teach you web technologies, and you'll work on live NFP(not for profit ) projects.
Gaining you a real experience+ knowledge.
Give it a thought. And please follow this thumb rule
Upvote if it helped
1.4k Views · View Upvoters · Answer requested by Jayanth Kumar K
Upvote17Downvote
Share
RecommendedAll
RecommendedAll
RecommendedAll
Good_at_coding=False
while(!Good_at_coding):
RecommendedAll
Refactor
Learn about ReFactoring.
Spend a lot of time ReFactoring and improving programs, even if they work fine.
Design
Learn about SoftwareDesignPatterns!
CodeReview
Find some good mentors and let them review your code, and try to do
somePairProgramming with them.
Find some peers with whom you can review your code. People of similar skill levels
can teach each other a lot. And this gets around problems with sharing your "bad
code" with a senior person who might give you a harsher critique than you want (not
to mention a bad performance review).
Learn multiple programming languages. Each language you learn will give you ideas
about how to do things better in other languages. (The worst programmers I know are
the ones who think that language X is the only one they need to know.)
See LearningProgrammingLanguages for related tips.
Learn different kinds of programming languages: procedural,
functional,ObjectOriented, etc. See GroundBreakingLanguages.
Learn multiple operating systems. Learn to write portable code.
Read
Read books about code quality, like CodeComplete. It can save you a lot of time.
Buy the book ThePragmaticProgrammer and read it, learn it, live it.
Generally, read GreatSoftwareBooks
Read books about other subjects. Philosophy, history, art... anything. Become a
broader person. It doesn't directly affect your programming as such, but it widens the
mind, which has to be a good thing.
Learn the c2.comProblemDomain
Get into the habit of understanding the problem domain. Try to create aMindMap for
the problem. Spend good amount of time learning about it. A good knowledge of the
problem domain goes a long way in creating good code.
Work closely with end users. Get their honest opinions about the software you make.
It doesn't matter how many algorithms or data structures you know if you aren't
making someone's life better.
And on a similar note: learn from your users. Try to understand where they're coming
from. If you learn the problem domain, their requirements make more sense and you
get closer to being able to give them results that will do what they wanted, not what
they asked for.
Reflect
If somebody complains that they don't understand your code, find out what it is they
don't understand. ("That guy is an idiot" is generally not the reason.)
Every time you fix a bug, think about how you could have avoided the error in the first
place, and what could help you avoiding it next time. Some of the answers lie
in GoodCode quality principles, and others in good programming practices.
By the way, just stop thinking that bugs come to life just from disruption or fatigue.
Bugs proliferate in poorly written code. (But do remember that rest and
concentration are requirements for doing good work)
Learn to quit habits and to adopt new habits.
Take a break. It's hard to do any of these things when you're already coding all week,
as fast as you can.
446 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Mahesh RS, Programming a computer was my childhood dream. Then I realized it was overrated.
Answered Jun 2, 2015
Originally Answered: What should be my perfect road-map to enhance my programming skills during my 4 years of
engineering?
I don't think there's a perfect roadmap for anything in life, much less for programming.
Here are somethings you could do over the next 4 years to improve your programming skills:
learn as many programming languages as you can
learn as many programming paradigms as you can
learn at least a few programming languages really well
solve as many programming problems as you can
read as many good books on programming as you can
build at least a few large programming projects
4 years is a good long time. I hope you use your time wisely.
HTH!
155 Views · View Upvoters · Answer requested by Deval Saryam
Upvote1Downvote
Share
RecommendedAll
Srebalaji Thirumalai, Made in India. Startup enthusiast. Love to code
Answered Sep 23
Originally Answered: How can I improve my programming skills?
Practise. Practise. Practise.
First you have to learn and understand different algorithms and data structures used in
programming. Then you have to try solving problems using those algorithms.
I think the best place to start would be HackerRank . Start practicing problems in all types of
algorithms. Try to participate in online programming competitions in HackerRank , hacker
world Resources and Information. and in LeetCode .
Follow programming blogs, online magazines and experienced developers blog for best
practices.
Try to contribute to open-source softwares in Github. Open source softwares are maintained and
contributed by expert developers and by contributing you can learn many best practices from
reading their code.
Many people think that programming skills are specific to particular language. But its not right.
A good programmer should be comfortable learning any programming language and its features
soon.
160 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
As I am not a programmer I cannot answer this from the prospective of technical advice. But I
can answer this from my own prospective as a Coach.
1. Are you already enrolled in a training program or something to improve your skill of
programming ?
2. Do you spend time with programming language experts that you want to master?
3. Are you practicing your skill daily ? As consistent practice will make you a master.
4. Do you have a mentor or coach who can check your work and recommend
improvements constantly?
5. Are you Thinking and Acting from the Identity of an Expert Programmer ? (THIS IS A
BIG ONE THAT WILL PROPEL YOU IN THE RIGHT DIRECTION AND
UNDERSTANDING THIS ONE QUESTION CAN CHANGE THE GAME FOREVER)
The answer to all the above questions should be a YES , for you to be on the right track of
becoming an EXPERT IN YOUR FIELD.
Irfan Noorani
RecommendedAll
2. Learn from seniors. It’s so important to learn from them, they have many-year-experience
about this field and some tips you will never know in school. If you are in a company, study from
the older ones. If you are in Google, I have some names for you: Jeff Dean, Craig Silverstein, or
Ben Gomes.
3. Focus on your programming language: Be a master of that. Focusing on 1 thing will help you
learn quickly and gain familiarity with core, language libraries. Make sure that it’s a piece of
cake.
4. Review: Send your code you made to the strictest reviewer to test for you. They can find the
smallest error you made that you cannot find our or ignore that. This is the best way to help you
better.
5. Study, study more, study forever: Enroll to the conferences, courses or join in topics to
enhance your skill. You can consolidate and even learn more things from the experts
6. List to learn: list everything you want to learn more, you want to know, and then find
anything related to that such as: books, expert… you can remember that much longer than what
you learn passively in school.
7. Think different: don’t solve many problems by one way, try to fix one by many ways as much
as possible. Keeps your mind diversity to improve yourself and get new skills.
8. Change environment: Don’t be hesitate to change the working environment when you realize
that there is nothing there to learn anymore. Quite and starting learning the new thing.
Source: 8 Ways You Should Know To Improve Your Coding Skills - Beau Magazine
902 Views
UpvoteDownvote
Share
RecommendedAll
The best and the only way to increase your coding skills is practice. Period .
First of all, try to develop your maths, because I think coding is all about logic- how well you
can relate things to something logical that can be solved step by step by performing few
calculations . I think you should try doing some analytical questions to develop this ability.
Second, start small and make some programs on your own, pick up some problem, think about
it for a bit, develop the logic and by thinking I literally mean that you should think about it how
to solve it, what should be the logic, don't just give up and find the solution from the Internet or
somewhere. When you are able to do these small problems you are good to go.
Try registering on some websites that give challenge problems for coding, it will keep you
motivated.
1. www.eulerproject.com
2. www.codechef.com
3. www.hackerearth.com
4. topcoder //this one is for expert programmers
Try
1.1k Views · View Upvoters
Upvote6Downvote
Share
RecommendedAll
Jessica Su, CS PhD student at Stanford
Answered Feb 26, 2013 · Upvoted by Kiran Kannar, CS MS student, University of California San Diego and Adam
Leffert, Freelance Full-Stack C#/Web Architect and Developer, Entrepreneur
Originally Answered: What are the good ways to improve programming skills ?
Drink a shit ton of coffee. You will code fluently and with better focus. For me it takes around
300 mg of caffeine (the equivalent of three Starbucks caffe mochas), but your tolerance will
probably be different.
You could also try reading about algorithms or taking algorithms classes on Coursera. This
should help you write time- and space-efficient code.
66k Views · View Upvoters
Upvote595Downvote
Share
Roman Trusov
Caffeine can actually do more harm in long term, because of exhausting your cardiovascular and ne...
3 more comments from Eivind Kjørstad, Carrie Cutler, Pratik Mehta
1) Program more.
But not just more of what you are currently doing. Program more things, in more languages, on
more architectures, using more techniques. Writing OO c# on Windows is all fine and dandy,
but play with Java, and Objective-C (both OO languages which are not a big step away from C#,
so you're starting easy), and Perl, and Haskell, and just keep going.
Program for your laptop, and your phone, and for the web, and client-server applications. Get
an Arduino and program it to do things to the real world.
Become both deep and broad. IME, most programmers become deep easily. Broad requires
work.
2) Consider the nature of good code versus bad code.
I realize that this may sound overly philosophical, but code has characteristics, and some are
good and some are bad.
For example, code has varying levels of plasticity (the ability to be changed). Good code is
plastic, bad code is brittle.
Two pieces of code are loosely or tightly coupled (dependent upon each other). Good code is as
loosely coupled as can be managed. Bad code is tightly coupled, especially when one piece of
code depends (in an OO environment) upon the internal (unpublished) representation of
another piece of code.
And so on.
Different algorithms have different characteristics: they use differing amounts of cpu and
differing amounts of memory (which have differing characteristics -- CPU registers vs. on-chip
cache vs. off-chip cache vs. RAM vs. SSD vs. hard drive vs. cloud vs....). They are easier to create
or harder to create. They degrade gracefully or badly.
And so on.
Learn to recognize good code and bad code for what they are and why they are that way. Don't
just look at a piece of code and say "I recognize bad code when I see it".
1.1k Views · View Upvoters
Upvote6Downvote
Share
RecommendedAll
Honestly, it just takes practice. As a developer, you’ll happen across projects that challenge you
to learn new languages, explore new platforms, and work with people who might not have the
same priorities you do. It’s important to take allthese things into account.
More practically, try to reach a bit outside your comfort zone as you choose the next project to
take on. If you’re data mining the reddit API for fun, try doing it in a language you haven’t
touched. If you do a lot frontend stuff at work, try asking ops for a little scripting task. And so
on.
In my view, you don’t have to go far out of your way or be a weekend warrior in the open source
community. Just reach out, and push yourself bit by bit.
862 Views · View Upvoters
Upvote12Downvote
Share
RecommendedAll
Try to learn something new every day, no matter how small or big. Whether
it be a new method, new structure, new technology, or new methodology, try to learn
at least one new thing everyday.
If you don’t know something when you come across it, look it up. While
doing code reviews, or reading implementations of things, or even when browsing
Stack Overflow, if you run across structures, methods, properties, or whatever you do
not know, take the time to look it up and read the documentation.
It’s better to fail trying something new and ask for help, then do
something deprecated to fix the issue. Sure you can use multiple nested loops
with several conditionals to create an array with only the items you want in it, but it is
likely there is already a method or function that does this for you (Array.filter in JS,
for example).
Get out of your coding comfort zone. Try to do things you think you cannot.
Make personal projects that will necessitate you tackling facets of coding you are
unsure about or uncomfortable with.
Use things you learn right away. If you spend the time learning something new,
make sure you use it wherever applicable. The more you use it, the better you will
understand it.
Learn new things, even if you can’t use them right away. Taking the time to
learn a new method, or concept is never a waste. Even though you may not find an
application for your new knowledge right away, you will remember there was a
solution for your problem that you came across, and you can look it up. Just knowing
there is an answer you can look up, is better than not knowing an answer exists.
I try my hardest (and you have to try) to keep to these tenants, and they have helped me grow
exponentially over the last year.
Good luck.
197 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Nitin Khare
"Everything happens for a reason" reminded me of mockingbird besides I have started with topcoder...
Be upfront about your skills. Don't try to "fake it 'til you make it" -- people will see through that.
You have the best possible resource right at your fingertips: people that are great at what you
want to get better at. In my opinion, a truly great developer is not only very intelligent, but they
are excited to share their knowledge and teach others.
I personally get annoyed when people *don't* ask questions. If someone doesn't understand
something that I do understand, it's a huge inefficiency for them to work on it and not ask me
how it works.
Mark Johnson
Answered Jun 15, 2014
Originally Answered: How could I increase my skill in coding?
Google coding katas and find some you are interested in and learn them. Try writing some
games that you can play from the command line - something as simple as tic-tac-toe then add
networking to it. Try writing a simple MUD. Try to replicate some other interesting programs,
write a file differ, check out github and see what you find interesting and try to contribute. Even
though you're learning C, C++, and Java go checkout nuget.com and try replicating some of
those smaller projects in your favorite language - like a command line argument parser.
Essentially you just need more time "hands on" writing code. Find some meet ups
(meetup.com) and go learn more about the languages you are interested.
The side affect of all of this is that you will learn more about the idiosynchrocies of your
language - but the real goal is to give yourself challenges to solve so next time when you're
coding something for real you'll recognize patterns that you've solved before and can therefore
solve again regardless of the language.
RecommendedAll
But improvement is always good! In general, if you come from a more academic background,
then you want more practice. So work on a side project on weekends. On the other hand, if you
come from a more practical/self-taught background, then you want to strengthen your theory.
Read some books! Or do some Udacity classes. I also like Lynda, but that's more on the
"practical" knowledge side than theory.
lynda.com library | Trial Subscription
RecommendedAll
Manohar Reddy Poreddy, Top 100 rank. 33 Software projects,40+ programming languages
Answered Jun 12, 2016
Originally Answered: What should I do to improve my programming, given I’m doing a BTech in computer science
engineering and I’m in the 3rd semester?
1. Take C++ Tutorial course.
2. When you find difficult, say Recursion, then head to Wikipedia, for
example: Recursion (computer science)
a. Read it thoroughly on multiple days.
b. Make notes.
c. Re-read it on 5th day. Verify & update notes.
d. Soon, recursion will be your friend.
If you do this exactly, you might have a 80% probability of being ahead of your friends, in a few
months.
RecommendedAll
For me programming is more than a job. I believe you should have passion for coding.
Sometimes tools and languages don't matter as much as the fact that you are doing it with
love. You must enjoy your day to day.
This will be enough to drive your further everyday. I’m also trying to improve my programming
skills and I decided to write a tutorial : how to become better programmer, how we can measure
it. Is there a recipe - I don’t know - but this is what I want to know.
I put all my notes and personal experience here(please have in mind that it’s still working
version and I have a lot of work on it. It’s planned as personal reference guide):
A Better Programmer
Never give up
Enter communities
Play with your code!
Have fun while programming.
Learn the basics
Use Lab Diary
Another important point for me is: be curious, observe, test and validate. This will give you
confidence and independence.
P.S. I don’t consider my self as a genius or grandmaster in programming. But since my start to
improve my programming skills - I’m able to complete projects without extra help, I’m not
afraid of code and bugs, I can face serious problems even in production without panic, I know
what and how to do it.
81 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
1. Don't try to take care of every permutation and combination of a requirement in one go.
Spend some time in understanding the problem and break it into smallest possible logical parts.
2. Start coding the very basic simple step, then add/modify to implement validations,
conditions, and error trapping ONE by ONE, ONLY after each step is successfully tested. Keep
showing the work at different stages to a tester/reviewer/customer like a prototype. This is the
best approach. Remember that the earliest bug causes maximum rework later.
For e.g if you want to write a complex loan application, start with a simple calculation of interest
with proper numbers. Test it. Then add several validations & requirements with error trapping
one after one, only after each addition is successfully tested.
3. Always start with good coding principles from the very first line. Like nomenclature,
indentation, comments etc. Write in a manner that is visually very clear. Dont write long lines,
use line breaks liberally.
4. Regularly go through lot of code examples in help manuals or internet for solutions when you
are held up. Don't break your head too long on one issue as it will crunch available time.
5. Write crisp & clear english comments at key steps, especially where logical conditions are
used (if, where, when, switch, while etc). When you come back after some time to make changes
or fix a bug (or someone is asked to fix a bug when you are on leave), comments are the no.1
friends to make it easy. Write what is the purpose of every important variable.
Lot of people start with poor standards and no comments in a hurry thinking they will fix it
later, but the later never comes. It becomes so big and complex after a point that touching at any
place can crash the appl.
6. When making changes to an existing code, go through the flow several times to deeply
understand every possible variation of flow, under every type of expected input, to assess the
impact. Give some inputs and check the output. This is very crucial as otherwise can result in
heavy rework.
241 Views
UpvoteDownvote
Share
RecommendedAll
As for algorithms start with any book on algorithm and data structures.
I suggest starting with Algorithms Unlocked by Prof. Cormen and then move onto CLRS.
You can go for Knuth volumes as the ultimate book for algorithms.
This is the only way to learn and to develop skills in any aspect, be it programming or anything
else.
Choose a preferred language of your choice and start reading and learning about it. Once you are
through the basics, start solving some programming puzzles/problems on various online
platforms available like Codechef, Topcoder etc.
This will not only judge your coding acumen but also help you learn from your fellow coders.
Further you can work on optimizing your solution and following good programming paradigms.
Just never give up even if you fail as many times as you can, you will have a solid understanding
of the principles and techniques once you finally conquer any problem!
Happy Coding :)
246 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
It is tough to learn skills and retain them through just watching a video and copying what they
are doing. Though I agree that videos are a great supplement to learning I don't think that they
should be the sole source of information. If you are a CS student I feel as though it is fair to
assume that you have basic knowledge of at least one programming language.(C/C++ I'm
guessing since you want to do iOS development)
Practice is the single best thing that makes programmers better at what they do. Redo some of
your old assignments and learn more advanced things if you haven't already. These things can
include data structures and algorithms. Look at lists and implementing them, trees, queues,
stacks, etc. and try to write your own. Videos can help when you are looking at a concept such as
what a list is but when you are trying to implement these things I would suggest looking at
simple code that is meant for teaching the concept.
Once you have a strong foundation on data structures and algorithms as well as practice
implementing them, then you can move on to looking into what application development
entails.
When I first started out, I wanted to make an iOS app and went about it the same way as you.
Sometimes I would come out with a similar product that I saw in the video, but the functionality
was never perfect and I realized that I didn't actually know anything. That's when I took a step
back and really thought about what I needed to change in order to make my situation better.
That's when I started my own projects. They don't have to be that hard. A lot of my personal
projects that I do have strong roots in what I am learning in my classes. I just take them a few
steps further and apply my knowledge to something that I think is cool.
I know this is a lot to take in but I hope it helped somewhat. Becoming a great programmer is a
process that takes a very long time. This will stretch into your career where the real learning
starts.
In conclusion, what I would suggest to you is to first develop your skills in the language(s) that
you intend to use before you even look into developing your own application. This includes data
structures and algorithms. Also, give this site(or others similar) a visit and see if this is a
resource that will help you learn.
RecommendedAll
Refactor
Learn about ReFactoring.
Spend a lot of time ReFactoring and improving programs, even if they work fine.
Design
Learn about SoftwareDesignPatterns!
CodeReview
Find some good mentors and let them review your code, and try to do
some PairProgramming with them.
Find some peers with whom you can review your code. People of similar skill levels
can teach each other a lot. And this gets around problems with sharing your "bad
code" with a senior person who might give you a harsher critique than you want (not
to mention a bad performance review).
Learn multiple programming languages. Each language you learn will give you ideas
about how to do things better in other languages. (The worst programmers I know are
the ones who think that language X is the only one they need to know.)
See LearningProgrammingLanguages for related tips.
Learn different kinds of programming languages: procedural,
functional, ObjectOriented, etc. See GroundBreakingLanguages.
Learn multiple operating systems. Learn to write portable code.
Read
Read books about code quality, like CodeComplete. It can save you a lot of time.
Buy the book ThePragmaticProgrammer and read it, learn it, live it.
Generally, read GreatSoftwareBooks
Read books about other subjects. Philosophy, history, art... anything. Become a
broader person. It doesn't directly affect your programming as such, but it widens the
mind, which has to be a good thing.
Learn the ProblemDomain
Get into the habit of understanding the problem domain. Try to create a MindMap for
the problem. Spend good amount of time learning about it. A good knowledge of the
problem domain goes a long way in creating good code.
Work closely with end users. Get their honest opinions about the software you make.
It doesn't matter how many algorithms or data structures you know if you aren't
making someone's life better.
And on a similar note: learn from your users. Try to understand where they're coming
from. If you learn the problem domain, their requirements make more sense and you
get closer to being able to give them results that will do what they wanted, not what
they asked for.
Reflect
If somebody complains that they don't understand your code, find out what it is they
don't understand. ("That guy is an idiot" is generally not the reason.)
Every time you fix a bug, think about how you could have avoided the error in the first
place, and what could help you avoiding it next time. Some of the answers lie
in GoodCode quality principles, and others in good programming practices.
By the way, just stop thinking that bugs come to life just from disruption or fatigue.
Bugs proliferate in poorly written code. (But do remember that rest and
concentration are requirements for doing good work)
Learn to quit habits and to adopt new habits.
Take a break. It's hard to do any of these things when you're already coding all week,
as fast as you can.
Keep a Journal
See IsAnythingBetterThanPaper CollectingSeashells
20 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Judy Tyrer
Answered Jun 19, 2014
Originally Answered: How can I quickly improve my programming skills?
First: Read other people's code. All of the other people's code you can find. A lot of
programming is having tools in your toolkit. The more different ways you see other people
solving the same problem, the more tools you'll have when you hit such a problem. (I have been
told I rely heavily on bools by someone who seldom uses them).
Second: read about Imposter Syndrome. Chances are all those people at your company who
you think are so much better than you feel the same way you do, that everyone else is better than
them. Imposter Syndrome is part and parcel of the programming environment. You're better
than you think.
Third: design and write your own programs all by yourself without help from anyone. DO NOT
ASK FOR HELP EVER. Use Code Review sites (you can ask questions on forums, just no in
person - the purpose of this exercise is to teach you how to find answers without asking
colleagues).
Fourth: Can you pair program at your work? Try suggesting it for a project and see if you can
get paired with the best person at the company.
At one point in my career I had a great boss who said to me, "You know the only difference
between you and Joe? You think Joe knows all the answers, but all Joe knows is how to find the
answers. Once you realize you know how to find the answers, you'll be as good if not better than
Joe."
I'm writing my own MMO. I don't know what Joe is doing these days. We parted ways after he
insisted the wrap party be held at a strip joint as payback to my complaining about not wanting
to have to look at crotch shot porn in the lab. (The industry has always been heavily sexist, some
of us weren't in a position to complain as we were the only women in the industry at the time
and a complaint meant getting kicked out of the boys club so we mostly kept silent and
grimaced).
3.7k Views · View Upvoters
Upvote8Downvote
Share
RecommendedAll
Pick a language that you want to get started with, perhaps Java, PHP, Javascript, Swift, perhaps
even C or Bash (just pick one)!
Find some online tutorials that will show you the basics!
Get practicing!
Repeat!
132 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Joshua Gross, I've used computers. Some were flat. Others kind of boxy. Some were even black.
Answered Jul 20, 2017
I’m unsure why I’ve been asked to answer this question when there are many answers already
that contain every possible thing I could say. If you are looking for a summary, you need to read
through these, and that will be worthwhile. However, the simple summary is that knowing more
programming languages is not nearly as important as having more programming experience,
which you get from writing programs. If you want to understand multiple languages and
paradigms, which is a good idea, take the same program and design/implement it in multiple
languages from different paradigms. You will see side-by-side that, for example, functional code
shouldn’t look like or try to replicate OO code. Then learn what should be implemented in what
kind of languages and do the opposite. Make an OO operating system, or a compiler in a
functional language. This will show you why most compilers are written in C.
179 Views
UpvoteDownvote
Share
RecommendedAll
Soham Hole, B.E. Information Technology, Sinhgad College of Engineering, Pune (2018)
Answered Oct 18
Originally Answered: How should we improve programming?
To improve programming skills one should take one project to do….
5. Modular approach will help you while debugging and understanding the dependencies.
6.Identify and implement the possible algorithms ,use the best one which gives optimum result.
7.One your code is working try to Optimise it in terms of space and time. Trust me doing this
things will improve your development as well as programming skills
173 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
Krishna Apurva, BTECH Information Technology & Computer Programming, Medi-Caps University
(2020)
Answered Jun 29, 2017
Every programmer wants to become a better programmer, but not everyone succeeds. Apart
from the natural talent of programming and problem solving, it requires a lot of hard work,
constant learning, and perseverance to become a better programmer but most important thing
is doing practice, the more you do practice you will get more cammand in programming and
logic behind programs is also clear.
While doing practice, think in how many way program can be run. Make programs using
different logic which increase your programming skill.
Hackr.io - Find & share the best online programming courses & tutorials
Happy coding
93 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
RecommendedAll
Chris Cardinal
Answered Apr 11, 2015
Originally Answered: How can I quickly improve my programming skills?
Lots of good answers. But if someone were to ask me, I would say this:
1. Give yourself problems and solve them in code in whatever language you know.
2. Repeat #1.
3. Review your code and improve it.
4. Repeat #1.
Example: a long time ago, I wrote a program whose purpose was to model a contagion
(morbidity, diffusion, latency etc). The approach I took, the issues I encountered, the solutions
and workarounds implemented made me an immeasurably more resourceful programmer.
Other projects, equally interesting, further increased both my capabilities and my confidence.
In other words, to be a better boxer, ya gotta be in the ring with a real opponent.
460 Views · View Upvoters
Upvote8Downvote
Share
RecommendedAll
RecommendedAll
Toby Thain
A wise suggestion, but I would disagree with the characterisation of "weird languages"—Haskell is...
The question just mentions "programming skills" and does not specify which skills are being
referred here. As for me, I have been trying to improve my skills in following dimensions:
Algorithmic Skills - The ability to come up with better solutions: Well there are quite a
few awesome websites which can help eg: codechef, codeforces,
topcoder, rosettacode.org, algorithmist.com etc.
Software engineering skills: This can be improved only by working on big projects
which involve a team in some sense. One can get this kind of exposure by either
working in a company or contributing to an open source project. Colleges make the
students do group projects for this very reason.
2k Views · View Upvoters
Upvote8Downvote
Share
RecommendedAll
Shashank Sharma, B.Tech-M.tech Dual Degree Metallurgy and Materials Engineering, Indian
Institute of Engineering Science and...
Answered Mar 25, 2017
Originally Answered: How can I improve my computer programming skills?
When I had started coding during initial days, one of my teacher said to me, I shall tell you how
to improve coding. He told me following things:
Write at least one new program every single day and don't sleep until it runs without
any error.
Learn at least one new algorithm each day and try to code it yourself may be in any
language.
Learn at least one new concept every week and by the end of a month use all the new
learned concepts to make a new program yourself.
Try to design new questions and answer them yourself(mostly real life applications).
Join any online website like hacker rank, stack exchange, etc. And participate in
atleast 1 competition every month.
PS: Reading books is a constant in any kind of learning.
100 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Reading other peoples code is hard. It will give you new insight, and you'll see how other people
approach similar problems. It will give you different perspectives and force you to step through
the code line by line so you can see how they were thinking. You'll also find things you didn't
know you could do.
2. Programming challenges. Programming challenges are good because they improve your
ability to think analytically and creatively to solve a problem. An example would be a string
reverse function. Have you tried creating your own version of a string reverse? Give it a try and
you'll probably be surprised at how difficult it is, but by stepping out of your comfort zone you're
allowing yourself to improve as a programmer.
RecommendedAll
For each of the re-invention, one will have to figure out the motivations, the base
principles/technologies, the requirements, the challenges, and your own design, preferably
from scratch.
This can help a far deeper understanding of the technologies. Besides, it is a rich problem
solving experience. It means a totally different deep learning experience instead of the
traditional content-consuming learning experience. This requires the brave to put oneself in
front of white papers.
The more one experience in analysing complex real world problems, the more abstract how one
see these problems, the easier one can solve them in simpler ways.
1.6k Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
Yogi Khatri, Knowledge and Experience are complimentary to each other.
Answered Jan 7, 2016
Originally Answered: How do I master programming?
My personal experience taught me, programming is the art of "thinking" in logical manner. It is
not just coding in a language.
So, as you asked for "Mastering Programming", please be clear that you need to "Shape" your
line-of-thoughts when you attempt to solve a problem. It does not matter if it is a real life
problem or scientific problem. Then comes the next step to make yourself acquainted with rules
of grammar (syntax rules) of the language of your choice. You can practice both in parallel.
The simplest way is start with small problems in your day to day life and jot-down the steps in
logical sequences to solve them and then see if your flow of sequences to solve the problem is
correct? Then see, if you can find alternative ways to solve it and if there is any other better
alternative?
For example If you have to do a shopping of Grocery and some medicines, what all you need to
complete this task?
3. You set the priority of items to be purchased first -Medicines or Grocery based upon some
criteria.
5. Do the shopping, pay the bills, and carry the items along with you.
6. You repeat the step 5 above for all items in your list(s)
I used this shopping process as an illustrative example to help you understand that we actually
do programming all the time in our daily life but we don't give it any importance as
programming. We just need to make it better, fine tuned and optimized for given goals. For
example, the above logic need to be fine tuned. If you noticed, the first step to carry money
should ideally be after second step (choosing the items to be purchased) which will give you a
fair bit of idea how much money you need to carry.
Second step in this direction would be : To learn the solutions to some standard techniques and
problems that have already been solved. For example to sort the list of items, there are a lots of
different ways, with different pros-and cons. Get yourself familiar with these standard solutions
through - Algorithms and Design Patterns.
and Third step would be : Pick a (Computer) language of your choice (as per your interest and
needs) and learn the syntax and other details of it thoroughly. The more you make yourself
familiar with how the language works with computer, better you get a hold on it.
There are several good books, online video tutorials and forums available to help you get out of
troubles you are stuck with during your learning path. But be sure to first prepare a learning-
path (syllabus or topics to be covered) as usually it is done in books. That's why I prefer the
books because they help you finish in a planned manner and cover most of the necessary topics.
146 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Mohd Sufyan
Answered Apr 17, 2016
Originally Answered: How do you improve your programming skills?
All I know about improving your codes is that :-
1. Here I present to you, None other than the famous dialog: "Never Give up"
Yeah, you read that right. Never Give Up. Why?
I wanted to create a Sign Up/Log In interface using HTML and JS. Yeah, I started working on
them with codecademy. Now, after a lot of hardwork, I thought I knew each and everything for
creating such a page, But life said NO. As you guessed it, I failed each time, it being a silly
mistake forever. Then a day came, I decided to store all the variables in lists. Yeah, right. Lists. I
tried and got it. The time came. I pushed the "Sign Up" button with "Inspect Element" open. No
errors. Yeah!!! I put my entries in. "Log In" and....
And then , I clearly get the alert by the function "window.alert()". It said, Your entries do not
match our logs." OH!!! And then I think it's over. All over. In frustration I delete all my files, hey,
not only delete but, Shift + delete. Half an hour later, I realized that in my if statement I wrote:
1. if (user == users[1]) {
2. bla bla bla
3. }
Yeah! users [1], instead of users[0]!
Now I have started learning SQL and know how to create tables and store data.
Greetings,
Me.
140 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
for detail knowledge about it follow here : Improve Programming and Coding Skills with top 12
sites
1k Views · View Upvoters
Upvote21Downvote
Share
RecommendedAll
1. Patience - As you code, you will undoubtedly run into errors when you work , and
looking at the errors in the stack trace may be mind boggling! Sometimes you will have
to go back to a previous solution that you know works, and try to redo the problem,
maybe in a slightly different way, which well could take time, but the more you do, the
easier it will get.
2. practise makes perfect - Learning to code cannot be done in one day, regardless of
what some crash courses in programming say. If you want to improve, you need to
keep practising the languages you are programming in and you will improve.
3. projects - using the skillset you have, try to do small projects. This in turn will
introduce you to the real world applications of the programming languages you are
using. As you do more projects, and you become more fluid in writing programs, you
will find programming a lot more enjoyable.
4. be inquisitive - If you want to do something, but have no clue where to begin - ASK
SOMEONE. Forums such as Stack Overflow are designed for programmers who have
questions to be answered. You have to explain what you are trying to do and what you
have already done so that someone can help you. DO NOT be afraid to ask questions.
One thing I have noticed is that I learn from what others tell / show me, and using
their knowledge to solve my issues, I can apply the same logic to other similar
situations - suddenly you have improved your code!
5. learn to write in a structured way - before suddenly shooting off and assuming you
know what to do, only to get stuck one third of the way through and realise you have to
start again. Stop. Wait. THINK and PLAN out what you are going to do. make sure
what you are trying to actually do makes sense! when programming, try to write in a
clean way, with commenting through out, and appropriate white spacing where
necessary. This will make debugging a whole lot easier rather than if you have 2000
lines of jumbled up code that may work, but you don’t fully understand how or why it
works.
6. Tutorials - the internet is flooded with tutorials for programming , from 0 - GodMode.
If you are a person that is new to programming, use websites like codeCademy, Udemy
and Udacity to get you started in the world of programming. These websites also offer
intermediate and advanced guides in programming, so that you can keep on and on
learning , whilst doing, and expanding your own knowledge at the same time. I would
highly recommend John Purcell for Java, and C++ as well the TheNewBoston for a
variety of programming languages.
7. probably the most important - make sure you have a strong foundation of the language
you are learning. You cannot make an even remotely complex system of anything
without having a very firm grasp on the fundamentals of the language you are using.
This is because there will be features of certain languages that will enable you to
perform certain functions which you may not even know about, and may be very
useful to you for your project. so make sure you know the fundamentals of your
language!!!!!
The list can honestly go on and on. But the main thing is to be driven and not to give up! as you
program, think to yourself “woohoo this works…. but is there a better, more efficient way that i
can do this? how can i make my code more readable in case other people see my code? how can i
do x in order to get y to work?”, and so on! The more you do, the better you will become, just
make sure you go out of your comfort zones and be adventurous.
300 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
RecommendedAll
Liam Delahunty, works at Online Sales
Answered Aug 26, 2016
Originally Answered: What can I do to improve my programming skills?
As far as your PHP code being a mess, you can look at the coding styles and try to emulate
them: PSR-2: Coding Style Guide
I have a nice little plugin (phpfmt) for my editor (Sublime Text) that automatically indents
things in a reasonable way.
As for improving as a programmer, have a look at a dedicated PHP resource such as The Best
Laravel and PHP Screencasts. I find the bigger sites, like Treehouse, just cover too much.
108 Views
UpvoteDownvote
Share
RecommendedAll
Find a mentor: It is easy to get lost and not know what next to explore. Find someone
who’s been in the industry for a while and who is staying up to date. Define a plan with
this person about what you should study next, and what can take you to the next level.
Get code reviewed: the best way to accelerate learning and to improve, is to refer to
your mentor. Get your work reviewed, and make sure you’re going in the right
direction. The Internet has a lot of resources but they are far from perfect. Your
mentor will know better what’s better-suited to you.
Learn by doing: reading books and tutorials is good, but doing is king. Software is like
a craft, it’s by practicing that you will master it.
Practice on something meaningful: Pursuing personal projects allows you to greatly
enhance your coding abilities. You will know from your experience that it takes time
and perseverance, but still is the most rewarding learning experience that goes a long
way in keeping you motivated. Set the bar higher now. Pursue challenging projects
that you know will allow you to learn and polish up your skill more.
Have fun: CodinGame is great platform to practice, made out of video games that you
control using a programming language of your choice. HackerRank is a platform
where you can test your programming skill.
Get out and meet Software Engineers: there is a lot that you need to know. A lot that
you will only be able to know when discussing with actual Software Engineers. Go to
meetups and hackathons, few websites he recommends for this
are Meetup.com and Eventbrite. If you are living in the SF Bay Area, checkout
our Meetup page.
Good luck with it all! :)
200 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Nawar Khabbaz, Qualcomm Engineering, UCSD '14, Aspiring Entrepreneur, Trilingual, San Diego
Answered Aug 15, 2014
Originally Answered: How do I improve my coding skills? And get a good foundation in coding?
I would say if you start with Learn to code "codeacademy. com" which introduces you to basic
concepts of given programming languages, then propagate these basic intros to own programs
and structures.
741 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
RecommendedAll
Pick some OSS project that you use, or one that's popular in your chosen stack, and get involved.
This will supercharge your skills because you will learn:
1. Good patterns and practices by absorbing a well factored code base.
2. How to properly cover a feature with tests using good testing design.
3. Professional methods of collaboration and version management.
Not all OSS projects well factored and property tested, but in my experience most are. OSS
programmers tend to be the best of the best.
You could start by simply making a pull request for some bug you find or some small feature.
Over time you will earn the trust of the project owner and they will grant your commit rights. In
addition to improving your skills, contributing to OSS very definitely improves your resume.
2.3k Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
RecommendedAll
Here you go. I gathered all the answers that I could find. I hope this puts an end to the repetition
of this question.
How can I quickly improve my programming skills?
What are the good ways to improve programming skills ?
How does one improve his or her programming skills?
How do I improve my programming skills?
How do you keep your programming skills sharp? How do you learn new
programming languages?
What is the single most effective thing you can do to improve your programming
skills?
How can I significantly improve my programming skills in 4 months?
What are the steps carried to improve programming skills better for non-
programmers?
How can I improve my computer programming skills?
1.5k Views · View Upvoters
Upvote6Downvote
Share
RecommendedAll
Anonymous
Answered Jun 9, 2015
Originally Answered: How can I improve my coding skills?
Register for these websites and once you start to follow these you feel like a real champ in
programming.
1. www.hackerrank.com
2. https://codility.com
3. https://github.com
Don't forget to code regularly. Coding is the only way to become a Coder,
All the best.
461 Views · View Upvoters
Upvote11Downvote
Share
RecommendedAll
the more you code, better your coding skills. tats when you start to think in coding manner and
employing different concepts you have learn.
86 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
Mariappan, BE-CSE Technology & Speech, Alagappa Chettiar College of Engineering and Technology
Answered Jun 27, 2017
It's roughly a raw question..like how can we live happy always,how one can win in
everything,everyday..just chill.But everything begins with small stuffs like this..even it gave me
the interest to search for stuffs.OK let's move to ur question..how do I improve my programming
skills,which means you know programming.so the next steps are to apply it and feel it.yes Iam
not kidding I aware that you will be entertained than never before and start enjoy programming
if you start applying.For example start from the basic stuffs like simple printing,alter those stuffs
so that it entertains you,share those with your friends..then probably you will develop the habit
of entertaining your friends with cool stuffs make.this will surely enable a new way of learning
and its the easy way too.No money,no physical stresses and so on..just try to alter things and fix
errors at times you get..I do practise for example I altered a guess game algorithm to love
calculator(which matches my friends name with random girl names ,thus some entertainment
with learning..)so cool right..so try in this manner.hope it helps
40 Views
UpvoteDownvote
Share
RecommendedAll
all four are my fundametals what i try to follow. i started programming with J2SE and micro
edition for nokia mobile app development then moved to J2EE for writing webservies and
website. then iOS/Android now, so what i think if your doing code and know the reason on each
line whatever your writing will be great. Also try to learn from 3rd party API and open source
projects how they making thing more easier and before starting plan well think they each and
every user case and plan accordingly then execute.
Good Luck
682 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
From what I'm reading in the comments, you're having trouble with algorithmic problems. My
guess is that you don't really use those very often in your daily life, so you may simply not have
had enough exposure to these kinds of problems to do well. It's a bit like asking a dermatologist
to perform brain surgery: while the dermatologist will have a much better than average
understanding of neuroscience, their lack of experience will mean that they would likely suck at
it, even though they may very well be a great dermatologist. The beauty of the programming
exercises is that the stakes are very low (contrary to the neurosurgery), so keep challenging
yourself and you'll get better at it.
In a nutshell: keep challenging yourself, remain humble, but remain confident at the same time.
916 Views · View Upvoters
Upvote8Downvote
Share
RecommendedAll
2. Write cool programs which automate your daily work as much as you can
1.6k Views · View Upvoters
Upvote12Downvote
Share
RecommendedAll
If you want to learn how to make a dynamic website using Django, then Django docs provides
you the tutorial for building a small web-application from scratch. Here is the link -- Writing
your first Django app, part 1.
This tutorial is for beginners, you can make enhancement to this app or try building something
new (like building a blogging website) after learning this tutorial. It would be really great if you
can learn Javascript (if you are really interested in making a awesome and powerful web-app)
If you wish to brush-up your skills in python/ c++ then their are sites
like http://www.geeksforgeeks.org/ and http://www.codechef.com/, where you can solve
problems and learn from the solutions posted their. You can also take part in coding contest
hosted at http://www.codechef.com/ on regular basis.
1.9k Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Gregg Lain, B.S. Mechanical Engineering & Thermal, San Francisco State University (2001)
Answered Oct 6
Originally Answered: How can I extensively develop my programming skills?
Read more books on programming, the language sort of matters but not really. After learning
the syntax of a language like Perl/Python/Rust/etc you’ll find your algorithms and concepts are
next to be worked on.
If you wanna start at the bottom (at the dirt), learn C and then Assembly. After learning Perl and
seeing all the references to C, and that the ‘gods’ at work knew C, I spent a couple years on C,
and I learned a ton. Writing in C is another baptism of itself, seeing that “C is the dirt upon
which the internet is built”. Every C programmer I have worked with was awesome, because
what C teaches is so low level and cause such great mental anguish, you are forced to either learn
the language, and how systems work along with it, or quit. I quit on C in college, tried again 15
years later and ‘got it’ at 42yo. And it benefitted me greatly. While I do not use it every day, after
learning C, any other language is easy (also because most languages are either implemented in
C, or have the same constraints as C), I tell youngin’s that ‘It does not matter, all languages
basically boil down to C’.
Pragmatic Programmer
After this, I fiddled with assembly and suddenly the computer got much simpler for me and
easier to understand. It’s just a giant calculator.
171 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Denny Sam, I will code till there is no coffee left in the world, then I will rest in peace
Answered Dec 26, 2014
Originally Answered: How should I build my coding skills?
Where you might have gone wrong, might be, when you learned algorithms. You might not have
learned everything about the algorithm. You should completely analyse the algorithm by
learning it from different sources, looking at the run time analysis.
I would advice you to start practicing the most submitted problems on spoj and build your
confidence (that is the only way). Visit Sphere Online Judge (SPOJ)
664 Views · View Upvoters · Answer requested by Sanjeet Kathuria
Upvote4Downvote
Share
RecommendedAll
The best way to learn programming is first studying the syntax and then building a project on
that platform. Just think of an idea and implement it. You just need to have questions in your
mind and there are solutions all over the Internet on Stack overflow,blogs,etc.
You will learn a lot more ,find bugs in your code,find new tricks when you try to do project on
your own.
If you want to learn about data structures and algorithms go for competitive coding on websites
like Hackerrank, Codechef,Topcoder,etc.
326 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
Once you master the fundaments, start writing programs yourself. This is one of the best ways to
improve your programming skills. When you write programs, you are putting everything you
learned into practice.
You are also forcing yourself to learn new concepts as you solve the problems in your code. You
learn a lot from your mistakes which is why you should spend a lot of time writing code.
RecommendedAll
Raghavendra Kumar, Experienced with Desktop and Web programming. Dabble in C#, Python,
Haskell
Answered Oct 28, 2016
Originally Answered: How do I improve my programming skills in 2 months?
Since you are already experienced with programming, try and compete on various online code
contest sites like HackerRank, CodeChef and HackerEarth. You could probably start with the
practice sections of the site, try to solve the same problem with various languages and use github
to document everything.
If I were you, and since you have mentioned you are taking a sem off, I would put a target of
around 30 problems a day.
HackerEarth also allows for employers to offer you interviews based on your profile.
Good Luck!
RecommendedAll
There are lots of online coding websites. I prefer Hackerrank, where you can practise a lot of
questions and also you can see what others have written!!. That’s the best way to improve your
coding skills. Compare and code!!
For any practise question, write a detailed algorithm and for each step in the algorithm, google
the steps in the particular language(if you don’t remember the syntax) and execute. After you
finish the execution, see how others have written their code.
87 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
- When you can't find a better way to do it ask someone for criticism.
- Learn new languages that do things differently just to learn to think differently.
- learn libraries and frameworks to be fluent in them. This makes you much faster.
2.5k Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Héctor Iván Patricio Moreno, Software developer, lover of knowledge and science.
Answered Jan 20, 2015
Originally Answered: How do I improve my coding ability?
I have been read books about habits and skill improvement. I have learnt only one thing:
PRACTICE DAILY.
Even if you have little time, you should code everyday in order to become a better programmer.
Try sites like http://codility.com, About - Project Euler, and Coding Challenges for the World's
Best Developers to find challenges that, practicing everyday, will help you to improve your
algorithm design ability.
772 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Useful advice
The Ultimate Code Kata
Many people relate programming skills with martial arts skills, because both require practices
and passions
966 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
But sometimes that can be hard. Putting yourself in front of a computer with no clue where to go
can be intimidating.
My first couple of Hackathons I went to expecting to meet genius programmers who could teach
me how to build stuff. Instead, I ended up on a team where I was the only "Developer". When
you only have 48 hours to build something that's going to be presented, the pressure is on.
It really helped me force a lot of information into my brain all at once. And we ended up coming
in 3rd! So that was a confidence boost in my abilities :).
Good luck!
869 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
RecommendedAll
Shubham
Answered Apr 30, 2017
1. CODE! Code a lot! There are various online competitive coding platforms like
Codechef, HackerEarth, Hackerrank, SPOJ etc where you can learn and practice
coding.
2. Learn a few programming languages. C, C++, Java and Python would suffice. Learn
these four and practise coding in these languages.
3. Take up textbooks. Follow them thoroughly. If you can get e-books for the languages,
that’s fine too.
4. Watch video tutorials on YouTube to ace your eddiciency, accuracy and speed.
Last but not the least, take part in the various coding events organised by colleges in their tech
fests. Keep on participating. Keep on practising. Keep on learning and one day you will master
it.
Good luck:)
Ss
18 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
RecommendedAll
Palash Kanti Kundu, I have worked with Java/J2EE, Spring, Hibernate, MongoDB, AngularJS,
Bootstrap
Answered Jan 6, 2016
Originally Answered: How can I still improve my programming skill?
1. Try the list here, 2015 //TODO list for Java Developers
2. Once done, try algorithm implementations like Palash90/algorithms
3. Once done, try implementing all Numerical Methods here, C Programming Examples
and Tutorials
4. Solve all the problem here Your Online Code Lab
5. Once done write DB Server/Web Server
6. Once done, build something like the following
a. Palash90 - the open square
b. Folk Tales Collection - Palash90
c. Palash Kanti Kundu
7. Host your own mail like me@palash90.in
8. Build reputation such as palash kanti kundu - Google Search
When you will be done with all these list items, surely your programming skill will improve.
301 Views
UpvoteDownvote
Share
RecommendedAll
This will force you to stretch your comfort zone, your mind and your skills to accomplish the
goal.
Having a real life project is even better. Also, try and find an account-a-bil-a-buddy that will
keep you motivated and in check.
Becoming a more productive programmer is one of the best things you can do for your own
personal growth and freedom. Good luck!!
2.2k Views · View Upvoters
Upvote6Downvote
Share
RecommendedAll
If you want to go into field of web programming start with very simple PHP and HTML then
expand your knowledge in CSS and JavaScript .
If you want to go into software programming start with basic programming languages like
python or C++ the concepts of all high level language like Java , python etc are same only
difference is their syntax so if you master yourself in python , C++ learning other language is
kids stuff .
If you want to make android application or want to target mobile devices in general then start
with Java you can then learn different languages later using concepts you learned in java .
So keeping it short , just choose your field and start somewhere then you would automatically
grow as time passes . And don't just learn try working on projects with what you learned .
Because in the field of programming it's all about how you solve a particular real life problem
and not about what you have learned from theory books !
Hope it helps :)
226 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
A few years ago, I was working on two big projects simultaneously and realized a curious
dynamic. I'd work for several hours on one project then the other, and I repeatedly noticed that
solutions from one project would help in the other. Sometimes, the solution would be a natural
outcome of the design of the project, and with a little tweaking could solve a more elusive
problem in the other project.
As with all learning, assimilate new knowledge by relating it to what you already know, thereby
expanding your skills and understanding. The same goes for peogramming.
I've said this in other posts, but I highly recommend having an actual project to finish rather
than engaging in pure studying of knowledge that you MIGHT need later. If you relate your
learning to a real problem as you struggle through it, then you're more likely to remember the
lesson and apply it to other areas.
863 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
There’s no one “best” programming language, and once you’ve learned one, it’s fairly easy to
pick up another, so don’t get hung too up on choosing your first language. That said, some
languages are more beginner-friendly than others. The language you choose to start with might
depend, again, on your purpose.
when you’re reading a programming tutorial (or book), it’s easy to look at the sample code and
say “I get it, I get it, that makes sense”. Of course, you might get it, but you might not get it, and
you just don’t know it. There’s only one way to find out–do something with that code.
The software is the most easily changed machinery on the planet. You can experiment easily, try
new things, see what happens; the changes will happen almost immediately, and there is no risk
of death or mayhem. The easiest way to learn new language features is to take some code that
works one way and change it.
3. Take up Challenges/Games
Code challenges and games are another form of learning you can find on the internet, for those
who like their learning to be a bit more fun. Code challenges and games are great if you’re losing
interest and want some more fun.
Also, because there are other coders writing the same code, you get to see all their different
methods and perspectives. You can have them critique your code, and look at theirs to see how
they did things. For the same reason, you get to meet lots of other like-minded coders.
The programming community is full of people who are willing to help the next generation of
programmers. Finding a right mentor will enhance your coding skills, you will have an exposure
to how others are coding. Even just planning to teach what you’ve learned can help you retain
the information better.
5. Use the Online Resources
If a particular concept doesn’t make sense, be it in your code, in a textbook maintain your
confidence and look for alternate online resources to learn the same content. Everyone learns
differently, and just because one source doesn’t make sense, doesn’t mean there’s something
wrong with you.
It means that you’re not clicking with the delivery of the material. The online resources to learn
computer programming are endless, and there’s always a reddit post, youtube tutorial, or blog
explanation that will make the material-at-handcrystal clear.
A lifesaver for many programmers is the code debugger. A debugger will allow you to step line
by line through a piece of code. It will let you see the values of variables, and whether the code
inside an if statement is executed. A debuggercan help you quickly answer questions about what
your code is doing. The first time you learn about a debugger, it will take you longer to fix the
problems with your code. After the tenth or so bug, it will really start to pay off.
Source: SkillHolic.com - Instructor Led Online Courses | Online Tuition Teacher | Online Live
Tutor | One to One e-Learning
101 Views
UpvoteDownvote
Share
RecommendedAll
To learn the basics concepts, if you complete 4 volumes then I guess you should be a stud by
then ... apply what you learn on some language like C# or Java which is latest ... that will
sharpen your skills... I don't want to suggest any language feel free to choose.
620 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Sumanth Manduru, studies at Indian Institute of Information Technology, Sri City (2019)
Answered Jun 28, 2017
Originally Answered: How can I improve my programming skills?
If One has to become a coder , he must have a command in theoretical knowledge of concepts .
You have to use the theory in every possible manner while practicing . There are many online
sites available for coding practice.
If You don't know anything about the computer language , you can go through code academy
first . After that U practice in HackerRank . There are several problems in each concept in
HackerRank.
After all , you make sure to participate in Contests being conducted by HackerRank or Code
chef.
199 Views · View Upvoters
Upvote4Downvote
Share
You can, of course, help speed things along by reading some well-renowned literature on the
topic, reading through other people's code, and maybe even taking some courses, but none of
those are good substitutes for actually writing code.
Not just lots of code, but varied code, too. A life spent writing single-threaded console
applications will make you a master of those, but useless at multi-threading, working with GUI,
etc.
Probably most important: work on fun projects. It's extremely hard to find learning
opportunities rewarding when the target project is utterly uninspiring!
369 Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
Vishnu Raj, works at Kochi, Kerala, India
Answered Mar 10, 2015
Originally Answered: How can I improve my coding skills?
1. Analyze the problem clearly
2. Think twice about how to solve that problem
3. Gather complete requirements.
Take the time to write down what goals the end product needs to achieve, and who your user
base will be. Clarity of thought at this stage will save a lot of time down the line.
4. Write a thorough implementation plan (or model).
For something small and self-contained, this might be just a basic flowchart or a simple
equation.
For larger projects, it helps to break the job into modules, and to consider the following:
What task each module must perform
How data gets passed between modules
How the data will be used within each module
Although gathering and planning requirements can be tedious and much less fun than diving
straight into coding, it is even more tedious to spend hours debugging. Take the time to design
the flow and structure of your program correctly up front, and you may even spot more efficient
ways of accomplishing your goals before you write the first line of code!
8. Test everything.
Start by testing each module on it's own, using inputs and values that you would typically
expect. Then try inputs that are possible but less common. This will flush out any hidden bugs.
There is an art to testing, and you will gradually build up your skills with practice. Write your
tests to include the following cases:
Extremes: Zero and beyond the expected maximum for positive numeric values, empty string
for text values, and null for every parameter.
Meaningless values. Even if you don't believe your end user would input gibberish, test your
software against it anyway.
Incorrect values. Use zero for a value that will be used in division, or a negative number when
positive is expected or when a square root will be calculated. Something that is not a number
when the input type is a string, and it will be parsed for numeric value.
You can take an active role in improving the clarity of the process by presenting your
requirements documentation or your implementation plan well before beginning to code. This
will help to ensure that what you are planning to create is actually what's been asked for.
Structure the project as a series of milestones with a demo for each block, and manage the
process one milestone at a time. The fewer things you need to think about at any given moment,
the more likely it is that you will think clearly.
Start by displaying a square and getting it to follow the mouse; i.e., solve movement tracking
alone, first.
Next, make the size of the square relate to mouse speed; i.e., solve speed-to-shape tracking on
its own.
Finally, create the actual shapes you want to work with and put the three components
together.
This approach naturally lends itself to modular code writing, where each component is in its
own self-contained block. This is very useful for code reuse (e.g. you want to just use the mouse
tracking in a new project), and makes for much easier debugging and maintenance.
232 Views
UpvoteDownvote
Share
RecommendedAll
Arnob Sarkar, B.Sc. (H) Physics from Bhaskaracharya College of Applied Sciences (2018)
Answered Oct 27
Originally Answered: How can I improve my programming skills?
Yes. This is one of the frequently asked questions. Even my friends used to ask me this. From my
experience, if you follow these steps, you may improve your programming skills.
1. Understand the problem first and try to imagine it. If you understand any
given problem, then half of your problem is solved.
2. Try to do it in a paper first. Study says that, if you really need to understand
anything, you need to make it understand to yourself first. Use a pen and paper and
scribble whatever comes in your mind related to the problem. Also, you will know your
mistakes from your handwritten document, rather than from the typed program in a
PC.
3. Be sure to dry run the program on the paper itself. If you have written a
program in a paper, first conduct a dry run. Dry run is actually a way of testing the
desired results from the program in your mind without the use of computers.
4. At last, open an editor or an IDE and type the program. Use the required
editor or IDE to run and test your program.
Go step by step and you will becone a pro in programming.
93 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Edit: I was very slow in beginning I couldn't figure out anything. Then I could do a div 2 250
here and there, I was getting the knack. Its like enlightenment. You cannot learn it, you can only
feel it. oa12gb of topcoder said he does 8 div 2 250s per day. That time I was shocked. But after
few days I myself started solving many problems. For me this happens at every level div 2 250,
500, 1000, div 1 500, while learning recursion, dp, graph. That is how it is. At first you will be
able to solve here and there and then you can solve all one after another.
926 Views · View Upvoters · Answer requested by Nitin Khare
Upvote9Downvote
Share
RecommendedAll
Josh Osborne, Programming since '81. Apps, OSes, device drivers, microcode and the odd ASIC.
Updated Jan 16, 2017
Originally Answered: How can I be a kick ass programmer?
A lot of suggestions are necver stop learning and code in your spare time with libraries and
concepts you don't use in your day job. Those are great suggestions. I have one to add.
Try to make sure you understand the problem that your code is intended to solve. At a small
company (or a good big company) that should let you redefine what the software is expected to
do to more closely match the problem. In some cases the is the difference between a successful
and failed project. In other cases merely between code that gets used and code that gets avoided,
or between code that gets used and code that gets reworked to do what it should have done in
the first place.
If you can't change the spec you can (a) document what you think should have been done, and
(b) when possible try to make the system flexible enough to quickly “fix” to do what it should
have in the first place.
Over time your dissenting position on the design should be respected more (and you will believe
it yourself more as well). Or worst case you will come to believe it more and head for a job where
it gets trusted.
Great developers do more then write code (as enjoyable as it is), they write code that does solves
problems for people.
178 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Ian Brown, Senior software developer, jack-of-all-trades programmer
Answered Jan 5, 2017
Originally Answered: How can I be a kick ass programmer?
Explore writing your own applications/apps/libraries, etc. - do home projects. Look into
contributing to open source projects. See if you can find other, especially better programmers, to
collaborate with.
Becoming good requires experience, especially across a broad range of environments. Perhaps
you should look for a job that gives you such an opportunity - working for a company that does
development for other companies is a possibility. Looking for places that want people interested
in learning new things is another.
You definitely want to get opportunities to work with more experienced people. See how they
think when they design and code things, and get them to review your designs and code. You can
also get better by trying to help junior developers as this can get you to examine your own style
and tendencies.
510 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
RecommendedAll
Nagaraju Vuppala, Software Engineer at eBhashasetu language services pvt ltd
Answered Sep 23
Originally Answered: How can I improve my programming skills?
I will divide learning programming into two:
1. Learning syntax: Syntax would be harder initially. Once you get familiar with any
syntax you can literally play with it. If you practise enough syntax is just like abcd of
programming.
2. Logical thinking: Syntax alone will not make a good program. You need to develop
logical thinking. How would you do it? Write algorithms for the program you make.
First attempt would be to complete the program in whatever technique or logic you
build. Then identify areas where you think you can improve. Break the problem into
smaller chunks and resolve each one and then integrate.
Happy programming.
263 Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
Mitesh Mahera, B.E. Bachelor of Technology in Electronics and Communications Engineering &
Embedded Systems, North Mahara...
Answered Dec 30
Originally Answered: How do I improve my coding skills so I can crack company interviews?
You have to prepare well about any language and have to learn that how to use all variables, data
types, functions everything deeply. Firstly study all basic concepts about your choices language
and try to understand that how to use it.
67 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Take some really challenging problems and try hard to get results. After a lot of thinking and
debugging multiple errors you may get the output.
Then go through the code again , this time try to use a different logic , syntax or keyword which
will help reduce the number of machine cycles or take lesser memory.
Again go back to books and online resources to learn new disciplines which will make you a
smarter programmer.
Also make a habit to write comments , this will help others or even you understand your code.
The satisfaction you get after getting the correct output of a really challenging problem is just
amazing.
163 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Also try Data Structures and Algorithms, this will help you to think in different way
You can start practising from HackerRank, take a 30 days challenge, it will help you a lot.
89 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Sunil Lulla, Software Developer at InterviewAir (2015-present)
Answered Dec 23, 2015
Originally Answered: What are the ways to improve coding skills?
Start practicing regulary...you will be pro in few months.
When I was learning programming websites like codeshef,hackerearth etc were very tough for
me so what I did was. I regularly learn a topic in maths like Pythagoras theorem,distance
between a line etc and I started implementing those topics in programming which was very
helpful for me in programming as well as in maths also.
After that when I get command over some languages I started developing projects for my day
today activities.
366 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
1.) Data Structures - Whatever the programming language be , one thing that you will always do
with your code is interact with data in one form of the other. It really helps if you can visualize
how the data is held in particular data structure.
2.) Manipulating Data Structures - You need to learn various techniques of manipulating data.
There is a reason why all those different type of Sorting and Insertion techniques are taught at
school level.
3.) Do not start with a framework - Learning Python ? do not start with Django, Ruby - not with
Rails , Php - not with CodeIgnitor . Frameworks do things under hood and gives you false
confidence that you know how stuff works.
4.) Write a framework - What do you do when you learn a new language ? You write a
framework. !
371 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
You see, unfortunately, unlike video games, we do not have a power-ups where we can boost up
our skills just by one press of button. Nor do we have cheat codes. Perhaps, that’s what
differentiates real world from the virtual.
Don’t worry if that philosophy made you feel sick! All I want to say is emphasize on practising.
Many researches have concluded that humans learn better by doing. So open up an IDE or text
editor and hit some keys.
However, I'll say that honing your coding skills and landing a good job are two different aspects.
For landing in a good company, you’ll have to focus on building more projects. More and more.
That’s what builds up your profile. Because there’s a difference between mastery and experience.
Making projects will help you gain the latter, which apparently is valued more. So learn the
basics of programming, learn syntaxes for a few languages and finally build projects.
programming languages are your tools. Make something from them!
177 Views
UpvoteDownvote
Share
RecommendedAll
Pick some problems and solve them. If you fail, try again or lower the difficulty. Websites
like LeetCode can help you with this. If you are learning problem solving through your first
programming language, most tutorials should have good examples for you to practise.
If you want to improve the style of your code, I highly recommend Clean Code, as it truly
shifted mine.
Good Luck :)
129 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Firstly you need to build your own confidence in your own abilities. You can only go so far
following along with tutorials online. You need to build something of your own. In many
professional settings you don’t want to reinvent the wheel, but it can be helpful for a learning
exercise. Build your own blog in PHP, build a JavaScript plugin, get a feel for how these things
work, so you’ll have the confidence using pre-packaged applications and plugins in your job. Fail
fast and often.
Don’t feel obligated to finishing your practice projects either if you’ve felt you’ve learnt what you
wanted to, things can get boring if your goal of learning a particular thing has already been
accomplished.
Now you’ve practiced, it’s time to actually use your knowledge and create a project and share it
with the world.
Is it a web site? Is it a mobile app? Is it a Ruby Gem? Seeing people use your code in the real
world gives you more confidence. For my first project I built a Ruby Gem, not because I had any
real use for it but because I saw it didn’t exist yet. I released it and didn’t expect anything of it.
When I got a tweet thanking me for it and it was being used in a production site it gave me a
great confidence boost.
3. Contribute on Github
Contributing to other Open Source projects on Github can be a great way to get additional
experience and confidence. You can learn from other’s code and feedback on your commits.
Your contributions don’t even have to be in code. You can modify a wiki or update
documentation. This shows you understand the code and can articulate how to use it!
Give it a upvote if you find it helpful and follow for more such answers
11 Views
UpvoteDownvote
Share
RecommendedAll
1. Focus on breaking problems down into small pieces and developing incrementally so
you can execute your code often. This allows you to test code and get feedback quickly.
Since you will only add a few lines of code between each execution, it’s easier to locate
errors. Getting a small thing right and seeing your code working acts like a reward and
keeps you motivated.
2. Pair programming - 2 coders, 1 computer. Ask each other questions as you take turns
writing the code to understand the approach. As you explain, you get a better
understanding what you’re doing and why.
3. Learn a new programming language every year. You get to re-visit old concepts and
discover new ones as different languages make some coding techniques easier than
others.
Bonus tip: Prefer writing simpler code over clever code. Code is written for humans to read and
understand, and only incidentally for machines to execute. Writing complex code does not mean
you are skilled.
81 Views
UpvoteDownvote
Share
RecommendedAll
General learning of frameworks and languages are essential than information of only
one language. A good programmer knows and is keen on learning diverse
programming languages, particularly if languages are continually evolving.
Set aside the opportunity to record what objectives the item needs to accomplish, and
who your client base will be. Clearness of thought at this stage will spare a great deal of
time.
A coordinated effort is critical to creating coding abilities, so jab around other
individuals' code and make sense of what it does. Open source activities can be a
fabulous approach to begin taking a gander at the code that you have not composed as
a programmer.
Code reviews are gainful for code quality as well as for expert advancement, as it
powers the programmer to consider decisions they are making amid usage.
Keep keen attention to every thread you write. This will upscale you to a super
programmer and makes you stand out from others. What more, your programs will be
Bug free.
Think out of box, try indexing or doing hybrid programs, you will get stuck in the
starting. But you will get to try a different way and sure in future you will use the logic
to code.
Ineffectively built code is typically simpler forthright;however, you wind up paying much more
in long haul costs when the code is questionable, hard to comprehend, and costly to
troubleshoot. Thus, make sure you follow all these industry specific guidance.
Finally, get into professional colleges/schools which brings dynamic learning environment. One
such I could recommend is Holberton School.By enrolling there to learn the programming is
one of the best way. Here the curriculum carries a two-year program that includes intense
training on software engineering fundamentals -9 months, internship-6 months, and on-site or
remote study in specialization of your choice. They help you become a complete
programmer.Happy coding and All the best.
411 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Programming takes logic and math. It takes thought, trial and error. There is so much out there
and so many ways and many languages that to be proficient in all of them is pretty much out of
the question.
It depends on what you want to do. Do you want to program 3D games? Business applications?
Medical? Maybe utilities like editors and code libraries?
When I started in 1977 with my first computer, the TRS-80 Level I, Model I with a whopping 4k
of memory, a speed of 1Mhz, and a cassette tape data storage; I learned how to optimize code,
learn Z-80 assembly, how to embed machine code, tighten loops and so-on. Most everything at
that time was written in BASIC. I did later upgrade it to a Level II with 16k.
But I made business applications on a Model III with a 10MB hard drive and 48k RAM. They
worked well considering it all. Programming these days is more difficult although I would have
expected it to get easier over time. There is a lot of hype about OOP (Object Oriented
Programming) which I can and have done. But back in 1981 when I sold my first system, it was
in an interpreted procedural language and worked well.
I guess what this boils down to is that you have to practice. You start programming the simple
stuff and from there you improve on it. Add more stuff to it. One day you’ll find that program is
quite remarkable and you’ve learned so much from doing it.
115 Views
UpvoteDownvote
Share
RecommendedAll
1. Practice
2. More practice
3. More practice
4. More practice
5. More practice
6. More practice
7. More practice
8. More practice
9. More practice
10. More practice
11. More practice
12. Continue…
Definitely Your programming skills improve in short time.
547 Views · View Upvoters
Upvote6Downvote
Share
RecommendedAll
For some people this could be a game. For others, a scientific tool, or a web-scraper, or a
program to cheat at FourSquare ;)
Louie Dinh
What if you can't pick a project that excites you enough to keep you up at night?
Yeah! I agree with Safdar Sulthan Khan, Practice is the most important factor for improving
programming.
There are many online platforms which are good for programming like Hackerrank, CodeChef,
SPOJ and many more. Just make an account and kick-off from basics.
Best of luck....
307 Views
UpvoteDownvote
Share
RecommendedAll
Varinder Singh, Student and Web Developer ! I love to share !!
Answered Feb 21, 2017
“ Practice makes man perfect “
You must practice of coding everyday. Moreover, you can watch online tutorials for improving
your programming skills.
RecommendedAll
RecommendedAll
Renjith VR, former Software Engineer - Web and Backend at Mobiotics (2015-2016)
Answered Jan 4, 2017
Originally Answered: How do I develop programming skills?
If you are not good at programming and you want to be a software engineer/programmer, then
you have to practice coding multiple times.
For example .
How While/For Loop is working?
Programming is a step by step process. So write code step by step. First learn the core part
of the preferred programming language. Then try with multiple practices. Don’t skip if you got
some bugs. Try till you fix the bugs. If you fix the bugs, you will get confidence.
Google for good tutorials. I recommend you try with some printed books or online pdfs. Read
and do practice. Don’t copy-paste code.
Then pull some open source code from Github (I hope you know about version control, if not
learn it)
Analyze the open source project . Their coding standard. Their architecture.
All these levels should play with Dev testing and debugging. It is mandatory.
221 Views
UpvoteDownvote
Share
RecommendedAll
Shruthi Malligonda, Work, courage and hope, make me good and help me cope!
Answered Jul 15, 2015
Originally Answered: How can I improve my programming skills?
Don't lose hope see Coderbyte | Programming Challenges. This site provides lots of
programming exercises for your practice. Questions here are categorized into different levels
based on difficulty. Register with the site and start coding from beginner level.
Hope this helps :)
All the best and enjoy coding :)
279 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Good luck !
2.9k Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
RecommendedAll
1. Practice makes a man perfect: unless and until you utilize and practice your skills there is
no meaning to knowledge you have attained so far.
2. There is no shortcut to success: you need to clear you basic fundamentals first in order to
become a good programmer. Take reference of some book if you need one.
3. Ask for help: There is no harm in asking for help or asking to repeat the thing if you have
not understood at first place. Remember the stupidest question is the question that has not been
asked.
4. Repeat step 1 until to achieve your destination.
196 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Anvarzhon Zhurajev, I’m CTO in Tilpy, the marketplace platform for professional photographers.
Answered Jul 2, 2017
Originally Answered: How do I develop programming skill?
Like anything else. By learning and practicing.
If you are totally new to software development, I must warn you that there are millions of
different applications for programming. Programming for mobile is different from programming
for servers. You can call programming writing a simple JavaScript for your Wordpress theme,
and you can call programming creating a brain for nuclear power plant near you.
So, if you are about to dive into the subject, please decide for yourself what is your desired area
and then pick up the skills that are required in this area.
Of course, the theory is the same underneath, and knowing all the algorithms and patterns helps
everywhere. Still, the skills can vary significantly depending on what you want to achieve.
179 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
In public school (at least in the United States) there is the lettered grading system: A's are best,
B's are passing with some difficulty, C's are technically passing but with struggles, D's are almost
passing, and F's mean "failure". The problem is not that the student is stupid, but because
he/she needs either more time to learn the material, more practice, or to be taught a different
way. Yet because of the way school is set up, students who don't match the cookie-cutter
expectations are made to feel like failures, regardless of how much effort they put into their
work. (This is a massive generalization but mostly valid).
Rant aside, you seem to be dealing with a similar problem here. It isn't that you suck at coding,
as you can write the pseudocode well, but your knowledge is lacking perhaps on language
features or you missed an odd case. Guess what? This is part of the life of a programmer. You are
always learning new features in a language, or new ways of thinking about something.
Also, in my experience, most of your development time is spent on solving bugs. No one writes
perfect software the first time through. There are always going to be bugs in a program. Even
some coding practice puzzles. I've had to change a couple of things - or even all of my code -
because I missed one out of 15-20 cases. Do your best to write code that covers all of the bases,
but if you miss something, take it as an opportunity to learn, not as a personal failure.
I'm saying this after spending most of my life in utter perfectionism. Even now it's hard to
remember my own advice on viewing things as learning experiences - I see them as failures
instead. But I've also learned that my failures hold me back, they limit me. My learning
experiences, however, propel me forward to a level I hadn't been at before.
So rather than fret over your apparent lack of skill, take the opportunity to learn from your
mistakes. You'll become a better developer and, more generally, a better person.
282 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
RecommendedAll
Johnson Thomas, Professional
Answered Aug 21, 2014
Originally Answered: How can I improve my programming?
You want to be a very good coder,learn the syntax of the language go through the documentation
and do lot of practice coding up things.
But if you want to be a very good in solving real world problems using computers in the most
efficient and systematic way learn Algorithm.
There are multiple courses on coursera on algorithms which beautiful explains what an
algorithm is and understand some fundamental things about computational problem solving.
And when I said Algorithm, if the first thing that came to your mind is that stupid boring thing
that you have to do in class before you actually write that simple code you know, Then you
definitely need to look at the courses above.
427 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Make it a habit to pull all the other changes by your team mates when you get in to the office.
If someone has written a good piece of code, take a deep look and follow.
If some has written bad code, drop a polite email to the person saying it sucks.
1.2k Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
Talk with your senior or a friend who is a good programmer and observe their style of
programming. You could also take a cue from them although it's not mandatory.
Take online courses as that can transform your luxury time into a productive one. Head to one of
these sites and start learning soon.
Coursera
edX
W3Schools Online Web Tutorials
RecommendedAll
Vlad Velici, PhD Computer Science & Deep Learning, University of Southampton (2020)
Answered Aug 21, 2017
Originally Answered: How can I improve my skill set in coding?
I agree with Jason Slavin and Ravi Bhavnani but I would like to add that reading code is
incredibly useful. I’ve said this in a different answer as well.
Just clone a (well known) project off GitHub and look at how it works. I find it best when I look
at libraries or projects that I currently use. Things make sense faster. You learn various tricks
and ways to solve problems that you wouldn’t naturally come up with.
309 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
To learn effectively practice, you need to work on things that aren't easy for you. Always create a
schedule or structure that you follow.
After all practice makes anyone perfect. The most important thing is to never stop learning. I
think one should always try to make a conscious effort to improve.
I believe on learning one programming language every year systems as each programming
language changes the way we think about programming.
Looking back at the code you have written on the past and realizing just how bad it was. Pair
programming with other programmers might increase the quality of codes, broadened your
horizons and help you work in as a team member.
And finally, reading and figuring out the code written by different people makes you different.
Write documentation for code written by other people this helps in understanding the way other
people think and program.
Explaining something really helps find the gaps in your knowledge. Get involved with open
source projects there so many resources and projects that have experience software developers
working on them.
1.4k Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Like any other skill (cycling, driving, swimming, skating, recognizing side characters from
various TV shows, wine tasting, watching sports and remembering all the stats, organizing your
day, finding out the best prices, mathematics etc.) in life, the skill of programming can be
improved if you have a passion for it, you feel motivated to learn more and you work at it. Keep
practicing it. At some point, a switch happens in your brains, and you start ‘getting it’.
It is like learning music. It is daunting at first, and you have no idea where to begin. And the
neighbors (colleagues) complain a lot. You even doubt if you'll ever grasp it. But if you keep at it,
then one fine day, you just get it. It is just an extension of driving or cycling. And once you enjoy,
keep motivating yourself to read more, leverage other great brains and build upon your
knowledge to keep getting better at it.
208 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
RecommendedAll
Gopi Vajravelu, Software Engineer in Chicago
Answered Jan 18, 2015
Originally Answered: How do I improve my coding ability?
1. Learn to debug.
2. Get feedback from experienced developers.
3. Build a project from scratch.
I wrote a more in-depth article about how to do these things here: How to Become An Advanced
Developer.
986 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Then learn Algos and try to implement them in language you have learnt.
After than try to make some real working project. Don't worry if you cann't make one on your
own idea, most people don't. So just copy one project from somewhere like GitHub or Google it.
Copy it and understand its working.
But don't stop until you are able to make something working on your own, no matter how small
application it is.
370 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Or you can go for app developement for Android/Win/Mac whichever platform you may like.
RecommendedAll
RecommendedAll
You could say that people with Asperger Syndrome and Autism are some of the most intelligent
people that are / have been on the planet, Take Sir Isaac Newton for instance. I won’t go into
everything he achieved… but it’s been written that he had incredible difficulties
Newton was very quiet and not very good at ‘small talk’, or typical day to day conversations. He
was extraordinarily focused on his work and had a hard time breaking away. He was often so
focused that he forgot to eat during these times of intense focus. This is a trait very commonly
found in autistic and this extreme focus often blocks out other things that would likely capture
an individuals attention. Newton was not good at keeping or making friends as he did not
appear friendly, nor did he know how to talk with individuals he did consider to be friends.
Newton also relied strongly upon routines. For example, if he had been scheduled to give a
lecture, that lecture was going to happen whether there was an audience or not
While newton now days could probably write amazing code, he might not have been a good
programmer. You need to listen and talk to people and ‘fix’ things that are wrong. There would
be nothing worse than creating what could in some way be the best piece of code in the world
that would eventually be able to solve world hunger or something, and yet it be stuck on your
computer doing nothing. Then when you’re gone and the pc scrapped that code is lost.
So i guess what Im saying is don’t focus on programming as writing code and not seeing results.
See your performance indicators in how many people you have made smile and thank you for
making their life easier.
When people look at your applications and see what they’re made of all they see is tons of
hieroglyphics that make no sense that when you hit runs… makes something amazing happen.
We don’t see it that way, but that’s because we understand…
and please, don’t measure yourself on other peoples coding ability. Everyone does things
differently. You will be envious of some peoples abilities and those same people will be envious
of some of your abilities. We just never make those things known… maybe we should?
103 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
I would recommend the website HackerRank, as it carefully sets test parameters, forcing you to
use appropriate algorithms - you can’t get away with low level optimizations in most cases. It has
a nice in-browser IDE, so you don’t need any tools locally. Some of the more advanced problems
require you to combine existing solutions, and will have you looking at the cutting edge research
- if you ever hit a pay-wall, use SciHub (there is no shame in pirating research papers as the
original authors get nothing if pay for the privilege of seeing their work).
Now for the latter, these skills are most relevant in the software industry. Sadly most CS courses
these days don’t really cover many of these skills. If you are in college, look for an computer
club/society and get them to teach you. I strongly suggest you get acquainted with a unix-like
environment, such as GNU+Linux (Debian, Ubuntu, Fedora, etc) or a BDS (Free/Net/OpenBSD,
Mac OSX, etc) or even the GNU+Linux userland for Windows 10 (terminal only). If you’re not
ready to take the plunge and install it as your OS if you use Windows, you can run an emulator
such as VirtualBox. However, most GNU+Linux distributions will not overwrite your existing OS
and will allow you to dual-boot. If you have a Mac OSX computer, simply open the terminal (get
iTerm2, it’s better) and download Homebrew - it’s pretty much a package manager, like the one
in GNU+Linux.
Learn to use the your shell (bash, zsh, csh, etc), learn to navigate the filesystem, pick an editor
(nano, vim, emacs, etc). Get used to invoking compilers and other tools from the command line.
This is invaluable if you ever find yourself on a remote server, as you usually only get ssh access.
Download the source of the tools you’re using. If there’s something that annoys you, fix it and
submit a patch to the maintainers.
Learn to use git. Take a look at any project that interests you at github. It might not be that easy
to find something to contribute at first.
Have fun.
230 Views
UpvoteDownvote
Share
RecommendedAll
John Waugh, Know Java, Javascript, and Lua; and, to a lesser extent, C++, VBA, and Python.
Answered Nov 18, 2015
Originally Answered: How do I improve my coding skills?
Participate in code golf (or other competitive programming challenges). This can help you think
outside the box and encourages you to discover new features of your language or languages of
choice.
Source: Is there a practical purpose behind this site or is it just for fun?
(meta.codegolf.stackexchange.com)
683 Views
UpvoteDownvote
Share
RecommendedAll
There are thousands of algorithmic problems, and you can submit your code. You can
immediately check if your solution is okay or not. Your code should 1) yield the correct output
AND 2) fast enough.
This resource was actually used in one of the Stanford classes (CS 97SI) to teach algorithmic
coding skills. I learned so much from it.
You can use the language of your choice, including C++, Java, Python, etc.
Also, you can gauge how difficult each problem is by reading the statistics - what percentage of
submissions were correct, how many solved the problem, etc.
RecommendedAll
RecommendedAll
James Jensen, Four decades programming, 40 years of fun
Answered Jan 9
Originally Answered: How can programmers improve their skill by themselves?
Practice is excellent, but you may wonder exactly _what_ you should practice. For me, that has
always been utilities.
For instance, I wanted to clean up a directory that held hundreds of photos, but only remove the
jpegs, and only those that were older than one year. Yes, I could have gone through the directory
manually or used a tool, but I wrote a little utility that did it for me. The first version of this tool
only printed the files on the console.
Once that was running, I started to add functionality. First, command line parameters. Second,
compare creation dates to modification dates and draw different conclusions (some I edited and
wanted to keep). Third, write a log file of the activity. And so on…
The real learning parts came when I had to figure something out that I had never done before.
Working out the issues on simple tools like the one above adds to your mental toolset, enabling
you to figure things out quicker and write better solutions.
107 Views
UpvoteDownvote
Share
RecommendedAll
Shivam Kapoor, Beneath this mask there is an idea, and ideas are bulletproof.
Answered Nov 6, 2014
Originally Answered: How do I improve my programming skills?
There are already many answers to this question with repeated points.But since I'm asked to
answer this question,I'd say, The keyword is Practice.Take out some time from your daily
schedule to solve problems and learn new things.Move from basic baths problems and after 1
year or so start leaning algorithms and their implementations.This is good enough to start
with.Just be regular and you will surely improve :).If you need any help then post on forums,
make friends,discuss with them,participate in competitons regularly.Good luck.
357 Views · View Upvoters · Answer requested by Nitin Khare
Upvote2Downvote
Share
RecommendedAll
Kushal Garg, Always a learner!
Answered Jun 18, 2015
Originally Answered: What are the ways to improve coding skills?
The only way to improve Coding skills is to Practise.
Once you know basics of any coding language, explore all its dats structures and various
utilities.
To practise, try implementing various algorithms for one particular problem. It helps you to
understand which kind of algorithm is useful according to your program requirement. Whether
your code is Space Efficient, or Run Time efficient, or Easy to debug and vsrious other
parameters.
You can follow various online coding competitions to brush up your skills.
Having done all this and if you are confident, start contributing in various open source projects
available online.
Happy coding!
539 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
RecommendedAll
Also, check my answer: Prabhu Ramasamy's answer to What is the best site to learn how to
code?
RecommendedAll
Willard Torres
Answered Dec 16, 2013
Originally Answered: How can I quickly improve my programming skills?
Probably the most common answer is to keep on coding. Reading can help, sure, but nothing
helps you absorb the topic better than actually trying it out.
Don't be afraid to ask help online, or to search for answers. Despite what I said, reading up on
API or documentation can be a big help.
It also depends on what you want to program. Base the stuff you want to learn from that. Want
to make programs that automate actions? Learn how to do that in various ways. Want to make
games? Do the same. Practice it over and over again until you can code a snippet from memory.
It also won't hurt to read other people's code. You might pick up a thing or two from them (but
in the end, its your thing that matters).
Every time you learn something new, though, don't just store it in your database of information.
Use it, apply it in your projects. You'd be surprised to see that almost all of the things you will
learn will have their significance in your work.
1.8k Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
However, keep in mind that PHP is not the most suitable language to learn
programming apart from everyday web development. If you are planning to get
better at algorithms, data structures, and the more theoretical side of
programming, learn a functional programming language (or if you find that to be
too radical, start with Python or Java).
Back to PHP - Once you are through with learning the essentials - setting up your environment,
learning the syntax, and working with databases, start building web applications that need a lot
of server-side intensive code.
Try building your own chat server, for starters (with just the minimal client side code). In the
process, you'll learn how to manage multiple clients, efficiently manage the requests and
responses (avoid using WebSockets), and also interacting with the DBMS.
After that, you can move on to more complex applications such as a social game. If you are out of
ideas, you always have GitHub.
Good luck!
389 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
I usually recommend a recursive-descent parser. Start with a calculator; that should only take a
day or so. Then expand it to a real language, with compiling to a virtual machine (I suggest a
stack machine).
This is very easy and incrementally rewarding. It also will expose you to a lot of things. I won't
spoil the fun for you, but I will say that immediate evaluation seems great until you get to loops,
and then you will wish you had started with a compiler.
1.9k Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
Jacq Meyer, IT consultant
Answered Dec 12, 2013
Originally Answered: How can I quickly improve my programming skills?
Master your own craft. Never rush on being the best on what you're doing. Learn to enjoy and be
passionate of what you have at the moment. You can start from scratch and know what you do
best. It's like creating your very own project and applying the design and structures you have in
mind and then you polish it until you get your desired outcome. You have it in you, you are a
programmer meaning you are already creative in nature so just learn more about it. Resources
are so near and available so never stop learning. Read, learn and then practice. Plus, if you have
seniors that inspire you at work go ahead and mingle with them ask them questions and learn
from them as well. You'll improve if only you are willing to learn and grow more.
2.1k Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Richard Kenneth Eng, Used Fortran, Tandem TAL, C/C++, C#, Obj-C, Java, Smalltalk, Python, Go
Answered Jan 29
Originally Answered: How can I improve my basic programming skills?
I will echo Jan Michael Hitosis’ answer:
Practice writing software. The more you practice, the better you’ll become. There really is no
other way.
It’s the same as in other cognitive activities such as playing piano and playing chess. The only
way to improve is through endless practice.
122 Views
UpvoteDownvote
Share
RecommendedAll
M.Veera Manohara Subbiah, Developer at Juspay Tech
Answered Feb 28, 2014
Originally Answered: How do I improve my programming skills?
To improve the coding skills first you need to get yourself good in logical skill.
For improving the logical skills try some aptitudes, math logic, etc... try About - Project Euler
these would really help a lot....
841 Views
UpvoteDownvote
Share
Abhimanyu Dogra
pursuing*...
Most of us see the success of an individual but never see to introspect the other side of the story
which deals which hard work,sacrifice ,forming well rounded habits to attain his goal.
once you get comfortable with your progress gradually increase the time.
With continuous effort you will get to see progress rearrange itself in a rapid and astounding
pace.
tip:
Do the same thing everyday at the same time for 21 days and it become a habit.
I write about programming and computer science,if you follow me I wont waste
your time.
232 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Mohamed Nabeel Moidunni, Web Developer or a Learning Web Developer
Answered Nov 3, 2016
Originally Answered: How can I boost my coding skills?
Learn the basic structure of programming languages you like or you wanted to learn. Learn in
such a way that why those particular function or components are used for and what all can be
achieved using the same.
Once you are able to crack that, create your own logic and try to build a small application. Start
from small, that will help you to gain confidence to do more. There is no wrong in googling most
of the stuff but try to avoid that and use your own methods to achieve the same.
Once you are able to solve those problems, eventually you will start exploring most of it. This is
how you choose your favorite area among coding. This will also help in problem solving skills
and also your logical way of tackling issues. This will eventually help you to crack questions
when asked on placements.
34 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
RecommendedAll
Don't "just go code something"—that will almost ensure that you will learn bad habits.
1k Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Try tinkering with things - write small apps or libraries just to experiment, or to address some
mathematic or scientific problem (or assignment) that you have.
The more you do it, the better you will get. Don’t look at it as a chore, but as a challenge. :)
140 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
Akash Gautam, former software engineer at Capgemini India (2016-2017)
Answered Jun 20, 2016
Originally Answered: How do you improve your programming skills?
Programming is not about knowing the syntax of a language, Programming is the ability to
analyze and map problems and then solve it using any programming language. The ability to
solve problems is core of programming and not knowing the syntax although good
understanding of the language makes solving the problems easier. Try to learn as many data
structures as you can as they help in mapping the problems into code . You should also learn
various problem solving techniques like dynamic programming approach, greedy approach etc.
Also remember that problem solving is an art so like any other forms of art like singing or
dancing it also takes time to develop. You can go through the tutorials provided by online coding
sites like hackerearth, hackerrank. There is a section called codemonk in hackerearth where you
will find very good tutorial regarding various data structures and problem solving approaches.
Last but not the least keep practicing regularly with the right approach. Happy coding.
198 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
You can pick a book with tasks like Etudes for Programmers byCharles Wetherell.
You can think about the (boring) things you always wanted to fix and finally fix them.
You can enter some programmer games like CheckiO (this one is for Python and
JavaScript, but I believe they exist for other languages as well).
You can dive into some small open source project or participate in the Summer of
Code.
Finally, you may attend some online courses on selected topic.
But I believe that own pet project prepares you for real workd project in the best wsy. Because it
is real world project and it is yours project.
96 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Dan Paik, Tech Guy
Answered Jan 1, 2014
Originally Answered: How can I quickly improve my programming skills?
Get certified. Most jobs don't care if you're Java certified or not but going through the process of
studying to get certified will help build your core skills.
It's way too easy to get comfortable in a job and become highly proficient at the codebase at your
work so that you can make enhancements to existing code and fix bugs at your workplace. If you
continue with this, you will get incrementally better but your skills in other areas that you don't
regularly use in your day to day job will start to deteriorate.
This is why for better or for worse, most of the big names in technology interview by testing your
core skills.
So again, I recommend getting certified and continuing with a certification process to keep your
core skills at a high level.
1.5k Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
If you do this over a year, you will have another insight and start to understand the core
principles. What is called “paradigm”.
97 Views
UpvoteDownvote
Share
RecommendedAll
Vinay Kumar
Answered Mar 27, 2015
Originally Answered: How can I improve my coding?
Saying is simple but working on it may vary with the think.
First, You need to have a Burning desire. In which all silly reasons which are hurdles to achieve
that desire are to be burnt.
Four, Don't stick to any (one) book which provides Question and Full Coding answer.
RecommendedAll
I run a service that helps people get involved with open source if you don’t know where to
start: Get Started Contributing to Open Source Projects
34 Views
UpvoteDownvote
Share
RecommendedAll
Esfera, www.esferasoft.com
Answered Feb 6, 2015
Originally Answered: How do I increase my programming skills?
Practice makes you perfect.. Lets try these steps...
1.Analyze the problem clearly.
2.Think twice about how to solve that problem.
3. Take the time to write down what goals the end product needs to achieve, and who your user
base will be. Clarity of thought at this stage will save a lot of time down the line.
4. Write through implementation plan or model.
5. If you think that your code might need explanation, comment it. Each function should be
preceded by 1-2 lines describing the arguments and what it returns.
6.Organize your code. Use visual structures to indicate code structure.
7. Organize your code.
8.Test everything. Start by testing each module on it's own, using inputs and values that you
would typically expect.
9.Practice, practice, practice. Programming is not a stagnant discipline. There's always
something new to learn, and - perhaps more importantly - always something old to relearn.
194 Views
UpvoteDownvote
Share
RecommendedAll
How do you expect anyone who doesn't know you to give you advice if you give so little
information?
Maybe you work too much and your brain is becoming dry. Who knows?
If you think your coding skills are going down, you can try several things:
If you practice TDD you will instantly realize you are not making any progress and do something
else.
The next day you will arrive and finish the task that was taking hours in a few minutes.
RecommendedAll
RecommendedAll
Having said that, you can pick up just one beginners book (Complete Reference in Java, or
anything from C/C++). There are plenty of other vlogs (video blogs) which will help you start
and learn programming of your own.
This one is good, but I will still suggest reading one book first.
722 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
You have to keep coding my friend. Day and Night. Day to Night. You have to go crazy coding.
You have to work on problems and then realize you know NOTHING. Then you must keep
working on the problems.
And then at some point you will truly realize you know NOTHING.
Go to github and read code and try to recreate what you see. Join hackathons and go realize
there are far better and worse people than you out there.
But there is only one advice which a very smart professor of mine gave me:
Then keep on hacking away at it. Until you become a programmer. Someday. :)
65 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
RecommendedAll
Umang Maheshwari
Answered Oct 14
There are so many programming skills program in India. India Skill Capital aims to give a strong
platform for improve their skills at centre and state level of India. India Skill Capital as a
platform is really focused on empowering the budding students and candidates & job seekers.
With the assist of this app you will always update with latest jobs in all fields. This is truly very
best app.
Download India Skill Capital app for candidate, employee and job seeker:
11 Views
UpvoteDownvote
Share
RecommendedAll
George Myke, Expert in Mobile Apps Development, Web Design, E-Commerce Portal Development,
Web Development & Enterprise ...
Answered Jul 23, 2014
Originally Answered: How to delibrately practice for improving programming skill?
I think you have to do practice more and more, Follow below points:
Start to learn with basic
Refer lots of Book, Available online (Amazon)
Stick with one language, learn it well.
Read the source code of good programmers/well-written projects on Github.
Learn to document and test your code.
Solve programming puzzles.
142 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
learncodinganywhere.com
215 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
RecommendedAll
Consider that it might someday be run in parallel. Possibly thousands of copies of itself, side-
by-side. Is there anything you've done in the code that'll make that a problem? Consider that
this might be done on one server, or many servers in a cloud. Does that impact what you built?
Consider that it may become part of a larger system, and that larger system might be setup,
installed, activated, then ignored for years and years. Is there anything you've done in the code
that'll make THAT a problem?
Consider the "reader" of any/all error messages, warning messages, etc. that are emitted. Are
you giving that poor soul enough info to figure out what's really gone awry?
Consider the guy who has to pick up and maintain and improve the code you developed. Are
your function and variable names (or object and method/member names) short so it's easier for
you to type them, or are they ACCURATE so it's easy for that person to understand what you've
built?
So... to summarize... the best way to improve your programming skills is to become more
considerate.
Let me give you one simple exercise before I write off...just try to think and observe why value of
PI is 3.14 with one caveat use google only after exhausting all your other options.If not PI think
of something similar to start with.
RecommendedAll
Anonymous
Answered Oct 24, 2015
Originally Answered: What are the ways to improve coding skills?
There are some characterics one learn while coding. Let me try to explain, when some one do
programming they learn to be precise. When someone write code and they introduce syntax
errors than compiler finds those issues and over the period of time, programmer learn precise
syntax and that is why I said presion is one characteristic.
Another characteristic is predictability, where programmer keeps starting predicting of the code
they are writing.
So over a period of time, precision, prediction becomes habits and if you think you can improve
in these, I am sure you can improve in coding skills. Enjoy coding..
572 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
HAPPY CODING :)
163 Views
UpvoteDownvote
Share
RecommendedAll
Stephen M. Bear, Writing software and getting paid for it for over 50 years.
Answered Jan 12
A programmer improves their skills by writing programs. To a lesser extent, reading
documentation and reading code, but mostly it comes down to practice. You don’t have to take a
class to do this, or do it as part of a team — just do it.
A programmer should also know how to write tests, documentation, and code reviews. The only
one of those that requires another person is the code reviews; if you’re not part of a team you
should find a friend to partner up with, or join an open-source project.
a2a
RecommendedAll
RecommendedAll
Mohit Singh, Btech cs Computer Programming & Computer Programmers, HMR Institute of
Technology and Management, New Delhi...
Answered Jan 6, 2017
Originally Answered: How do I develop programming skills?
First refer a good book of whatever the language in which you want to make programs
Then, practice regularly two hours on pc or laptop by writing small program from beginer level
and then go to advanced level. If error comes in your program then it is good first try to solve if
not possible then refer from book, mentor or friends who know the language
86 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
Assuming the project has a community with enough reviewing eyeballs, now you will have to
hold yourself to a higher standard, something different from just submitting functioning code to
HackerRank.
You will have to read the project's source code thoroughly to understand how the big
components work together, follow the style guide which might be incongruent with your habits
and above all, learn to take in feedback constructively.
That said, it should be all fun. Perhaps Google Summer of Code (GSoC) might be of interest to
you?
574 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Rahul Kumar, Know languages like C,C++ and Java.And oops concept.
Answered Jan 22
Originally Answered: How do I improve my programming skills?
Programming is overrated as the hardest thing rather it is quite easy. The problem is that while
programming we just think too much about the programming not the algorithm ,this makes
things difficult for us. While programming start with basics and always think in your language
how will you tell someone who don't know how to do something and then replace those ideas
with programming concepts. That way you cam create algorithm and once algorithm is created
programming becomes easy.And in beggining you have to practice a lot to develop your thinking
that way. So after a while you will find that algorithm will be created automatically in your mind
when you will see the problem.
61 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
You need some personal projects, you can test yourself and challenge yourself with different
programming problems.
In addition, you can go to some websites, where you can practice algorithm programming. That
will improve your logical skills and thinking.
Cheers and happy coding,
Florian
59 Views
UpvoteDownvote
Share
RecommendedAll
Whenever you have an idea you want to program, go for it. Even if you have something you leave
in a half-finished state, you still can take something away from it. Try and play with ideas that
push you out of your comfort zone and practice in areas you aren’t entirely familiar with. If you
only know object-oriented and/or procedural programming, try learning a new paradigm, like
functional programming. Never stop trying to push your own limits. Reading can help, but will
only get you so far if you never try testing out your new knowledge for yourself.
217 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
First is Practice- Try to practice a lot. But in the right manner. Try to start coding using pen
and paper and create layout for the problem and what you will be doing instead of directly
jumping over to the computer. Also try to mentally achieve this habit of problem solving and
thinking how you will solve this problem in codes.
The next thing is Creativity. I really believe that Coding is an art and thats why you are an
artist. 1f you restrict yourself to a small type of problems then you will be master of that
particular problem but achieve nothing else. So try to get inter3esting and new kind of problems
and try to solve them.
So to summarise this I would say - Practice a lot. Solve many creative problems as you can find
them.
Bonus Tip: Try to complete some projects. The scale of project depends upon your skills. From
a fully functional scientific calculator for a beginner to a basic version of Internet Browser. Try
anything you want to begin with.
89 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Sameer Vaish, ORACLE PACKAGE SOLUTION CONSULTANT at IBM Global Business Services
(2013-present)
Answered Apr 1, 2017
Originally Answered: How do I improve programming?
When you are saying how to improve i assume you are already aware of programming and like
it.
So if you want to improve it you have to religiously do at least 20 programs per week and start
reading good Algorithms ,networking and data base books.
5 Views
UpvoteDownvote
Share
RecommendedAll
261 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
After learning which are the new trends in industry try to modify your code according to it.
Read about design patterns, best coding practices, pros and cons of different architectures and
find out your business logic requirements, So how you accomplish that with new and
manageable coding practices.
Try to download some other developers code from internet and figure out how they write and
manage it. After writing code discuss it with your seniors and ask theme to advice for better.
80 Views
UpvoteDownvote
Share
RecommendedAll
You can do toy projects - they are mostly useful for getting familiar with particular algorithms -
go to something like hackerrank or checkio.
347 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
RecommendedAll
Anonymous
Answered Jul 23, 2014
Originally Answered: How can I improve my programming Skills?
Start doing competitve programming on websites like Sphere Online Judge
(SPOJ), Programming Competition,Programming Contest,Online Computer
Programming(Codechef), Codeforces, etc
These sites will really help you in improving ur programming skills.
when you have any doubt ask question on Stack Overflow.
217 Views
UpvoteDownvote
Share
RecommendedAll
Also you can refer to answers to Where do you go to read good examples of source code?
113 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
Cooper Pei, Security engineer & Software engineer
Answered Mar 18, 2015
Originally Answered: What can I do to increase his/her programming skills?
Ask him/her to think about any requirement around himself/herself, and try to solve it by
writing a program in his/her main programming language.
I ever attended a boring meeting in collage forgetting shutdown my laptop, so I tried to write a
program with controlling PC remotely.Actually I finished it though email media by
programming allnight.
277 Views
UpvoteDownvote
Share
RecommendedAll
Get code quality check from experienced guys. Also, think again to reform your code to align
with best practices. Go through the code that experienced developers have written, this will
teach you about their thought-process.
354 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
The best way to improve is to shred the entire system to pieces and build it all up
again.
I am not joking.
If you say that you wish to improve, I would assume that you already know how to code.
Go online, select an algorithm that interests you. Start implementing it. This is the best way to
improve yourself.
P.S. I apologize that this answer is not properly formatted or written with a structure that I
usually follow. I was traveling when I read this request, and this was the best I could type in,
while in a crowded train. I shall edit it, if need be!
RecommendedAll
RecommendedAll
71 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
RecommendedAll
This question is already being asked on Quora, please follow this link
http://wiki.c2.com/?HowToImprove...
Thanks
136 Views · Answer requested by Pancham Kumar
UpvoteDownvote
Share
RecommendedAll
Simsarul haq Vengasseri, Currently second year Btech student in Computer Science and Engineering
at National Institute of Technology...
Answered Apr 20, 2015
Originally Answered: What can I do to improve my programming skills?
Start solving problems (Mathematical , physical or whatever ... )
As Programming is nothing but problem solving. (Programming languages are generally not a
barrier).
Advice : While learning try to follow Straight paths. Shortcuts usually misleads.
RecommendedAll
Kuo Zhang, Phd student, interested in machine learning and distributed system.
Answered Jul 24, 2016
(1) keep thinking before/while you are coding. (try to figure out the best way to solve your
problem)
(2) reading good codes, try to understand why they code that way
123 Views
UpvoteDownvote
Share
RecommendedAll
Snehil Shrivastava, I love computer science
Answered Apr 20, 2015
Originally Answered: What can I do to improve my programming skills?
1) Coding, Coding and Coding
2) Reading books
3) Contributing to Open Source, Signing-up mailing lists
4) Practising data structure, Algorithms and Design related problems
5) Talking to fellow programmer
6) Reading code
7) Reading good blogs
8) Participating Stack Overflow and forums, Commenting in Blogs
9) Doing code review
10) writting unit test
87 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
RecommendedAll
Naveen Sharma, studied Post Graduate Diploma in Computer Applications & Computer
Programming at S S Jain Subodh PG College...
Answered Sep 28
Originally Answered: How can I improve my programming skills? Are there any tips?
1. First of All make strong your basics directly do not jump into making programs.
2. After that try and practice to make as much programs you can.
3. Practice daily, it,s not how much you code everyday it,s how may days you can code
always be consistent and regular.
4. Do not loose hope, if you get stuck this is a programmer,s journey and enjoy this
journey…….
All the Best……….
73 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
RecommendedAll
Vyas Madhuri
Answered Dec 23, 2015
Originally Answered: What are the ways to improve coding skills?
Coding is like Journey which never ends, but it require some patients and commitment. You just
need to develop habits of reading technical blogs everyday,try to do as more as code. By doing
practice of coding will definitely improve your skills. That is my experience. I hope this will help
you .
12 Views
UpvoteDownvote
Share
RecommendedAll
Aman Sharma, BE Computer Science from ITM Universe Gwalior, Sithouli Campus (2020)
Answered Jun 23, 2017
Originally Answered: How can I improve my coding skills and amplitude?
You can check my answer on this same question:
Aman Sharma's answer to How can I improve my programming skills I have just started?
291 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Bill Billson
Answered May 19, 2017
Originally Answered: What are the best ways to improve my programming skills?
By programming.
This answer may sound simplistic or even facetious, but it is not. In my experience, the best way
to learn how to become a better programmer, is by doing. Dig in, get your hands dirty, force
yourself to do things outside your comfort zone, learn new methods, and solve new problems.
Think of a program that would be useful to you personally, or a family member, or colleague,
and try to make it. Have you ever created a back-end for a website? If not, try. Have you ever
created a desktop application that interacts with a database on a remote server? If not, try. Have
you ever coded a simple video game? If not, try.
Think of things you don’t already know how to do, and try to do them. You’ll get it wrong, you’ll
fall into a minefield of bugs, you’ll realise you took completely the wrong approach and should
probably start over. And you’ll learn. You’ll learn tons.
64 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
RecommendedAll
Omprakash Sridharan, B.E Computer Science, Anna University, Tamil Nadu, India (2018)
Answered Oct 1
Practice from the basic problems. Master the important algorithms. Use pen and paper or any
material you are comfortable with to devise your own algorithm by using the mastered ones as
the building blocks. Make mistakes only for learning. And finally it's not wrong for you to refer
for solutions but refer if your can't proceed any further.
RecommendedAll
15 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
Anonymous
Answered Dec 18, 2013
Originally Answered: How do I improve my programming skills?
PRACTICE
There may come lots of good advices- do that , do this!
But the single best advice that i can give you- PRACTICE , PRACTICE, PRACTICE n
PRACTICE!
Pick up your choice of language - select a recommended book ( dont get overconfused with
books-follow one) - watch video tutorials if possible- Keep practicing! Happy CODING!
378 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
Anonymous
Answered Apr 29, 2013
Originally Answered: How can I improve my computer programming skills?
This may sound strange, but you should watch people stream from sites like Twitch. There, you
have access to a lot of programmers who are mostly willing to help, and you can also learn better
programming skills and tricks from the person actually streaming.
1.4k Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
1. Hacker Rank
2. Hacker earth
They are two good web site which can hence your coding skill through various hackthon and
practice question.
10 Views
UpvoteDownvote
Share
RecommendedAll
Gilbert Duy Pham Doan, Learned basics with Julie Zelenski
Answered Oct 28, 2015 · Upvoted by Jessica Su
Originally Answered: How do I improve my coding skills?
Like your natural language here, English, you should: read, write, and practice programming or
"coding". As a general heuristic, you should read work by the masters, such as that book about C,
or any source textbook by the inventor of such languages. But as a beginner, like reading
Shakespeare or Thoreau, you may need to read more basic texts, like instruction books for a
primer.
Furthermore, you should practice frequently, to ensure that your comprehension is accurate,
and that your program will actually run error-free, if you can identify bugs. Lastly, you should
write about codes too, in plain English, or even talk about them. This will allow you to explain
your codes to people, and not just computers.
363 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
7 Views
UpvoteDownvote
Share
RecommendedAll
Prakash Hari Sharma, Read, Read, Read: Readers are Leaders / Leaders are Readers.
Answered Jun 1, 2015
Originally Answered: How do I improve my coding skills?
For most skills you need to learn, there are four steps that will help you become an expert. Most
often you will go through these steps in sequence, yet with iterations up and down the steps on
the way too. Here they are:
Learn it
Do it
Discuss it
Teach it
RecommendedAll
RecommendedAll
In Internship Program, you can join the live projects through which you will face run time
experience and naturally improve programming skills.
67 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Bob Robinson, Project Manager
Answered Aug 22, 2017
It is not possible to master everything in programming. But you can do better than others by
learning something new to help to program better. Refer these 20 tips to Boost Your Web
Programming Skills .
12 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
Mayank Chutani
Answered Dec 2, 2014
Originally Answered: How should I improve my coding skills? I’m a 3rd year student studying IT and have basic
knowledge in C, C++, Java, J2EE, and html. I'm currently learning CSS and JavaScript. Should I participate with
online contest sites? Which site is the best?
Just read basics of computers for your placements..
If you are good at C then go for implementing data structures and algorithms through it. Try
some coding platform like codechef to learn better.
Read database and networking side by side and since you have 8months,make a solid project.
375 Views
UpvoteDownvote
Share
RecommendedAll
Arjun M Das, Anything small s always precious.....oh crap!!!
Answered Dec 1, 2014
Originally Answered: How can I improve my computer programming skills?
I think I have already answered a lot of similar questions. Anyway, sharing a link that might help
you:
http://discuss.codechef.com/ques...
RecommendedAll
2) Follow the coding standards. You can use the following link for coding standards
1 View
UpvoteDownvote
Share
RecommendedAll
80 Views
UpvoteDownvote
Share
RecommendedAll
I will prefer you Codecademy for better results. I am impressed from it, you must also try it
once.
56 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Entiol Liko
Answered Jul 21, 2017
Practice.
If you know a programming language you should just start practicing. Start different projects.
Anythink you can think, you can do somethink you have always wanted, you cn do somethink
that would help you in your everyday life etc. The most important think is to always practice,
also continue reading books, not only for you language but also for algorithms and different
concepts.
How do I learn competitive programming as a beginner?
This question previously had details. They are now in a comment.
Answer
Request
Follow1.4k
Comments4
Downvote
Share
95 Answers
I started playing video games when I was about 8 years old. My aunt purchased a Super
Nintendo console for my birthday. I never tired from the fun filled adventures on the screen. It
transported me to a world outside the domesticated, friendless, public-school life I lived. I
played with my neighbors. I played with my cousins. I played mostly by myself.
I liked winning, probably because I was a geek, a no-life, loser by my peers' standards. When
Super Smash Bros. was released I played against everyone. I lost much more than I won. I still
play the newest version and compete in tournaments.
Getting to world class, competitive level in a mind sport takes two things. Take chess for
example. James Altucher, a chess master, explained that you need to focus on repetition and
work slowly to succeed. This is because of the way human neuro-biology works.
Laszlo Polgar, despite knowing little of chess, decided along with his wife that they would run an
experiment with the raising of their kids. They had 3 girls. All 3 of them became known as some
of the most talented chess players in the world. This was no coincidence.
Polgar collected the games of the chess grandmasters of the past and put together a list of the
critical game moves. He put them in a book called Chess: 5334 Problems, Combinations and
Games. Importantly, he organized the problems by type. He says to move quickly. Fail fast. Try
to solve each problem in minutes or else see the answers in the back of the book. The way to get
really good is to master all of one type of problem at a time. Then move on to the next type of
problem. Malcolm Gladwell says you need 10,000 hours to become a master.
Additionally, try to learn in an "error-free" manner. Work slowly. Figure out every individual
variable in the problems when you practice. This way you don't make mistakes or pick up bad
habits. This is the technique that made some of the best violin players in the world at the famous
Meadowmount Music School. There, students are said to master pieces of music 500% faster
than other students.
Competitive coding tests problem solving in two areas, constructing an efficient algorithm, and
implementing the algorithm in a suitable programming language.
First figure out all the elements that you need to learn. Master combinatorics, number
theory, graph theory, geometry, string analysis and data structures.
Find a way to practice. For example, find a book of problems used at these competitions. Or
create your own. Organize them by problem type. Work quickly and check your answers if you
can't figure out the answer.
Most importantly, make a plan leading up to the tournament. Break it down into monthly and
weekly goals that you need to accomplish in your routine.
Also, get a coach or mentor if you can. It will help keep you motivated. It will help you improve
faster. Your coach should be able to see what you are missing and tell you what you need to do.
The next step is the mental game. The top athletes in the world are cold hard killers. They are
not only in optimal physical health. They also need to maintain their emotional health.
A technique used by Olympic coaches goes like this. Imagine yourself winning the competition
of your dreams. What does it feel like? What are you thinking? What is the environment like?
What are the people around you doing?
Remember what success feels like to you. Never let it go. Work through the hard days. The
universe will help you succeed.
53.5k Views · View Upvoters
Your response is private
Is this answer still relevant and up to date?
YesNo
Upvote343Downvote
Share
RecommendedAll
Raymond Deng, studied at Udacity
Answered Jul 8, 2016 · Upvoted by Abhishek Pratap, ECE undergrad ,IIT-R and Kiran Kannar, CS MS student,
University of California San Diego
Originally Answered: How do I learn competitive programming?
Here’s a basic road map for improving your competitive programming skills:
1. Find a concept that you don’t fully understand (e.g. dynamic programming, Kruskal’s
Algorithm, lazy segment tree propogation, etc).
2. Do some research to understand the basic idea of a concept. (e.g. Greedy algorithms:
solve sub-problems by always picking locally best option).
3. Solve problems on online judges.
4. Repeat step #3 until you feel confident that you can solve that kind of classical
problem.
5. Repeat 1–4.
Here are some tips:
practice daily. Your skills will fade if you take a hiatus from practicing for more than a
few days.
try really hard not to look up the solution. Once you look up the solution, the struggle
of figuring out the problem is gone. It’s in the struggle where you usually learn. If you
can’t solve it right now, think about it for half an hour and then come back to it
tomorrow. Solve an easier problem.
books can help provide a “curriculum”. Competitive Programming by Steven and Felix
Halim are popular. I worked through the first edition and can testify that it helped me
immensely.
Here’s a picture of programming Jesus for good luck!
RecommendedAll
Keep a small goal to solve enough Div-II 250 problems without peaking into solutions, then 500
pointers, and then 1000 pointer in Div-II. During this process, you can learn and improve your
skills in implementation, solving and speed.
The process will be slow and may take up to 2–3 years, be patient and measure growth in each
step. As you slowly climb the steps, your confidence will improve and one day can be among the
top programmers. The most important point is to not loose patience, and when you do take a
break and come back stronger.
RecommendedAll
Kaushik Raina, Solved around 400 questions from codechef, Interviewbit etc
Updated Jan 23
Let me explain this to you in SIMPLEST WAY POSSIBLE.
If you follow this guide you could clear any Competitive Coding Examination.
First you need to get your basics clear . If your basics are clear then you could easily score a four
star at codechef
Basics :
o Data Structure :- Following topics must be clear before going to Advanced.
Array
Stack
Queue
Linked List
Binary Tree
Binary Search Tree
Algorithms
o
Analysis of Algorithms
Searching and Sorting
Divide and Conquer
Pattern Searching
Advanced
Data Structures
o
Heap
Hashing
Graph
Trie (Important for codechef)
Segment tree(Important for codechef)
Fenwick Tree
Algorithms
o
Greedy Algorithms
Dynamic Programming
Backtracking
Bit Algorithms
Graph Algorithms
Important Note: Practice all above topics from HERE.
References :
1. GeekForGeeks
2. Hackerearth
3. Interview Bit
NOTE:- To get started from learning C++ checkout below link.
Kaushik Raina's answer to How can I become proficient in C++? I am a complete beginner and I
aim to perform well at coding competitions in the next 4-6 months.
Happy Coding :)
2.9k Views · View Upvoters
Upvote95Downvote
Share
RecommendedAll
Anubrata Bhowmick, works at Tata Consultancy Services
Answered Nov 25, 2015
If you want to get started with competitive programming, I would say, start practicing. No books
can give you the practical knowledge that you need. Get started with coding in websites
like Sphere Online Judge (SPOJ) , Programming Competition,Programming Contest,Online
Computer Programming (Codechef) , Codeforces , HackerRank , HackerEarth - Programming
challenges and Developer jobs .
These are some good websites where you can practice and gain sufficient knowledge about
competitive programming. Solve problems . Check out the codes of people who have solved the
problems more efficiently or in a different language.
Once you are done with these,
participate in competitions on Codechef and Codeforces. Codechef has awesome competitions
which will give you the edge you want. Then when you feel confident enough, move over
to topcoder where you can take part in some serious programming and some mad skills of
programmers worldwide.
Also take part in competitions which you might stumble upon here and there and take part in
college fests and so on.
C++ is the best when it comes to competitive programming. Learn about the STLs before you
get your hands dirty with coding.
When you can't solve a program, just google about the solution. Be active and be persistent. It
can't happen in a day or month. It will take years of practice! :)
Once you are good enough or you feel confident enough, join
Indian Programming Community ( Log into Facebook | Facebook ) which is owned by the
great Anudeep Nekkanti . And if you really want to consult some books, go through Cormen's
algorithm book, which is a great book for gaining knowledge on Algorithms.
Edit 1
Also follow Stack Overflow daily! It's a wonderful platform for programmers. :)
20.7k Views · View Upvoters
Upvote126Downvote
Share
Pranav Kastury
You've provided a good answer....
9.1k Views · View Upvoters
Upvote64Downvote
Share
RecommendedAll
Mohd Salman, Student at Motilal Nehru National Institute of Technology, Allahabad
Answered Jun 6, 2017
This post has been taken from the blogpost of Triveni Mahatha . Here are some steps to get
started and be good at it.
You write codes and submit them online . The judge runs your code and checks the output of
your program for several inputs and gives the result based on your program’s outputs.You must
follow exact I/O formats. For example, do not print statements like : “please enter a number”,
etc :P
Time Limit in seconds (gives you an insight of what is the order of solution it
expects) -> order analysis(discussed later).
The constraints on input ( very imp ): Most of the time you can correctly guess the
order of the solution by analysing the input constraints and time limit .
Memory Limit ( You need not bother unless you are using insanely large amount of
memory).
Types of errors you may encounter apart from wrong answer :
Ord...
(more)
Upvote88Downvote
Share
RecommendedAll
Robin Singh, B.Tech Mechanical Engineering & Minor in Computer Science and Engineering, Indian
Institute of Technology ,...
Answered Dec 9
First, learn any programming language, preferably C++.Then Start Competitive Coding on any
of the coding forums like hackerrank. You can also try SPOJ but don't forget to sort it first
according to no. of submission.After doing basic implementation which does not require any of
the standard Algorithm knowledge,learn STL. I am suggesting u to implement problems without
using STL initially as it will improve your low level implementation skills and u get to know how
things work.You can learn STL easily by reading blogs of topcoder, hackerearth and YouTube.
After that, learn Data structures and Algorithms. You can get a list of most used data
structure,algorithms and graph theory in competitive coding on codechef discussion. Just google
it. You will also get the reference from where to learn. (Topcoder link may not work in that blog,
google it separately).Also,CLRS is the bible of DS and Algo. Refer it wherever necessary. The
best way to learn is to practice problems and whenever u come across a new concept which u feel
u don't know it,learn it at that time only. Because u don't realise the importance of anything
unless it's necessary and required.
Jump to Codeforces and Codechef. Start practicing. Solve div 2 A and div 2 B problems in
Codeforces initially. Now, Start giving Contests on both codefirces and codechef. After
contest,read editorials and try to implement problems u couldn't solve.If u still can't ,see the
solution and then try again. Warning: Don't just copy and paste. I repeat Never.This goes into ur
temporary memory unless and until u write ur own code.If u understand the solution, try to
implement it by urself. Already told u if there is any new concept, try to learn it first. Nothing in
this world u can't learn by urslef. Google and YouTube are ur best friends. Start giving the
Contests seriously. Believe me it will do wonders in your life. Last but not the least keep
patience.U can't be a great coder overnight.Learn from failures.I hope by this time u would have
come far enough to decide what to do next.
Happy Coding! :)
532 Views · View Upvoters
Upvote11Downvote
Share
RecommendedAll
Sandeep Kumar, Training programmers in all age groups - Kids, Young and Old age
Answered Jul 23, 2016
Most useful resource to help you fulfill your wish is —- Competitive Programming (Competitive
Programming 3 Book). It comes from HORSE’S MOUTH, from people who have been winners,
problem setters and mentors to many other budding contestants.
Along with the book, One thing that’ll be more essential to have is a COACH or dedicated TEAM
MATE if you want to have higher chances of success on this wonderful journey.
We’ve an INSTRUCTOR LED getting started course on this path in case you might be interested
in taking that up… Data Structures and Algorithms Training
RecommendedAll
Avnish Yadav, From 1996
Answered May 10, 2016
Originally Answered: I am new in competetive programming, how should I start?
The Learn to Code movement has picked up momentum worldwide and that is actually a good
thing as even basic programming skills can have a major impact. If you can teach yourself how
to write code, you gain a competitive edge over your peers, you can think more algorithmically
and thus can tackle problems more efficiently.
If you are ready to take the plunge, here are some of the best websites that offer courses in a
variety of programming languages for free. I have also added a list of companion ebooks that
will give you a more in-depth understanding of the language and they don’t cost anything either.
JavaScript
jQuery
Python
Python for You and Me, Dive into Python, Learn Python the Hard Way,Think Python, Python
for Fun, Tango with Django,Django
PHP
Code Academy
WordPress
Treehouse, WordPress TV
Stanford.edu, Explain Shell
Node.js
Nodetuts, Node School
Angular JS
Code School, Stanford, iTunesU
Golang.org, GopherCasts
Java
D3 (data visualization)
SQL (Databases)
SQL Zoo, SQL @Stanford, Essential SQL, SQL for Nerds,Intro to SQL, SQL Bolt, PHP & MySQL
1.9k Views · View Upvoters
Upvote14Downvote
Share
RecommendedAll
You should try to practice the competitive problems which are beyond your ability or
knowledge but no more than a lot beyond your ability. For OJ, I
recommend HackerRank or Topcoder since on these site, you can review other
programmer's code or solution.
Find some descent algorithm books to learn(CLRS for example), but do not only read
the book, keep practice during the process. You can find problems of the topic you're
reading to practice. On hackerrank, this is easy, since they already classify the problem
by topics.
Learn math, especially discrete mathematics. I recommend the book "Concrete
mathematics"
Solve, review, solve review, repeat this process
Prepare your coding library from the start, try to review your library once in a while
Find some persons with the same passion as you to form a team, go along the way
together since ACM-ICPC is a team contests. And encourage each other.
Finally, and most important one: Have fun, avoid over training. If you find it is tired to
train, drop it, play with friends, find a girlfriend, do some other things. And then
returned with passion and energy again.
You can read the story of the most successful topcoder Petr(The Story of Petr Mitrichev - Target
in Six Steps) to find some keys to success in competitive programming.
10.7k Views · View Upvoters · Answer requested by Santhosh Sunny
Upvote36Downvote
Share
RecommendedAll
Mostafa Saad Ibrahim, ACM ICPC World Finalist, Problem Setter, Coach
Answered Sep 28, 2016
Originally Answered: How do I master competitive programming problems as a beginner?
In my training sheet, you can follow problems/topics to do/learn. You may go with it. Feel free
to see editorials when fail and learn from your mistakes.
2.7k Views · View Upvoters
Upvote16Downvote
Share
RecommendedAll
I would like to suggest to read this blog.Getting Started with the Sport of Programming
800 Views · View Upvoters
Upvote10Downvote
Share
RecommendedAll
1)Topcoder
2) Codechef
3) Codeforces
Codeforces
above are most common websites which hold contests every month. And they all have equally
good set of problem sets.
But as a beginner i would recommend you to go through the sphere online judge portal ~
Thanks.
5k Views · View Upvoters
Upvote13Downvote
Share
RecommendedAll
Algebra
Geometry
Complex number
Discrete mathematics
Basic Calculus
But, if you want to be good at solving problems, head over to CodeChef, SPOJ or any other
websites and practice, practice till you have mastered the hardest level of problems there are
because “Practice doesn’t make man perfect, but only perfect practice does”.
3.5k Views · View Upvoters
Upvote8Downvote
Share
RecommendedAll
1.6k Views · View Upvoters
Upvote8Downvote
Share
RecommendedAll
Then start learning the algorithms for solving the problems and best way to do that
refer Introduction to algorithms book and I have learned algorithms in TopCoder SRM's
editorials mostly. Otherwise, Google search and Wikipedia will always help. so this is how you
will learn algorithm.
Now you mentionto to appear in the ACM_ICPC so for that there is a special book called as
Competitive Programming , start from reading that book auther Steven Halim.
RecommendedAll
Rohit Chandwani, B.tech from The LNM Institute of Information Technology (2020)
Answered Jul 16, 2017
Greetings!!
First of all I would love to tell you that you need to learn some other language like python or C+
+ etc as C is not a good choice for competitive coding as competitive needs speed & efficiency &
these two languages can offer you these two things as they are much easier than C because they
Object oriented languages.
You can learn these languages through online tutorials. There are many websites like edx,
codecera, Hackr.io - Find & share the best online programming courses & tutorials etc.
But I would personally recommend you to go with Hackr.io - Find & share the best online
programming courses & tutorials as I follow the same for tutorials as practice & they have very
good content.
274 Views · View Upvoters
Upvote10Downvote
Share
RecommendedAll
Honestly I don't even think it will be of any use to you in future, if you are talking about being a
good developer and earning decent amount of money, then my answer will differ.
I have been programming for about more then 10 years in age of no Internet, no SPOJ and no
TopCoder, I haven't even been there, and I don't think they stand any where near to improving
your coding.
Here is an example, let's say you are in school, they teach you how to run with spoon and lemon
in your mouth, how to run with putting your legs in a basket, those all kids sports you loved it in
your school. Period, you don't use them in your life to improve anything at all, its just for fun. All
online competitions are exactly same, you will have fun gaining points or getting recognition,
but doesn't help it to improve anything.
Today coding is no longer just an ability to write piece of code. It's much more then that, ability
to understand requirement, complicated UI designs, complicated database design and
crunching big data. How to use a good source code control and maintain a large code base with
constant iterations to improve your application and solve bugs.
Instead join some open source development projects, learn and contribute, this is what will
make you stronger.
2.4k Views · View Upvoters · Answer requested by Soumik Sur
Upvote3Downvote
Share
RecommendedAll
Don not work at bursts, have a schedule on how many hours you can spend each day on top
coder, you should see improvement in the first month itself. In a programming contest it is more
of stamina than ability to code so you will have to slowly get to a point where you can sit for
hours and work on problems.
I feel you don't have to wait until you have gained some good experience at other programming
platforms. Start now and remember to celebrate your interest tial successes to make a habit of it.
Cheers.
5.4k Views · View Upvoters
Upvote7Downvote
Share
RecommendedAll
What was Anudeep Nekkanti's Competitive Programming strategy to become 35th in Global
ranking, in just 6-7 months?
Nikhil Garg's answer to How should I practice so that I will be at a level where I can approach
TopCoder's Div1-500 problems with confidence? I am a rookie with zero competitive
programming experience.
Best of luck :)
3.6k Views · View Upvoters
Upvote7Downvote
Share
RecommendedAll
In competitive programming, you are required to solve a problem in a specific short period of
time. In this challenge, you need a lot of experience to exactly know how to utilize your resources
and knowledge to good use and make an effective and successful result within the time allotted.
To learn competitive programming, lots and lots of practice is needed before you can even make
it to a rating of at least yellow.
As a beginner, always start learning at a programming school to sharpen your skills and perform
better in formulating solutions to a problem. We at Holberton School of Software Engineering in
San Francisco offer courses for software engineers, where you might be interested to be part of
our program and learn everything you need in competitive programming. It is a lot better when
you learn to collaborate with other people since it helps you to learn faster.
It is just not advisable to make rush in learning, especially when it comes to programming. Go to
a school and achieve proper lessons by professional mentors, only then you will find the right
time to join such challenges and obtain the highest rating possible you can get. It is not too late
to learn and join in matters like these, but you just have to keep patience and dedication to keep
moving forward and learn to do better always in the long run.
1.2k Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
772 Views · View Upvoters
Upvote13Downvote
Share
RecommendedAll
803 Views · View Upvoters
Upvote9Downvote
Share
RecommendedAll
First, choose a language and learn all the concepts about it in detail. Don’t start competitive
programming if you only know the basic concepts, get comfortable with the language,
experiment with it and write your own codes. Once your comfortable writing your own programs
then you can step into competitive programming
There are great resources just for competitive programming available online:
HackerRank (One of the best places for beginners, the range of exercises gradually increase from
beginner level to advanced).
Use the practice exercises given here and you’ll understand and develop the skills necessary,
these websites are supported by a great community of well versed programmers who are eager
to help.
8.9k Views · View Upvoters
Upvote19Downvote
Share
RecommendedAll
Gaurav Yadav, Developer
Answered Dec 4, 2016
You can try following these Steps listed here
RecommendedAll
1. Tushar Roy : This man explains everything very easily. I learnt a lot from his video
lectures. His playlists include dynamic programming, tree algorithms, graph
algorithms,etc. You will find it very useful.
2. MIT 6.006 Introduction to Algorithms, Fall 2011 : Though I have not watched these
lectures but I have seen many people saying that they are very good and rich in
concepts.
Books:
2.2k Views · View Upvoters
Upvote6Downvote
Share
RecommendedAll
Try participating in all the hackathons and various other contests online. Try to clear all the
practise tests on the various coding websites especially in algorithms, data structures. You can
just focus on honing your skills in c for now. I guess you will have java as a subject in hour
second year at college, after which you can definitely start honing your skills in that.
To help with your algorithm preparation, I would suggest cracking the coding interview by
gaayle laakmann mcdowell.
Learn to code efficiently, it might take a while, but dont give up. Learn to debug and test your
code , which is the most important thing for a coder.
Start devising your own shortcuts and algorithms. This only comes with practise.
If it interest you, you can try your hand at data sciences. Many contests are coming up with data
sciences as the theme.
RecommendedAll
It require lots of practice and continuous effort in the nascent stage and you will see a
gradual growth in picking up.
Try to make your logics strong, for that you need to solve different algorithms as
programming is all about a coder thinking and problem solving techniques.
Show your code to experienced and senior one so that they can review it and suggest
you for some improvement.
Pick up a particular language you are interested in and start writing code, slowly you
will realize that all languages are same with different syntax and some advanced
features.
Here i am listing some websites for beginners to start off with -
1. Learn to code
2. Learn to code by doing | Code School
3. Start Learning at Treehouse for Free
4. Computer programming
5. W3Schools Online Web Tutorials
These sites comes with their own online editors and compiler , so no burden for
installation.
Live run the program and check results with errors and customize the code
accordingly.
Finally GOOGLE is the best source of learning. So why fear when google is there.
542 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
I do not have any thing in particular to say but I have a made a comprehensive list of all the
answers and blog posts that answer your question. Some of these will be a repeat so please bear
with me.
Hope I helped.
Cheers.
RecommendedAll
Gautam Singh, Software engineer
Answered Aug 10, 2016
May be this can be of some help. Also try to get into some company projects (or in research if
you want to pursue higher studies). You can apply in startups from AngelList and easily get into
projects as an intern or for research project you can directly contact you college profs. In this
way you can really create a good background in programming (development based and may be
competitive).
Regarding learning linux Introduction to Linux - Edx can help you in that to some extent.
Note:
1. You need to be very patient and go through each logic you write as much as possible
rather than just mugging up (as most beginners do).
2. Learning linux requires a lot of practice, so as you go through the course install linux
in your own PC/laptop.
Best of luck!
700 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Please refer to Hackr.io - Find & share the best online programming courses & tutorials for
compiled list of top resources
Try to dive in a language of your choice and Data structures and Algorithms
Learn Data Structures and Algorithms - Best Data Structures and Algorithms tutorials |
Hackr.io
Input:
First line contains an integer, the number of test cases ‘T’. Each test case should be an integer.
Size of the array ‘N’ in the second line. In the third line, input the integer elements of the array
in a single line separated by space. Element X should be inputted in the fourth line, i.e., after
entering the elements of array. Repeat the above steps second line onwards for multiple test
cases.
Output:
Print the output in a separate line returning the index of the element X. If the element is not
present, then print -1.
Constraints:
1 <= T <= 100
1 <= N <= 100
1 <= Arr[i] <= 100
RecommendedAll
Siddharth Mahapatra, B.Tech Computer Science and Engineering, KIIT University (2018)
Answered May 13, 2017
1. Websites/Online Judges(OJ) :-
a) Topcoder :
Div 2 - A, B, C, D, E.
Div 1 - A, B, C, D, E.
Note :
Beginner
Easy
Medium
Hard
Contests -
o Lunch Time
o Cook-Off
o Monthly Challenge(10 days)
Note : *Roughly*
RecommendedAll
Manohar Reddy Poreddy, Top 100 rank. 33 Software projects,40+ programming languages
Updated Oct 15, 2016
Originally Answered: How do I start learning competitive programming?
Update: I wrote an article/post, it will help you get started, or you will have a very good idea on
how to go ahead, see this: How to get started with Competitive Programming (CP), Tips and
Tricks by Manohar Reddy Poreddy on AlgorithmsAndMore
The above Warmup section, seen on the left, the challenges/problems inside will get you started
with Competitive programming (CP).
Journey to Top 99 percentile is at least 2 months of hard work. Example, see this link.
Journey to Top 100 rank is even more hard. Example, see this link.
Plan:
Start from above Warm-up link
Continue to other sub domains:
Strings, Sorting
o
Then do Implementation, etc.
o
At the end, do Dynamic programming.
o
You will need to learn a lot of new algorithms, and related data structures.
A bit later point in time, you need to learn advanced data structures & algorithms.
And, then, some day, you will be there ready to compete head to head in online
competitions with some of the bests in the world, if you want more than Practice.
Advice from experience:
RecommendedAll
First of all I would suggest you to use C++ for CP as it has STL. Code for sorting in nlogn time
binary search and a lot of things are already implemented in it. Additional support for vectors,
sets, maps helps a lot to code faster.
So where to start:
Pickup the easiest problem to get acquainted to online judges like this one
Contest Page | CodeChef
Then move to slightly difficult problems and gradually keep advancing in it.
Codechef
Codeforces
HackerRank
Topcoder
But you will not be able to solve a lot of problems because you don’t know all the data structures
and algorithms for that. SO you would need to learn about some DS and algos, there are various
tutorials available on internet some of them are
Learn Data Structures and Algorithms - Best Data Structures and Algorithms tutorials |
Hackr.io ← Collection of best tutorials
Introduction to Algorithms 3rd Edition - Buy Introduction to Algorithms 3rd Edition by cormen,
thomas h.|author; Leiserson, Charles E.|author; Rivest, Ronald L.|author; Stein, Clifford|author
Online at Best Prices in India - Flipkart.com
Above all you need a lot of practice to become a good competitive programmer. As you are in
college you can take part in various technical fests of colleges which organizes such contests.
And the biggest thing is never give up. There will be numerous instances when you will feel that
CP is not your cup of tea and you may think of giving it up but don’t loose your confidence even
when you can’t solve a problems for months. I gave codechef’s cookoff after my board exam and
that was my first cookoff it asked some question related to prime numbers and I was not able to
solve it after almost an year I found that problem marked as red tried it and got AC :) Seive of
Eratosthene was used in that problem which i didn’t knew during those days.
What I want to say is don’t loose hope you can do it and you will do it. Happy Coding
627 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Choose a programming language you are going to use in all the competitions. I would
say the best choice is C++, because of its speed, available data structures / algorithms
in STL library and because all the competitions support it.
Get some theoretical knowledge of algorithms. Book “Introduction to Algorithms”,
written by Cormen, is considered Bible on this topic. It contains pretty much all the
algorithms, math and data structures you need to know for programming
competitions.
For learning more programming stuff visit - hackr.io
438 Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
1. Read the question. The basic problem lies here. Many a times we read the question in
a flash and then proceed to solve the question. This is perhaps the most often and
biggest mistake anyone can commit. Let me give you an example. Suppose you are
given a big string as an input (see code) and the output is something like (see code) .
Believe me , this question could be solved only by printing the uppercase characters,
on the other side, the same question can be solved by parsing the string as an array
and then finding the index of a ‘.’ and then printing the character 2 next to it. So, just
understanding the concept of question is the key.
1. // Input
2. . Hello from. The other. Side of. The web
3. // Output
4. HTST
2. Never use pre-built functions when you practice, because when you make such functions
yourself, you actually revise the basic concepts of the language to and fro.
3. Never write code at start. Always try to find the concept, write a pseudo code and then
proceed to the formal code, because will save tonnes of time.
4. Always test run your code at end. This always help to polish and be assured that your code
actually works. Afterall, what’s the point of writing a page long code that doesn’t work ?
I can say that these are the core principles one can use to crack any competitive question.
1.5k Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
If you've ever thought about competitive coding, all you've got to do is start now. Doesn't matter
which class or branch you are in. Everyone can code and everyone can be competitive. Basically,
all you've got to have is the right mindset and the right skill set.
Let's talk about the mindset first. Competitive programming requires a drastically different
mindset when compared to "normal" (or developmental) programming. While in developmental
programming you have to concentrate on writing quality code that is manageable, competitive
programming generally involves writing code that "works". This is because you'll probably never
even look at your code again, once you get an AC (accepted) result from the grader. This does
not mean that you should write sloppy code since that would just make it hard to debug (and
this can be a real pain in the a** in a competitive setting, with the added pressure of time
running out). All it means is that the code need not have extensive documentation (just some
inter-spread comments to help out when debugging are enough) or modularity/objects/classes
(just write it in logically separate functions to make life easier).
1k Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
Guilherme Lucas, Computer Engineering student.
Answered Jul 10, 2016
Originally Answered: How do I learn competitive programming?
Traning is the best way to get better on competitive programming. Here are some ways of doing
that:
RecommendedAll
You firstly have to become really flexible with a programming language. I suggest you start with
python; It is easier to learn than languages like C/C++ and it makes you implement stuffs faster.
Start by understanding what programming really is and learn the basics of programming from
good sources like Udacity, CodeAcademy, Udemy e.t.c
Become good at implementing simple algorithms before moving on to the difficult ones and
make sure you practice a lot. Solve a lot of problems and rank your self on TopCoder and
HackerRank. Also, build your algorithm skills by implementing different algorithms and
understanding how they work and why they are more efficient than some other algorithms. I
suggest you let this book be your companion ‘Introduction to algorithms’ co-authored by
Thomas Cormen.
Practice. Practice. Practice. And code a lot too. It’s just a matter of time to become a competitive
programmer. The time only gets shorter with respect to the time you dedicate to learning and
coding.
Don’t forget to have fun and mingle with friends that are better than you. They will indirectly
encourage you to get better.
Cheers!
Anudeep Nekkanti gave a really good answer on Quora from his experience here: What was
Anudeep Nekkanti's Competitive Programming strategy to become 35th in Global ranking, in
just 6-7 months?
837 Views · View Upvoters
Upvote6Downvote
Share
RecommendedAll
Animesh Bote, Qualified for codejam round 1 || Rank 700 on codechef may 2016 challenge
Updated May 25, 2016
Originally Answered: How do I prepare a plan for learning competitive programming?
First go through all the basic concepts of programming like inheritance polymorphism, RTTI,
dynamic casting from the balguruswami (if you want to code in c++). If you want to code in Java
then use Java the complete reference.
When you are done with basic concepts of any language then you can start with the data
structures.
Read the corman's book for data structures and algorithms and try to implement every
important algorithm(the language in which you are preparing).It will help you to write the
program in different problem cases as it will help you to increase your ability to think.
After that you can try the problems from online websites like codechef,codsforces.Don't
try to attempt hard question directly.First try do the simple questions in most efficient way.You
will improve time to time.Remember you can never become perfect(ideal) at anything,the time
when you start thinking that you are perfect then loop holes start creating.
RecommendedAll
HackerRank
codechef.com
Sphere Online Judge (SPOJ)
hackerearth.com
http://topcoder.com
then start solving the easy problems and move further as you like.
Also you can refer to this link to get some good algorithms
5.4k Views · View Upvoters
Upvote10Downvote
Share
RecommendedAll
:D
RecommendedAll
Comment
RecommendedAll
numerous individuals who have ever attempted to begin focused programming, yet didn't found
where to simply ahead and left in halfway. Furthermore to the individuals who wonder where to
begin from. Getting high-positions in Codechef/TopCoder/Codeforces rivalries isn't an
overnight achievement. It requires a ton of investment and exertion and there aren't any
alternate routes (similarly as I probably am aware). However, the good thing is, it is a
considerable measure of fun (genuinely, when you show signs of improvement, it is significantly
more fun than PC amusements) and anybody can do this. I am excessively not a master in this,
but rather I would prescribe the accompanying things as indicated by my encounters :
Pick a programming dialect you are going to use in every one of the rivalries. I would say the
best decision is C++, as a result of its velocity, accessible information structures/calculations in
STL library and in light of the fact that every one of the rivalries bolster it.
In any case, no doubt "brilliant words", in the event that you can't take care of any issue ever,
don't get demotivated. Attempt as much as you can.
You would have the capacity to illuminate, if not read it's article and attempt again..!!
Notwithstanding perusing article don't give you indicate, read different arrangements and
attempt to produce thinking capacity to illuminate that inquiry. Presently code and get yourself
AC.
Whatever you pick, do compose arrangement yourself at end, every way you would learn
something, however skipping inquiry would give you nothing..!
622 Views
UpvoteDownvote
Share
RecommendedAll
In each contest, try to do better than you did before, with respect to being able to focus,
decouple the problem into understandable pieces, and put them together as a program that
produces the right outputs for given inputs. Focus on solving problems, not scoring high.
RecommendedAll
Try this , may be useful to you . You will get questions topic wise and difficulty increasing
difficulty level even on this site.
745 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
But all programmers should learn C and C++. They are what 95% of all programming is done in,
including all operating systems, browsers, network protocols, etc. Languages like Python, PHP,
Swift, Ruby, C#, JavaScript, Java, etc., are really just scripting languages and not real
programming languages.
RecommendedAll
If you are trying for a competitive things, limited number of programmatic variations are not
helpful. You have to learn several kinds of tricks whith which you can outperform anyone.
There is another thing which is rarely said but is essential for programming. That is, know you
programme control flow. If you clearly are aware of the outcome you needed and if you have a
good knowledge on the language you are specializing then you can crack any programme easily.
634 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Step-3 : Always participate in the coding contests that are organized on these sites in order to
test yourself.
Start doing it and you will yourself see the change in your programming skills.
1.5k Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
Try starting with simple projects. If you're going the HTML / CSS route, play with JavaScript
and get a simple div to move around on the page when you click on something. Then work your
way up to more complex ones. For instance, write a simple todo list with HTML form elements.
You have to learn DOM manipulation to properly handle when the user interacts with the page.
At Stanford, they teach beginning CS with games. Try building a hangman game using JS, or
even just on the command prompt using Ruby or Python.
Edit: A new YC company called Codecademy (Learn to code) just released an all-Javascript
tutorial that is quite good.
477 Views · Answer requested by Uday Tayal
UpvoteDownvote
Share
RecommendedAll
456 Views
UpvoteDownvote
Share
RecommendedAll
Competitive Programming
This article tells you about competitive coding, and how to get started. More importantly, it lists
all the competitions you should be looking at. You don't have to be in Computer Science to be a
good competitive programmer. Hardwork, is what is needed.
Contents
[hide]
1Introduction
2Pre-Requisites
3Getting Started
4Excellent Resources
5Gearing Up
6Taking it Forward
Introduction
You are given a problem and write code to solve it. The judge runs your program on several
inputs and tests for correctness. Every program has constraints. You get a verdict based on how
your code performs on the test cases. Here are some:
AC (Accepted) - Rejoice! Your code passes all testcases given by the judge and is
deemed correct.
Time limit ( about a few seconds ) - You get a verdict of "Time Limt Exceeded" if your
program doesn't terminate in time.
Memory limit- gives a bound on maximum memory your program can use, includes
both stack and heap memory.
Runtime errors- These occur when your code is prone to faulty pointers and stuff.
Keep an eye if your code breaks for large inputs.
Wrong Answer- This means that your code produces incorrect output. This may be
incorrect output formats, trailing spaces, incorrect "solutions", or anything which can
give a non-empty diff to the correct answer.
Constraints on input - most important, this gives you an idea about how fast your
algorithm should be. It is like a sport and many do it for just fun. If you are into
programming, you can give it a try!
Pre-Requisites
A basic programming knowledge, in any language of your choice ( preferably C++, Java or
Python ) is assumed. Otherwise, take a look at Programming 101. Also, if you want to try your
hands on competitions like ACM ICPC, you need to be proficient in some techniques discussed
below. Practice is key. A LOT of practice and consistency is required to perform well in a
competition like ICPC.
Getting Started
The best starting point is to solve some problems on SPOJ. You can sort the problems
based on number of users and start with the problems with the most number of users
solved.
The next step is to read up on algorithms. It's strongly suggested that while solving a
problem on SPOJ and you don't get idea, google it and find the algorithm for it, code it
your self and get accepted. As you go along, you come across different algorithm
techniques such as greedy, dynamic programming etc. Topcoder Tutorials are a great
source for getting started with algorithms for competitive programming. These are
well written and accessible to everyone.
As you solve more and more problems, look at other online judges(mentioned below).
Also, start exploring harder concepts. Once you learn a new idea, you can use
this Classifier to find problems from SPOJ on a given topic.
Excellent Resources
Online Judges :
Codeforces is the best website for competitive programming. It has a huge problem
collection, with solution descriptions for every problem. You can also see the codes of
other users for every problem. There are weekly live contests, in which thousands of
users compete. They also have blogs and the community is very active: If you have any
queries, they are ready to help you.
Topcoder also hosts weekly contests called as SRM. Requires some effort setting up
the arena, but well worth the effort. It contains many good problems in Dynamic
Programming, Math, Geometry and Graphs. For help in setting up, see this blog
Codechef Similar to the above two. It also hosts 10 day contests called as Long
Challenge every month.
Hackerrank Also hosts weekly contests. It also contains basic programming tutorials.
Good UI. You can buy testcases for hackos, which is usually good for training and
getting ideas for corner cases.
Timus More like SPOJ. Contains collection of good problems. Unlike the above four,
doesn't contain editorials, ...
(more)
Upvote9Downvote
Share
RecommendedAll
If you want to become competitive Programmer, you need to focus on Advanced concepts of
Programming and Algorithms. Make sure you have very strong basics about programming and
algorithms before moving to competitive. Array, Linked list, Stack and Queues and advanced
concepts like Tree graph, sorting / searching algorithms, Hashing and many more.The thing
matter in competitive programming is complexity of your program. if you are not aware of
complexity of Program please search it. you will find different notation about it and Other thing
is, if your code is optimized or not. You need to practice how to write optimized code that
execute fast and consume low space/ memory.
Thank you..!!
383 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
sales@adormi.com
377 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
I found many Apps in Playstore, useful to Learn Programming from scratch. Out of which
I liked PAL Learning Apps, which contains free video courses, interview questions, typical
programs, discussion corner, challenge quiz's and offline notes many more. Lets try it.
708 Views
UpvoteDownvote
Share
RecommendedAll
Thacker Naman, A beginner in this field
Answered Feb 4, 2017
Originally Answered: How can i start competitive programming?
Yes..at least you should know maths basics before getting into competitive programming..
because you will have some problems like-find gcd,lcm of given numbers or combination-
permutation ,probability problems…
but you can learn such maths concept in only few weeks because its not a big deal…
it will clear all concept about programming that is needed to dive into competitive
programming…
280 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Madan Srinivasan
Answered Nov 11, 2014
Originally Answered: I want to do competitive programming. What should I do?
Thanks for the A2A. Am not a programmer but can give a general idea of what has worked for
colleagues and others.
Some of the best programmers I know are self taught. MOOCs such as EdX, Udacity etc have a
lot of courses on programming so you have quality training right there.
Next step, once you have the basics/ intermediate level done is to find a great mentor and a
challenging project and really get your hands dirty. This should set you up for the near term and
your mentor should be really able to push you beyond that.
PS: while looking for mentors, don't shy away from writing people who you think might be able
to help but seem out of reach. You'll be surprised at how helpful most are
107 Views
UpvoteDownvote
Share
RecommendedAll
Robert Plummer, 16+ years as a software engineer
Answered Nov 26, 2015
Go to Build software better, together, or another popular repository website, find some of the
most popular projects, find their biggest problems, and solve.
It'll take a lot of time, a lot of research, but what you learn will be priceless.
RecommendedAll
RecommendedAll
Juanita Poe
Answered Nov 26, 2015
If you want to become a good programmer, you should have best determination. Then you try to
follow the things mentioned below.
1. You first read that book and understand what is c++. Simple terms in it like over loading,
inheritance, etc
2. You should do all the programs mentioned in that book.
3. Google the terms from c++ and explore it and study
4.Try indiabix and find out all the interview related questions.
5. Tyr to do the pattern questions from c++
6. Study any database, its comments, table creations, link building etc.
7. Try to create your own creativity.
8. continue your work, otherwise you will forget it
984 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Athreya Sriram, An pretty good school level programmer , Novice competitive Programmer
Answered May 5, 2016
Originally Answered: How do I start competitive programming as a beginner?
You cant start by familiarising yourself with the nuances and techniques involved in cp , learn
algorithms , Develop Good Thinking and Problem solving skills and participate in :
RecommendedAll
Devansh Varshney
Answered Feb 9
Well competitive programming is little bit time consuming but there is a course on competitive
programming at Udemy .
81 Views
UpvoteDownvote
Share
RecommendedAll
412 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
And also you should check on lyndra or udemy for best practice.
And also you can visit the below site for learning and developing yourself.
ASTM International
20 Views
UpvoteDownvote
Share
RecommendedAll
Ashwin Krish, Software Engineer at Media.net
Answered Nov 14, 2014
Originally Answered: I want to do competitive programming. What should I do?
Anup Kalbalia has written it nicely. In addition do check out this link by the group called league
of programmers in IITK. It is a detailed list and might always prove to be a reference. :)
http://sportprogramming.blogspot...
499 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
RecommendedAll
RecommendedAll
RecommendedAll
Anonymous
Answered Jan 1, 2017
Originally Answered: How should I start my career in Competitive Programming?
welcome to competitive programming , it is fun activity . Topcoder and code forces are good
sites . I prefer Java, as known to me it is not a career you can use the skills you learnt in
competitive programming to enhance your career. All the best.
735 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
177 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Ishant Agarwal's answer to I am 18 years old and I want to start programming. How should I
start?
23 Views · Answer requested by Santhosh Sunny
UpvoteDownvote
Share
RecommendedAll
u can learn coding languages anytime anywhere u want ,the best way to learn coding languages
is through the video tutorials because it is the best to learn as visualisation is much better than
anything so go through it.here providing you some link through which u can become a master
and learn all the things in hindi as well as in english and u will also get coding ground to code
and also get certificate from iit mumbai.
visit:-Unanth - Online Video Tutorial Courses, Online Learning & Training Marketplaceu will
also get wide variety over there.
114 Views
UpvoteDownvote
Share
RecommendedAll
Then you have to learn whatever language the competition will be using (or one of the languages
that the competition will accept). Then you have to use it for a couple of years, every day, to
become mediocre at it, so you can enter a competition and see just how far you have yet to go.
(Some people learn faster than others, but at least a couple of years is the minimum time it will
take anyone to get good enough to compete with [and probably lose to] people who have been
programming for 20 or 30 years.)
RecommendedAll
Zahan Ahmad
Answered Sep 5
as a beginner if you over looked on your high school mathematics so do solve high school
mathematics books you’ll feel more comfortable for competitive programming. take one
language i would like to suggest c++ if you don’t know c++ so learn from here The C++
Resources Network try to code your self do fast and then learn algorithm.
if you’ll practice a lot in competitive programming you’ll be able to solve a lot of problems from
bottom to top only hard work and practice required.
157 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Sachinreddy Kukale, studied at Rural Engineering College Bhalki
Updated Mar 12, 2017
Originally Answered: How do I learn Algorithms for competitive programming?
You can learn basics of algorithms only!!! After that it is up to your capabilities how much you
capture and how you implement those algorithms to real life problems.
You can try 'nptel' for learning algorithms. If you search this term on internet you will get really
thousands of algorithm.
Another way is if you are computer engineering student then you can learn it in academics and
then you can explore your your knowledge.
870 Views
UpvoteDownvote
Share
RecommendedAll
209 Views
UpvoteDownvote
Share
RecommendedAll
Florio Potter
Answered Feb 2
In the same time well-bred people who attend colleges or even universities find it problematic
sometimes to learnprogramming. Just for some learners who want to become sophisticated
ones, this writing company proposes a cheap assistance from codeavail
experts from codeavail.com on time. you can learn quickly competitive programming
at CodeAvail.
p�� �n��/��&
13 Views
UpvoteDownvote
Share
RecommendedAll
If competitive stands for a solution to a complex problem, then you should probably not learn
about programming languages but instead learn about different algorithms (sorting, AI
algorithms, cryptography, hashing, etc. etc.) as well as advanced data
containers/type (dictionary, queue, dequeue, list, etc.)
For a competitive as faster, you have to learn another language than C, i.e. Java (or Python) so
that you could find and implement solutions faster. Also, you’re going to need to practice more
programming in side projects so that you could be able to find solutions on the fly faster.
RecommendedAll
RecommendedAll
Divyanshu Bhardwaj, BCA (Pursuing) Learning to Program & How to Crack Mca Entrance Exam,
School of Management Sciences Varanas...
Answered Jun 2, 2017
Originally Answered: How can I start competitive programming as I am a beginner?
Well before going for competitive programming you need to learn about the basics . If you have
knowledge about basics in programming then you can try these sites to start competitive
programming.
RecommendedAll
How to get started? Read this answer. May help you. - How can I get started with sites like spoj,
CodeChef..?
492 Views · View Upvoters · Answer requested by Hrishikesh Pandey
Upvote4Downvote
Share
RecommendedAll
You should be good at maths and problem solving sites like Brilliant | Excel in math and
science. help most
then sites like HackerRank gives you opportunity to start from basic to advanced level
RecommendedAll
RecommendedAll
Anonymous
Answered May 19, 2016
Here’s what you do Calm Yourself.. Now go take up a video course( Ex- MIT OCW Coursera
Udemy Udacity there’s alot more) it will be great if that video course provide you only
algorithm/pseudocode so that you can implement by your own also video courses save a lot time
and give better understanding of DS and Algos+ CLRS + Code MONK (Hackerearth) +
TopCoder Tutorials… Okay so you have gathered all your resources.. Now follow up that video
course step by step( Lectures by lectures).. Now as you have finished one Algorithm ex- like
quick sort then implement it on one of the competitive programming site ..Dude your
confidence will reach on another level when see that rare ‘Green Tick’ and you can lot more push
yourself….Now what go and participate in Contest and become red yellow whateva coder you
wanna become ..Hope to see your team as WF..pluse keep and eye in GSoc too..
Goodluck
327 Views
UpvoteDownvote
Share
RecommendedAll
Sandeep Hariani, works at IGATE
Answered Nov 11, 2014
Originally Answered: I want to do competitive programming. What should I do?
Your college, attendance , marks all do matter in helping you build your aptitude. Focus on your
goals.
Manage your time better and you will be able to achieve more than what you can. Good luck
93 Views
UpvoteDownvote
Share
RecommendedAll
21 Views
UpvoteDownvote
Share
RecommendedAll
Anonymous
Answered Jul 23, 2016
Originally Answered: How do I start studying for data structures and algorithms for informatics olympiads?
“Algorithms in C” and variant books are pretty decent. The site you linked is highly relevant,
albeit missing a few topics such as dynamic programming, and complexity.
IMO as a beginner it is good to start with learning complexity, assuming you already somewhat
know with the programming language syntax.
301 Views
UpvoteDownvote
Share
RecommendedAll
87 Views
UpvoteDownvote
Share
RecommendedAll
37 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
Kshitij Sharma, Programmer
Answered May 29, 2017
HackerEarth and HackerRank both has a good approach. You can try them.
RecommendedAll
RecommendedAll
73 Views
UpvoteDownvote
Share
RecommendedAll
54 Answers
Thus, doing well in programming contests is all about slicing the problem down the right plane
to break it down into data structures that are easy to represent and manipulate; in more or less a
language agnostic manner.
If you are looking at the programming language as a competitive advantage for programming
competitions, especially for the ICPC, I can almost gaurantee you that you are setting yourself
up for failure. ( See my answer to Does ACM-ICPC or IOI success correlate with industry
success? for samples of what kinds of problem domains I've observed to be popular in the
contests )
Spend that time practicing problems in any one language of your choice - it does not matter
which language you pick. The concepts and implementation speed in one given language do
matter a lot, but the choice of language does not.
22.3k Views · View Upvoters
Your response is private
Is this answer still relevant and up to date?
YesNo
Upvote61Downvote
Share
Anders Kaseorg's answer to Is C++ slower than C? If yes, is the difference significant?
Rest languages such as python and java are also most commonly used.
1. C - Understanding based implementations , you may create your own custom libraries
using it but it takes time .
2. C++ - It is the best Because it has got STL support and no other language
can beat it. However you need to implement your own Data Structure in
case of Graph, Tree or Segment Tree implementation.
3. Java - Has a BigInteger Class Support Which is Really useful When we need to deal
with Really Big Numbers. Such as 10^200
4. Python - It is Short and user friendly but slow. So I Would Recommend C++ as your
Language. Learn Other languages too there is no harm in implementing a particular
code in multiple languages.
6.9k Views · View Upvoters
Upvote18Downvote
Share
RecommendedAll
However, for certain types of problems you might feel better to do it in Java or Python. Like
dealing with big integers which is not supported primitvely in C++.
So, I would suggest you focus on C++ but get some exposure of another language like python or
Java.
13.1k Views · View Upvoters
Your response is private
Is this answer still relevant and up to date?
YesNo
Upvote33Downvote
Share
RecommendedAll
Andrés Ibañez, I like to study and learn different programming languages and paradigms.
Answered Sep 30, 2011
Last Saturday, I participated in the a local ACM ICPC competition, so I will do my best to give as
many details as possible in this answer.
Leaving that aside, this is a most interesting question, because all competitions are different and
they have different requirements, I will tell you the requirements of the ACM ICPC and then I
will tell you why we chose the tools we used.
The ACM ICPC has many complex problems, and you are limited in using either C, C++, or Java.
For this particular round, we used C++ and just C++; but on the prior round we (as in, my team)
decided to use Java for an exercise due to the fact that the exercise could generate ridiculously
big numbers, and C++'s long long data type wasn't big enough to use it, so we opted for Java for
that one exercise so we could use the BigInteger wrapper class. But it was the only need for Java.
For the rest, we used C++ simply because we are more familiar with it and we have experience
using STL classes that simplified our job a lot easier.
You have to keep in mind that judges are very strict with the output and execution time of your
programs. If your programs take too long to do their job, you receive a Timeout Message and
your submission is rejected. If you have one extra space at the end of an output line, then the
judge penalizes you. We found it easier to build our strings in C++ most of the time (although
with Java it presents no issues, but it does take a longer time to type out a instruction to print a
line than C/C++ does). We also used C++ because of it's speed, because we didn't know (and
still we don't) how slow is too slow, so regarding that matter we decided to use C++ over Java.
Know your tools and when to use them. Now if you get the chance to learn Python and use it in a
competition, then that would be most wonderful.
All in all, I agree with Kavinay Kishor: There is no 'best language'. After all, teams in
competitions are usually made of 3 - 4 people (for what I have seen, this is really my first year
competing), and everyone should be able to do everything to speed up problem solving. Of
course, it doesn't hurt to know more than your teammates when it comes to a language or to a
language feature, but it shouldn't be your focus to 'master' something, because if you never use
that something again then it might be a waste of time in the long run.
12.2k Views · View Upvoters
Upvote12Downvote
Share
RecommendedAll
However, I've often observed that for programming competitions, at least when saving a couple
of minutes per problem can make a difference, C++ does better than Java because fewer lines of
code need to be written. This can be minimized further if one is using clever and useful macros
(which everybody does). Also C++ has faster execution time (by an order of 2 or more if problem
is IO intensive). This sometimes allows for algorithmically sub-optimal but fast solutions written
in C++ to pass as the time limits are set to allow algorithmically optimal solutions written even
in slower languages.
So though I like Java much more compared to C++, I most often write programs in C++. C
doesn't have a DS library support and no other languages are allowed.
27.3k Views · View Upvoters
Upvote119Downvote
Share
Kartik Ayyar
I've been out of the game for a while now, though at least when I was into the contests I don't r...
For example:
But when we apply the same question to competitive coding, it sounds absurd.
The sole reason why SPOJ allows coding in any language is that all the languages
are EQUALLY good to be used there.
And if you have decided to go for competitive coding, it's most likely that you are
comfortable( rather proficient) with at least one programming language.
Now, if you are new to the programming world, and are looking for the best language you could
learn, then these are some facts I would like you to know.
P.S. The suggestion made at the bottom were taken from here : The different uses of
programming languages .
6.2k Views · View Upvoters
Upvote13Downvote
Share
RecommendedAll
Utkarsh Gupta, B TECH from Indian Institute of Information Technology, Allahabad (2020)
Answered Jul 22, 2017
C (to be more specific C++)
YES..
So who want to type much and also if you are exception then time is always a factor
in “COMPETITIVE - PROGRAMMING - CODING”
“PROJECTS”
And you have to code tremendous amount of lines relative to competitive - programming -
coding
So “PYTHON” :-
1. Most programmer-friendly language with most elegant syntax which is minimal for typing.
One must start learning languages for projects only after 4th /5th semester i. e. in 5th /6th
semester.
2.7k Views · View Upvoters
Upvote18Downvote
Share
RecommendedAll
Competitive programmers mostly use C++ because of STL and Java. They are supported in
almost all the platforms I have seen. C is not used because of lack of collections in standard
library. Python is also supported in many platforms and has nice library.
Other than that, some platforms are pretty strict about time limits. Some have multipliers (for
instance if time limit is 1s for C++, it is 2s for Java and so on). When time limit is strict, you have
to choose a language like C++.
Some platforms like Google Code Jam or Facebook Hacker Cup don’t run your code, instead
they ask you to submit the output and the code. You can use any of the languages for which a
free compiler/interpreter is available. If you get the algorithm correct, the time given to get and
submit the output is more than sufficient. So language choice doesn’t matter much. I have
actually submitted a solution in Python in a live contest and got accepted.
2.1k Views · View Upvoters
Upvote17Downvote
Share
RecommendedAll
Suraj Subraveti, Work hard, party harder, Quora hardest
Answered Oct 26, 2014
Originally Answered: In which language should I write in programming contests, C++ or Java (especially for INOI
2015)?
C++. No question about that. C++ is much faster than Java. While Java is great for building
applications, it doesn't gel well with competitive programming. I am more comfortable with C++
because:
1. Taking input is much easier with C++. All you have to do is to use cin or scanf. In Java, a
scanner class object must be created and must be configured to take input from System.in object
and also integers must be extracted from the input stream using nextInt(). Too cumbersome.
2. You need not write your code in a class in C++,but in Java everything is object-oriented. You
have to use objects and classes for everything.
3. Though C++ is considered to be an object-oriented programming language, you have the
option of using it like C i.e. in a procedure-oriented way(the procedural way is the most
recommended way to approach competitive coding). This is impossible with Java.
Strictly speaking, you don't even need C++. You can do wonders with C itself and that's what
people usually do in coding competitions.Therefore, my advice to you is to chuck C++ too and
use C. But, personally, I prefer C++ because I am more familiar with it.
So, to summarize, chuck Java and even Python for competitive coding. Stick with C or C++ for
the best results.
5.7k Views · View Upvoters
Upvote12Downvote
Share
RecommendedAll
For example suppose, you want to sort strings. In Java, the Comparable interface is
implemented by String class which means there is a compareTo() method which compares two
Strings and returns -1, 0 and 1 based on the comparision result. So, we can directly use this
instead of writing our own code to compare strings, which makes us lazy to think. But in C we
have to write our own code for this.
Since the motive is competitive programming, where time of execution and memory space also
matters, go for C. You will evolve better as a programmer as you will think more.
RecommendedAll
I love the raw speed of Python because I'm faster making mistakes and fixing them in that
language than setting up Eclipse for a Java project. :D But that's just the way I think and work
best. You will likely find your own best fit based on your intuitive understanding of how to best
use languages you're already familiar with.
7.6k Views · View Upvoters
Upvote11Downvote
Share
RecommendedAll
RecommendedAll
Kshitiz Bakshi, Fascinated by Computer Science, playing around
Answered Feb 26, 2016
Originally Answered: Which language is best for competitive coding?
If you look at competitions like ACM-ICPC, from what I last knew they only allowed C, C++ and
Java. So while technically all mainstream languages are equally powerful enough to solve
problems, practically if you want to compete it events like this you have these three choices to
build up your skill set in.
Between these, C might be too low level for most problems. It's libraries do not have any mildly
complex data structures or algorithms to use and you'll have to write everything on your own. So
I wouldn't really recommend it.
Java and C++ appear to be equally well loaded - C++ with STL and Java with Collections. Your
choice here could be just personal; some like Java syntax while some hate its verboseness.
Similarly, some might like that Java as a language is much stricter so easier to program quickly
(no pointers and less data type overflow issues to deal with). Java also provides a BigInteger
class which can sometimes be helpful.
C++ is faster but I think most online judges account for the performance difference. So you
could pick any.
I can say that for a beginner, C++ can be a bit overwhelming due to it's different data types and
sizes, stl syntax and iterators, and other such things. Java has less a bit less of this, and also
comes loaded with a LOT of stuff pre done like maps, lists, sorts, collections (like c++ stl) so you
can give it a shot.
2k Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Oh yeah, and as Andrés points out, you'll need to be at least a little familiar with Java in case you
have to do things with bigints. Most programming contests I know of don't pack gmp.
Here's a template similar to what I would usually start with, in C:
1. #include <assert.h>
2. #include <stdio.h>
3. #include <stdlib.h>
4. #include <math.h>
5. #include <algorithm.h>
6. #include <sys/types.h>
7.
8. typedef struct in *IN;
9. typedef struct out *OUT;
10.
11. int read(IN in) {
12.
13. }
14.
15. struct in {
16.
17. };
18.
19. int solve(IN in, OUT out) {
20.
21. }
22.
23. struct out {
24.
25. };
26.
27. int print(OUT out) {
28.
29. }
30.
31. int main(void) {
32. struct in in; struct out out;
33. int r = read(&in); assert(r == 0);
34. r = solve(&in, &out); assert(r == 0);
35. r = print(&out); assert(r == 0);
36. return 0;
37. }
4.1k Views · View Upvoters
Upvote6Downvote
Share
RecommendedAll
I love C and you should definitely learn C but using only C (e.g. without learning C++ which is a
basically superset of C) is going to be at least mildly disadvantageous during competition.
If you have the time you could use Java (since you know it somewhat already) and learn C/C++
with the intention of switching later. Otherwise, I would go ahead and learn C/C++ if you're up
to doing so.
Background: I learned Java first and switched to C/C++ last spring. I don't think Vivek Verma's
first issue should be of too much concern. It's true that learning Java improperly can give you
the habits of a bad programmer but learning any other language improperly
Background: I learned Java first and switched to C/C++ last spring. I don't think Vivek Verma's
first issue should be of too much concern. It's true that learning Java improperly can give you
the habits of a bad programmer but learning any other language improperly is no better. C can
be very very frustrating if you've never encountered similar concepts before.
10.2k Views · View Upvoters · Answer requested by Sumit Raj
Upvote6Downvote
Share
RecommendedAll
But I would really suggest getting in C or C++, the reason being that you would get to learn the
inner working of memory Allocation and Management.
2.1k Views · View Upvoters
Upvote9Downvote
Share
RecommendedAll
Verdu Sanjay, works at Students
Answered Aug 14, 2016
Originally Answered: Which language should I learn for competitive programming?
It totally depends on you.For me its c++.It contains all the tools i need to solve a problem.C++ is
fast.Besides that,c++ lacks in Big integer thing.
I think after learning c++,it wouldn’t be too hard for anyone to learn java. It will hardly take 10–
20 days.
So,i think keeping competitive programming in mind ,you could prefer learning C++ first.
345 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Amit Attry, I learned many languages c,c++,python and now i am learning Perl
Answered Dec 8, 2015
i will suggest you python because it is ;
1. easy to code
2. easy to learn
3. decrease time of coding in competitions
Python has enough in common with Java and C++ that adding a notch on your belt for Python
as another of the N programming languages you know is pretty easy. Paradigm differences
aren't a huge barrier to trying Python. You will find there are differences. Don't resent the
differences, seek them out and think about them. Take care to learn to write in Pythonic style.
That is, don't just write Java code in Python syntax.
I admire Python for the way it let's me express my code in fewer lines than many other
languages, but still be readable and modifiable. It is well suited for incremental development.
Arguably, it's lack of compile time checking of things pretty much demands that you be diligent
in testing everything. That is perhaps, both a pro and a con.
Don't resent that. It's a sign the the community is healthy and working to make things even
better. Dive in!
--- by R. Drew Davis
894 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
In python:
1. str1 = “hello”
2. str2 = “World”
3. str3 = str1 + str2 # str3 = “helloWorld”
In C:
1. str1[] = “hello”
2. str2[] = “World”
3. char str3[256];
4. snprintf(str3, sizeof(str3), "%s%s", str1, str2);
In C you should be careful about the size of str3 you allocate. And also sizeof() works in this
example but if you are using a pointer, then you will have to write more code to allocate dynamic
memory(use malloc).
There are many other ways to do this more efficiently in C, but the point is, it takes time and is
more prone to errors, where as in Python it is more intuitive and natural. But Python can never
beat the execution time and final compiled code size of C applications. That is the reason why C
has stood the test of time so long.
532 Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
Siffi Singh, Learner.
Answered Sep 16, 2016
Every language is good, but I personally recommend C++.
Reason: STL. You do not have to define your sort function every time you make a new program
or define same function twice for the different data types, instead we can just use the generic
container and algorithms in STL.
This saves a lot of time, code and effort during programming, thus C++ STL is heavily used in
the competitive programming, plus it is reliable and fast.
Happy Coding!! :D
1.1k Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
If you don't have a programming competition community around you, all things being equal I
would probably propose C++. It seems to be more popular (at least by Google Code Jam stats),
so you will have more places to pick up good patterns from.
However, C++ can be a bit foreign if you never used it. If you just want to see if programming
competitions are fun for you, choose whatever language you feel most comfortable in (which
seems to be Java or maybe PHP in your case; the latter assuming you have an open-input format
competition in mind), and consider switching only once you know you're willing to invest more
time into learning.
3.5k Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Rishab Mehra, Undergrad CS, Bay Area
Answered Aug 5, 2014
Originally Answered: Which language should I learn for competitive programming: C or Java?
Well if you want to dive into competitive programming really quickly, python would be the
easiest for you, given your background. But honestly learning a language for competitive
programming purposes is not such a big deal (you can literally do it in a couple of hours) since
you only need to know the basics of the language. You rather need to spend time on
logic/algos/practice.
4.5k Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
RecommendedAll
Anonymous
Answered Aug 6, 2014
Originally Answered: Which language should I learn for competitive programming: C or Java?
My personal thought will be that you should choose C++ instead of C
Although the last two points should not be a problem, because slower languages like JAVA,
python etc. are usually given more time limit than faster languages like C/C++ and memory
limit of code is usually 256 MB which is sufficient for JAVA codes..
JAVA is also having very good built in libraries and one more thing JAVA is more popular than
C++ in software development
1.5k Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Yashasvi Sharma, Bsc Computer Science at IIMT Engineering College, Meerut (2016-present)
Answered Feb 22
Basically, competitive programming isn’t a mind sport usually held over the Internet or local
networks, involving participants trying to program according to “provided specifications”.
From my point of view, you should first learn the C and C++ language and get perfection in
these two languages Beachse this is the base of your other languages like JAVA, PHP etc . When
you are done now you should sit back and give yourself a thought
If you wanna become web developer than you have to decide by which language you wanna do
your web developing stuff. There are number of languages in which you can do web developing
such as C , C++ , JAVA, PYTHON, PHP , RUBY ( trending in India nowadays), CORE JAVA,
JAVASCRIPT etc
The other option is if you wanna work with multinational companies like google, Facebook or
yahoo etc than you should mainly these four languages which are
1. C
2. C++
3. Java
4. Python
79 Views
UpvoteDownvote
Share
RecommendedAll
Abhishek Sharma, Quoran | Learner | Dancer | Software Developer
Answered Feb 25, 2015
There is no criteria that which language should i choose for prog. competitions. It completely
depends on you that which language you want to choose for it. Like for example i like Java for
competitive programming. I have practiced most of the codes in java. And as the time passed i
starting loving it more. So you can't categorized the languages for programming competitions.
Yeah if you would like to specialize them on the basis of time taken by them then in that case you
can categorize them.
1.9k Views · View Upvoters
Upvote4Downvote
Share
RecommendedAll
Go for C,C++; If you like difficulty, performance and want to understand basics of
programming, computers, languages. C helps you understand.
On the other hand, I suggest you to learn and experience both and others too, and see which you
like most. For instance Visual Basic used to be my favorite language when I was in high school
because I didn't know any other. Then I've learned Java, C#, C, C++, Objective-C and my
favorite language usually changed. You can't have idea something you don't know that's why
give all a try, then expertise/go on with the ones you love.
2.4k Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
Though as a backup it is always a good idea to have hands on other languages as well .
For instance Python allows you to compute long integers , but in case of C/C++ you may have to
save the results in an array by extracting each digit , thereby making your task a bit
complicated .
1.3k Views
UpvoteDownvote
Share
RecommendedAll
For implementing the basic data structures like Linked list, Stacks, Queues I go with C+
+ language.
That way I can code every small functionality on the Data Structures from the scratch, without
using any inbuilt functions.
Edit: In C++, you can use STLs for including the standard data structures like linked lists, Hash
map, sets etc.
2.5k Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
David Verax
Answered Nov 2, 2014
Originally Answered: In which language should I write in programming contests, C++ or Java (especially for INOI
2015)?
It does not matter which language you use. Some say that C++ is faster than Java but in most
programming contests that does not matter because all problems are tested in both C++ and
Java so you can be sure that there always exists a solution in Java. Also, many programming
contests have higher time limits for Java because it is slightly slower.
In programming contests such as IOI, ICPC etc. the language used matters very less. What
matters is how quickly you manage to come up with an algorithm.
Some people express concerns about I/O in Java saying that it is cumbersome. Trust me, many
active competitive programmers today use Java and the top programmers make blazing fast
submissions. So, having to type something like in.nextInt() hardly matters in a programming
contest.
1.8k Views · View Upvoters · Not for Reproduction
Upvote2Downvote
Share
RecommendedAll
As its your first programming language I would suggest go with Python. Programmers use
Python to build desktop apps and web apps alike, and it has great tools for data mining. Python
is particularly popular with the academic community for scientific computing, data analysis, and
bioinformatics.
Later if you want you can learn C++, Java, Javascript or Ruby.
1.8k Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
Why do most of the high-rated competitive programmers use C++ instead of Java? (Petr
Mitrichev uses Java though.)
What are the good ways to switch between C++ and Java in programming contests?
1k Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
C++ I would say is the best because it is more memory efficient and can be faster than Java, and
all of the questions have timing requirements for competitions. With that being said, if you are
considerable stronger with Java than you are with C like my team then Java isn't a bad choice.
We placed very respectably in all of our competitions and we have only used Java and Python for
the ones that have allowed. It is just a matter of what you are comfortable with, and what you
are best with.
I really like Java because of the ease of data structure implementation, but there is no doubt that
C++ is better because of performance. That is currently what I am working on in order to better
myself/team for the next competitions.
2.6k Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
However, for certain types of problems you might feel better to do it in Java or Python. Like
dealing with big integers which is not supported primitvely in C++.
So, I would suggest you focus on C++ but get some exposure of another language like python or
Java.
558 Views · View Upvoters
Upvote3Downvote
Share
RecommendedAll
RecommendedAll
Performance is the good thing in C++, it's predictable based on the code.
2.5k Views · View Upvoters · Answer requested by Felix Black
Upvote5Downvote
Share
RecommendedAll
Shubhomoy Biswas, Artist/Developer
Answered Aug 6, 2014
Originally Answered: Which language should I learn for competitive programming: C or Java?
C language is the basic of all languages. Using Java, you can perform some tasks without writing
much code as many in-built libraries and functions are present. But in competitive
programming, time limit is a factor and using Java's inbuilt functions may cost you
time..programming in C and creating faster algorithms is a plus for competitive programming
1.3k Views
UpvoteDownvote
Share
RecommendedAll
Anonymous
Answered Sep 14, 2016
Originally Answered: What is the best Language for competitive programming?
I suggest you to go with C++, its pretty fast and you can also use STL in your code.
I use Python sometimes if there is no strict time constraint. Python is very easy to write as it
needs only very less number of lines compare to other languages.
Happy coding…:)
488 Views · View Upvoters
Upvote2Downvote
Share
RecommendedAll
RecommendedAll
190 Views
UpvoteDownvote
Share
RecommendedAll
But pretty soon you will run into a problem where the runtime performance is a stumbling
block. Or you may find that you need some sort of advanced data structure that is had to express
cleanly in python.
1.8k Views · View Upvoters
Upvote5Downvote
Share
RecommendedAll
Vivek Verma, Curious Learner
Updated Aug 8, 2014
Originally Answered: Which language should I learn for competitive programming: C or Java?
Go for C .
1. there are many things inbuilt in Java which will not allow you to think like a
programmer as you would be doing while figuring out the correct algorithm in
C.
2. the structure of the C program is of basic level ; making simple to learn high
end languages afterwards.
2.5k Views · View Upvoters
Upvote10Downvote
Share
RecommendedAll
RecommendedAll
ANKIT VASHISTHA, B.E Computer Science and Engineering, Sir M Visvesvaraya Institute of
Technology (2019)
Answered Oct 27
It doesn’t depend on which language you work out your problems on. The basic concepts and
your problem solving ability is what matters at last. But, still Python with its simpler syntax as
well as it’s huge inbuilt library makes it a better choice for solving problems.
16 Views
UpvoteDownvote
Share
RecommendedAll
Rohan Yadav
Answered Aug 4, 2014
Originally Answered: Which language should I learn for competitive programming: C or Java?
I think c++ is very good to start. I don't think java is bad language or it will make you bad
programmer. But some things you can learn from c++ like memory management, pointers, with
the help of pointers how linked lists gets created, how binary trees are evolved, what is
memory/heap. You know these things are really good if you want to learn.
with java you don't have to care much about these. Becus you have all the libraries, just import it
& use it. Yes i think Java is bit vast & heavy becus of lots of libraries. Always remember, one of
the best Programmers in recent years Petr Mitrichev uses Java to code & he is working in
Google.
Also its true that c++ code runs bit faster than java code.
1.7k Views · View Upvoters
Upvote1Downvote
Share
RecommendedAll
74 Views
UpvoteDownvote
Share
RecommendedAll
Anilraj Kumar Sarawata, B.Tech (Honors) Computer Science Engineering, Rajasthan Technical
University (2014)
Answered Nov 5
I think C++ is the best example out of these. After C++ , C# is the best out of all programming
languages.
If you know very well about C++ then there is no more difference between it's, if don't know
then a very big dig in C++ and C#.
11 Views
UpvoteDownvote
Share
RecommendedAll
Personally, I use C++ because of its simplicity in syntax. However, you can do the exact same
things with Java, and I would say that Java is even better for questions involving strings. C++
however has a few key elements that Java has, such as pairs, making it quicker and easier to use
for me.
122 Views
UpvoteDownvote
Share
RecommendedAll
Michael Primo, High School Computer Science & Mathematics, Istituto Tecnico Ascanio Sobrero
(2015)
Answered Nov 26
C++ have a STL very good and recommended to implement algorithms and running them fast.
You need to use a fast programming language and you Need to implement algorithms fast. C++
Is for you.
118 Views
UpvoteDownvote
Share
RecommendedAll
RecommendedAll
RecommendedAll
RecommendedAll
RecommendedAll
Arjun Kumar
Answered Aug 25, 2015
C language is best for Competitive Programming
26 Views