How To Become A Developer (4 Part Series)
In part one, we discussed the technical skills involved in becoming a developer. Now we're going to touch on some of the non-technical skills.
Programming is ultimately the art of converting human thought into machine logic. Therefore, half the job is found in understanding and expressing human thought!
In fact, communication is the single most important skill you can foster as a developer. Think about how much of it comes with the job: communicating with clients, co-workers, supervisors, users, open source contributors, peers, even your future self. You have to be able to write bug reports, review code, write documentation, create specifications, ask questions, answer questions...whew!
It is important to have a grasp of human langauge. It's important to be fluent in clear, correct English (the lingua franca of programming). If you're a native speaker of another language, you should also be able to use it effectively and fluently.
Grammar and spelling are important! There seems to be a societal push towards eschewing both of these, but a good programmer should give themselves no such license. If you cannot properly use human language, which is far more forgiving, how then can you properly use a programming language, which affords no room for error?
Proper language skills are important when communicating with other people. Programming is a truly international, multi-cultural field, and though English is the main language, a huge percentage of developers speak English as a second or third language! Using the language properly ensures that everyone, not just native speakers, can understand you.
If you want to improve your English skills, consider adding LanguageTool or Grammarly to your browser. I also highly recommend The Writer's Digest Grammar Desk Reference by Gary Lutz, and The Elements of Style by William Strunk and E.B. White (yes, that E.B. White.)
If you're curious whether skilled developers care about any of this, just take a look at the top writers here on DEV!
The majority of successful developers will admit to being avid readers, often of both fiction and non-fiction. This may seem tangental to the goal of learning to be a developer, but reading is the single best way to add to your knowledge and your command of the English language.
A casual glance at programming culture reveals this love of reading and language. Our jargon is peppered with references to Douglas Adams, Robert A. Heinlein, Lewis Carroll, and the like. Puns and subtle wordplay frequently appear in conversation, comments, and even the code itself.
Everyone's taste in fiction varies, but there also exist a number of non-fiction books about the programming industry that are worth picking up. I've included a few in the Recommended Reading section.
The important point is to make time to read, and to read more than just technical books.
Have you ever pondered how unusual it is that a website like DEV can exist centered around an entire industry? You won't usually find large communities like this for, say, plumbing or professional automotive repair. Sure, there are message boards, but nothing quite like DEV. Why?
Easy. Great programmers are generally also good writers. Because of the nature of our experience in software development, we are able to write good quality articles and books.
Of course, writing and communication skills don't just happen. They have to be honed, and the best way to do that is through writing! The good news is, you're (probably) already a member of this community, so if you want to get started, just click
[WRITE A POST] at the top of the page. The more you write, the better you'll get at it.
Once again, this may feel irrelevant, but I promise this skills carry over directly into software development.
Writing strengths your ability to turn abstract ideas into a concrete form.
Writing improves your ability to communicate ideas effectively, an important skill in writing comments, documentation, and bug reports.
Writing enables you to present your questions and your ideas to others, which is critical when seeking help with a programming problem.
Writing is human-to-human communication, which is open to constructive feedback; that, in turn, reinforces the other three!
At its core, programming is applied mathematics and logic. No, no, don't run away! I'm not referring to math class. (Most of us hated that too.)
Most of these skills inherent to puzzle games, which you'll find that virtually all programmers love. They're also essential to programming, which is itself a puzzle. You have to use existing information to find the missing data (deductive reasoning). Solving some problems requires you to find the pattern in a set of data (inductive reasoning). Debugging often requires you to work backwards from the behaviors to figure out the cause of the error (abductive reasoning). And of course, programming languages are inherently just decision-making trees (if X then Y else Z).
Mathematics also come into the picture frequently. Obviously, algebra is common, as evidenced by the very existance of "variables" in programming. Different topics in software development use concepts in linear algebra, trigonometry, calculus, probability, and statistics to solve problems.
You can reinforce these skills in three ways:
Solve puzzles! Programmers enjoy a wide variety of puzzle games, from sudoku to Portal. Try a variety. Challenge yourself. Besides, it's not often that part of your professional development involves playing games!
Participate in competitive coding. Websites like CodinGame and HackerRank provide hundreds of coding puzzles, from the trivial to the absurdly difficult. CodinGame (among other sites) also offer live multi-player coding games that will challenge your skills. I've learned a lot through these!
Learn math. If you've never learned calculus, trigonometry, or linear algebra, now is a great time to start. Many branches of computer programming rely on these concepts, but even if you rarely use your skills, extra practice with higher math will still improve your all-important logic skills.
In the next section, we'll be covering people skills.