How to Become the Best Programmer in the World

61,859 reads

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.

reactions

Let’s get cracking.

reactions

1. Lessons from Dennis Ritchie, the Man Behind the UNIX and C

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity — Dennis Ritchie

Dennis Ritchie, Techtricksworld

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).

reactions

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.

reactions

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.

reactions

Here are some of Dennis Ritchie’s accomplishments:

reactions

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?

reactions

Dennis Ritchie — popularly called the “Father of the C programming language” — was said to be a sweet, kind, unassuming man — and a complete geek!

reactions

But he didn’t start out as a geek.

reactions

Ritchie was born in New York and grew up in the Garden city, New Jersey. He had a stable childhood, and did well academically.

reactions

He went on to study at Harvard University, where he studied science and graduated with a bachelor’s degree in Physics.

reactions

So when did computers come into Ritchie’s Life?

reactions

POINT 1: If you look to be good at writing great software, you’re going to have to stay curious.

I am neither clever nor especially gifted. I am only very, very curious — Albert Einstein

Curiosity fuels the hunger for knowledge. And knowledge my dear, rules the world.

reactions

While a student, Ritchie somehow attended a lecture on how the Univac I worked.

reactions

The UNIVAC I (Universal Automated Computer I) was the first commercial computer produced in the United States.

reactions

Below is what it looked like:

reactions

Seriously, what kind of curiosity makes a person seat and actually enjoy a lecture on how that thing works?

reactions

Apparently, the kind that makes a great programmer.

reactions

After that encounter, Ritchie went on to further study how the computer really worked.

reactions

Curiosity kills the cat 🐱. We all know that, but you’re not a Cat.

reactions

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

Make building a lot of projects the product of your curiosity. Translate that curiosity into building different projects — and like Ritchie, this will help you learn your way around the profession.

reactions

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.

reactions

This was something else Dennis Ritchie was said to do well.

reactions

If you can’t get physically close to the people you consider better and more experienced, the internet is your friend.

reactions

Follow them on channels you feel comfortable with. Read their blog posts. Watch their youtube videos. Listen to their podcasts.

reactions

Just “stay” around them.

reactions

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.

reactions

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.

reactions

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.

reactions

Get curious. Study the concepts. Ask for help.

reactions

You should not look back until you have solved the problem.

reactions

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.

reactions

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

Linus Torvalds, Softpedia

Named by Time magazine as the ‘one of the most influential people in the world, Linus Torvalds is the creative genius behind the Linux kernel operating system.

reactions

In 1998, he was a recipient of the Electronic Frontier Foundation(EFF) Pioneer Award.

In 1999, he was given the title of ‘one of the top 100 innovators, under the age of 35, in the world’ by MIT Technology Review TR100.

In 2000, he was the recipient of the Lovelace Medal, which was conferred by the British Computer Society

In 2008, he became an inductee into the Hall of Fellows of the Computer History Museum

In 2012, he was inducted into the Internet Hall of Fame.

In 2012, he was also one of the recipients of the Millennium Technology Prize.

Now, that’s worth some cool ride.

reactions

Linus Torvalds’ license plate. Photo: Jon Snyder/Wired

Born in Helsinki, 1969, and to a family of journalists, Linus says his childhood was nothing very special.

reactions

Influenced largely by his maternal grandfather, Linus wrote his first programs at 10, or technically, 12. He helped his grandfather type in his programs, and until age 12 did he start modifying them and writing his own programs.

reactions

If being a self taught programmer means teaching yourself to program, regardless of some basic rudimentary computer classes, Linus is equally a self-taught programmer.

reactions

According to him, “there were programming classes in high school at the time, but they were pretty basic and rudimentary”

reactions

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.”

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.

reactions

That’s pretty badass.

reactions

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.

reactions

In his interview with the Computer History Museum, he says,

reactions

“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”

reactions

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.

reactions

You learn, make mistakes, build stuffs, see yourself get good, and you just totally love what you do then.

reactions

Even with those who start out with love, their love is seen to grow even more as they master their craft.

reactions

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 !

reactions

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.

reactions

The details of it may bore you. But here’s the important bit.

reactions

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.

reactions

Linus played around the machine, and wrote his programs to boot off the floppy, with no OS.

reactions

Linus wanted to play with the CPU itself. So, using the OS would have defeated the purpose of his exercise.

reactions

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

reactions

Many successful people start small, but make it big.

reactions

The danger associated with starting big, is that you may fall into the trap of being overwhelmed.

reactions

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.

reactions

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.

reactions

It’s easy to assume that Linus just magically knew how to build an operating system. That’s not true.

reactions

He had put in the work required.

reactions

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.

reactions

Nothing magical. You do have to put in the hours of work required to get good at programming.

reactions

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

Bonus Points From Other Experienced Developers

I personally gathered inputs from some experienced software engineers. What do they think about being the best developer you can be?

reactions

POINT 9: Outwork Everyone Else Trying to be the Best

Bill Sourour, is being writing software for over 2 decades now. If you’re curious, Quincy Larson interviewed him here

reactions

I reached out to him and here is what he said:

reactions

The basic answer is, to be the best at something you have to outwork everyone else who is also trying to be the best. That means code, read, learn, work at it every day and all the time. — Bill Sourour

In Bill’s words, a more interesting question might be, why do you want to be the BEST in THE WORLD? What will that get you? Is that the real goal?

reactions

How about trying to be the best that YOU CAN BE and not worrying about the rest of the world?

reactions

It still means working your ass off, but then you will only be competing against yourself. Make your goal every day, to be better than you were yesterday, and you will get very far.

reactions

POINT 10: Learn to Think About Abstractions and Software Design More Clearly

Dave

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

reactions

If you’re curious, here’s his blog

reactions

I reached out to Dave a couple months back, and the detail in his response baffled me.

reactions

Here are his thoughts:

reactions

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).

reactions

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.

reactions

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.

reactions

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.

reactions

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.

reactions

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.

reactions

Command line knowledge seems like an ancillary, secondary thing. But I think it’s really important.

reactions

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.

reactions

Setting up builds becomes less intimidating because all the commands make sense, or at least you see the commonalities between them.

reactions

5. Understand Software Design

So the hardest thing for me about improving as a developer is the architecture bit.

reactions

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.

reactions

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.

reactions

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.

reactions

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.

reactions

In his recent Quora Session, DHH, Creator of Ruby on Rails, puts it this way.

reactions

“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!

reactions

Do recommend the article, and drop your comments.

reactions

Any tips that have helped you personally? Let’s hear it!

reactions

Tags