How To Become The Best Programmer In The World
By Raktim Bar
I have no idea how to become the best programmer in the world. So I figured out the best way to get ahead is to learn from the all time greatest programmers and get responses from some amazing engineers too.Let's start this matter.
>When we search the top 10 best programmer in the world in Google by result we will get some programmer names in the resultant page,as the name's are like that:
1. Dennis Ritchie(C programming language)
2. Bjarne Stroustrup(C++ programming language)
3. James Gosling(Java programming language)
4. Linus Torvalds(Developer of Linux kernel)
5. Anders Hejlsberg(C# programming language)
6. Tim Berners-Lee(inventor of WWW)
7. Brian Kernighan(AWK & AMPL programming language)
8. Ken Thompson(B programming language)
9. Guido van Rossum(Python programming language)
10. Donald Knuth(Developer of the rigorous analysis of the computational complexity of algorithms and systematized formal mathematical techniques)
these are the top 10 programmer's(source:Google)
1. Lessons from Dennis Ritchie, the Man Behind the UNIX and C:
Back in the days before you could go to college and get a degree in computer programming, Dennis Ritchie managed to get a job working at the Massachusetts Institute of Technology (MIT).
Computer Labs were not as picky as they now are, and welcomed practically anyone with the patience to help them work on their room-sized computers.
For someone who started out as an industry outsider, creating both UNIX and the C language — two of the most widely used technologies in computer history — is a big deal. A very big deal.
Here are some of Dennis Ritchie’s accomplishments:
- Dennis Ritchie created the C programming language, and co-created the UNIX operating system with his buddy, Ken Thompson.
- In 1983 he was a recipient of the Turing Award from the Association of Computing Machinery(ACM)
- In 1990, both Ritchie and Thompson received the IEEE Richard W. Hamming Medal from the Institute of Electrical and Electronics Engineers (IEEE)
- In 1997 he was made a fellow of the Computer History Museum
- He received the National Medal of Technology from President Clinton in 1999
So how would you go about accomplishing all that? And more to the point, how did Dennis Ritchie even learn to write software?
Dennis Ritchie — popularly called the “Father of the C programming language” — was said to be a sweet, kind, unassuming man — and a complete geek!
But he didn’t start out as a geek.
Ritchie was born in New York and grew up in the Garden city, New Jersey. He had a stable childhood, and did well academically.
He went on to study at Harvard University, where he studied science and graduated with a bachelor’s degree in Physics.
POINT 1: If you look to be good at writing great software, you’re going to have to stay curious.
Curiosity fuels the hunger for knowledge. And knowledge my dear, rules the world.
While a student, Ritchie somehow attended a lecture on how the Univac I worked.
The UNIVAC I (Universal Automated Computer I) was the first commercial computer produced in the United States.
Below is what it looked like:
Seriously, what kind of curiosity makes a person seat and actually enjoy a lecture on how that thing works?
Apparently, the kind that makes a great programmer.
After that encounter, Ritchie went on to further study how the computer really worked.
Curiosity kills the cat 🐱. We all know that, but you’re not a Cat.
POINT 2: I know you’ve heard this before, but Build stuffs. Lots of stuffs.
Instead of focusing on specific projects, I wanted to be around people with a lot of experience and ideas. So I started working on various projects to learn my way around the profession.” — Dennis Ritchie
POINT 3: Hang Around Those you Consider Better and More Experienced.
The obvious reason why you should do this is, you’ll be learning at a much faster pace and wouldn’t get too comfortable with your current knowledge.
This was something else Dennis Ritchie was said to do well.
If you can’t get physically close to the people you consider better and more experienced, the internet is your friend.
Follow them on channels you feel comfortable with. Read their blog posts. Watch their youtube videos. Listen to their podcasts.
Just “stay” around them.
POINT 4: Solve Problems.
“It’s not the actual programming that’s interesting. But it’s what you can accomplish with the end results that are important.” — Dennis Ritchie
Dennis Ritchie lived at a time when computers filled a room, and so did many more. But Ritchie knew that smaller computers were being developed, and they did not have easy to use operating systems, so he embarked on a project to build one.
This is how Ritchie viewed programming in general. It was about what could be accomplished. The problems that could be solved, and the effect they’d have on people.
If a problem bugs you so much, don’t ignore it. If you think it’s being overlooked by many, solve it. Build something. Just do it.
Get curious. Study the concepts. Ask for help.
You should not look back until you have solved the problem
"When something is important enough, you do it even if the odds are not in your favor "— Elon Musk.
Here are some Examples :
- Electron JS, the technology for building desktop applications with Javascript came to life because a part of the Github team wanted to build an hackable editor with web technologies.
- Redux, the predicable state container for Javascript apps was built by Dan Abramov because he wanted to create a state management library with minimal API but completely predictable behavior — that’s the way he puts it.
- Quincy Larson and a couple others built the Freecodecamp platform to solve the problem of teaching web technologies in an open source community.
They saw a problem, and went on to solve it.
Key takeaways from the Dennis Ritchie, the Father of the C Programming Language
- Stay Curious, and keep fueling the fire of knowledge. We can never know all.
- Understand the fundamentals. The master of the basics, is the true master of the skill.
- Solve problems. If you think something can be done differently, and should be done, just do it. You’ll get better faster, and better lives while at it
- Build lots of different projects
- Hang around people with more expertise, experience and ideas. You can’t trade this for anything else.
2. Lessons from Linus Torvalds, the Man Behind the Linux Kernel OS
Point 5: A formal Computer science education is great, but don’t let that stop you.
“Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.”- Eric Raymond
While growing up, Linus Torvalds found it interesting to write games, and he was doing machine code. He didn’t have access to an assembler, so he did all the assembly on paper and wrote them as binary.
That’s pretty badass.
What’s even more interesting is that everyone in his family (other than those from his maternal side) were journalists. He was the black sheep.
In his interview with the Computer History Museum, he says,
“I was very much a geek. I stayed inside and read or programmed. And quite frankly, I still read and sit in front of a computer. It’s my bobby”
POINT 6: Love What You do. Not Just the Money and Fame it Brings.
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program — Linus Torvalds
I must state that, many times the love for programming doesn't come when you just start out. For many people, it is as an offshoot of mastering their craft.
You learn, make mistakes, build stuffs, see yourself get good, and you just totally love what you do then.
Even with those who start out with love, their love is seen to grow even more as they master their craft.
If you love programming but don’t seem to be improving, don’t give up. Most persons wore the same shoes — and in bigger sizes !
POINT 7: Be comfortable starting small — but grow.
“I just want to build my own Operating system” — Linus Torvalds
That’s NOT how the story goes. The Linux project didn't start out as an adventure to build an operating system.
The details of it may bore you. But here’s the important bit.
Linus ordered a MINIX, essentially a UNIX-like computer Operating System (OS). It was first released in 1987, with its complete source code made available to universities for study in courses and research.
Linus played around the machine, and wrote his programs to boot off the floppy, with no OS.
Linus wanted to play with the CPU itself. So, using the OS would have defeated the purpose of his exercise.
Down the line, he didn’t find the program he wrote very useful. He then extended his program to the point where it was an operating system
Many successful people start small, but make it big.
The danger associated with starting big, is that you may fall into the trap of being overwhelmed.
Also, it is perfectly okay to NOT know something. Perfectly okay to be an amateur at a new technology, but grow your wings, and master it as quick as possible.
POINT 8: You must do the work. Nobody else will do it for you
"And I had obviously been reading operating system books anyway " — Linus Torvalds
I am yet to meet a successful man, who does no work.
It’s easy to assume that Linus just magically knew how to build an operating system. That’s not true.
He had put in the work required.
In his interview with the Computer History Museum, he says, he started working on trying to reorganize the program he built so it acted more like a real operating system. And he had obviously been reading operating system books too.
Nothing magical. You do have to put in the hours of work required to get good at programming.
Key takeaways from Linus Torvalds
- A computer science education is great, but don’t let that stop you from being great.
- Keep loving what you do. Keep doing it well, forget the adulation and money, they’ll come later.
- It is perfectly okay to start small. Just don’t remain there.
- Be prepared to put in the hours of work needed. Nothing amazing comes cheap
POINT 9: Learn to Think About Abstractions and Software Design More Clearly
Dave Ceddia works as a software engineer in the Boston area, and his vast experience is one I’m come to respect over time. These days, he mostly builds frontend UIs with React and authored the book, Pure React
If you’re curious, here’s his blog
I reached out to Dave a couple months back, and the detail in his response baffled me.
Here are his thoughts:
1. At the right time, explore the advantages that come from being exposed to multiple programming languages
Learning multiple languages exposes you to new ideas and new ways of approaching problems (especially functional languages).
Then there are the lower-level ones like C that will teach you to be mindful of memory management and performance. You’ve got to build things, basically. Build lots of things.
2. Explore even more project types
Writing UI (User Interface) code is not like writing high-performance data acquisition code, is not like writing OpenGL code, is not like socket programming… So it’s interesting to branch out from one facet of development like frontend/backend stuff into other things, if only just to see what it’s like.
3. Gather a wide range of experience
So part of being a good developer to me is having a wide range of experiences. That might just be me though. Everyone will have their own answer for this. But I think it’s useful to know a little bit about everything.
I guess I’d call myself a generalist — I love learning new things, and so I’ve done lots of different stuff. Data acquisition code in C++ talking to custom hardware, GUIs in Qt, little games in OpenGL, boring Java and SQL, webapps in Ruby on Rails, little Raspberry Pi projects like a garage door opener… lots of little things.
4. Get great at Automation and Testing continually
Along the way, try to get good at automating things. I think a desire for automation has been the driver behind most of the projects I’ve done, but also, a great reason and motivator for learning Linux and the command line.
Command line knowledge seems like an ancillary, secondary thing. But I think it’s really important.
It changes how you see problems. Things like “oh crap I have to change that variable name across 30 files? nevermind…” become a few lines of bash.
Setting up builds becomes less intimidating because all the commands make sense, or at least you see the commonalities between them.
5. Understand Software Design
So the hardest thing for me about improving as a developer is the architecture bit.
Software design, how to structure your code so it’s reusable and easy to read and easy to modify. Getting great at refactoring and testing consistently.
I must admit I am not always great at testing. But TDD(Test driven development) is actually fun, and you should learn and practice it. I think it’s sort of a shortcut/system for getting better at the “design” side of developing software.
One of the best books I’ve read about design was Practical OO Design in Ruby by Sandi Metz . You don’t really have to know Ruby very well to get a lot of benefit out of it. It goes through refactoring a bunch of small examples to make them easier to maintain, and she discusses the tradeoffs and reasons behind every change she makes.
Conclusion
Where do you go from here? Apply these principles and begin your quest to become a better developer. Plus, you should endeavor to deliberately practice too.
In his recent Quora Session, DHH, Creator of Ruby on Rails, puts it this way.
Thanks for reading this article...
“It doesn’t help to practice the same lesson 10 times over. You have to constantly seek the edge of your comfort zone. ” — David Hansson, Creator of Ruby on Rails.
Good luck, and cheers to being a better developer!
Do recommend the article, and drop your comments.
Reference:I got help from Hackernoon ,The crazy programmer and Quora etc.
written by Raktim Bar
0 Comments:
Post a Comment