Tools for New Developers-Part 1
Do you want to start a career focussed on solving complicated logic puzzles? Want a well-paid job without having to complete any formal education? Want to work flexible hours from home without being involved in some pyramid scam?
Software development might be for you, and it might not be as difficult to get into the industry as you think. The world needs more developers and many companies are willing to pay you while you learn how to write software with their tools and particular coding style.
To get your foot in the door you need a good foundation and your own toolset to help you be a quick-learning, reliable developer.
Here are some tools and concepts I wish I’d known about when I was starting out.
Quick disclaimer for Windows users
I started working on a Mac, and aside from some forrays into Linux, I’ve always developed on a Mac. I’ve tried to include some options for Windows users in this article, but I’m definitely no authority on the subject of developing on Windows.
Tool 1: A good online course that covers the foundations
I first tried learning iOS development through a free online course. After a few attempts at completing early assignments, I still didn’t understand half of what the instructor was talking about. I needed to find a more basic, beginner-level course. Luckily, I stumbled upon Harvard’s CS50, Introduction to Computer Science, available for free online.
The course started literally from Scratch (a drag-and-drop programming language) then taught me a lot about the C language, which is the base of many of the world’s most popular programming languages. The course also covered all the puzzle pieces required to do full-stack development of web applications.
I’ve never regretted the time I spent on this course. It gave me both a foundation and a breadth of understanding that I’ve relied on throughout my development career. Taking this course, or a similar one will set you on a good path too.
CS50 Introduction to Computer Science
This is CS50x, Harvard University's introduction to the intellectual enterprises of computer science and the art of…
Here are a couple of other recommendations about this and other online courses:
Don’t worry about completing the assignments in sync with the time they are being taught. Just make a start and then take them at your own pace. The important part is getting your head around the concepts and practising with them until they become second-nature.
Don’t worry about getting a certificate from online courses. In the job applications I’ve made and interviews I’ve had, nobody has ever asked to see a certificate for an online course I’ve taken.
Tool 2: A good notes app
There is a lot to keep track of as a developer. New tools to help people develop are released every day. Each programming language has its own ways of handling common operations. New versions of useful code-libraries with updated behaviour and syntax are released frequently.
Some people might be able to keep all this in their head, but I certainly can’t.
I never want to be without an easy-to-use, easy-to-search app for taking notes. Microsoft OneNote, Apple Notes or Evernote are good. My favourite app at the moment is an open-source project called Joplin.
Joplin is a free, open-source note taking and to-do application, which can handle a large number of notes organised…
As a beginner or a professional developer, you will have the opportunity to learn something new every day. Getting into the habit of regularly taking notes will reduce the stress of trying to remember everything and will help you to find important bits of knowledge when you need them.
I also recommend including different tags or keywords in your notes to help you find them faster. For instance, a note about integer-related functions in Python might be easier to find later if you specifically include the word “python” somewhere in the note.
One other great feature about most notes apps is that they automatically save and upload your notes to the cloud. Most will also share your notes across all your devices. For example, I often find make notes on my phone and then access them from my laptop.
This is especially important. Never trust data to a single location. Hard drives fail. Often. Phones get dropped in water or stolen. If your data is in a single location it might as well not exist.
Back up everything, including your knowledge base.
Tool 3: A good text editor
Except for drag-and-drop languages like Scratch, most software is simply written and stored as plain, human-readable text. Because of this, becoming fluent with a purpose-built plain-text editor will speed up your ability to develop.
The most readily available and beginner-user-friendly examples are “TextEdit” (Mac) and “Notepad++” (Windows). It’s possible to write software using these apps, but they are missing a lot of useful, developer-specific features that almost all purpose-built editors have available.
I highly recommend an app called “Sublime Text” as the first step into purpose-built development software. Sublime runs on Mac, Windows and Linux. It has an unlimited free trial period and a lot of useful keyboard shortcuts that can speed up the way you work with text.
I also recommend getting to know how Sublime’s “package control” works, as it will allow you to install useful tools to further speed up your development time.
I will cover some of the more powerful and complicated text-editors and IDEs (integrated development environments) in a future blog post in this series.
Tool 4: Dedication and Commitment
As with any subject, the more knowledge and experience you have, the better you will be at your job.
As a developer, you can practice writing software, just like a musician or athlete needs to practice to improve their aptitudes. And there is always something new to learn.
Some developers recommend dedicating 10–20 hours per week (2–3 hours per day) to practising and learning. I recommend using the Pomodoro technique to ensure that you get regular breaks.
The Pomodoro Technique - Why It Works & How To Do It
The secret to effective time management is...thinking in tomatoes rather than hours? It may seem silly at first, but…
It’s best to code a bit every day. Find a space in your schedule that you commit to writing a bit of software. Even 15 minutes a day can make a difference if you keep at it.
Tool 5: The right Attitude
As with most skills and hobbies, it’s important to maintain a distance between what you do and who you are. You are not your software and even the best developer has some room for improvement.
At some point, you will very probably feel extremely frustrated and want to quit. Remember that this happens to almost everyone.
This is the time to take a break, for five minutes, an hour or a day and do something else. Give your brain a chance to relax and think about other things. Letting your subconscious mind do its job will increase your potential for solving the problems you’re facing. I’ve lost count of the number of times I wrestled with a complex puzzle all afternoon and came up with the path to the solution the next morning.
Rich Hickey, the inventor of the “Clojure” programming language, gave a great talk about this.
Also, remember that you’re quite certainly not the only person who’s faced the problem that’s frustrating you. A web search for your question will probably show you that you’re very far from being alone.
Also, try to remember that almost everyone gets “imposter syndrome” at some point.
Try to treat software development as a fun challenge. How well you are able to solve problems today doesn’t define who you are as a person. What’s important is that you keep trying.
Keep learning. Keep experimenting. Ask questions. Question answers.
Where to go for help
- web-search. The internet and search engines were created by programmers so there are lots of well-indexed resources available for us.
- w3schools.com has a lot of good tutorials and reference pages.
- stack-overflow.com has answers to most FAQs and quite a few rarely asked questions too.
- ask a friend, even one who doesn’t know about software development. Describing challenging puzzles to other people can help you to solve them. You can even try describing your problem to an inanimate object like a rubber duck. Laugh all you want, this is actually considered to be a standard form of debugging.
- take a break (somewhere between 5 minutes and 1 day is best).