Anytime I visit r/programming, without fail, there’s a post of a programmer that goes “I’ve completed Sololearn courses, read through coding books, and finished my CS curriculum. I even understand most programming jokes. So, am I already good enough?”.
Normally, when I see these posts and go “No, you are not. Do you think in code the way you do in your native language? If no, then go re-read “Think Like a Programmer”.
The road to programming language fluency is long and there is no endpoint, at the end of the day you need to ditch CS quizzes, develop your own products, and (I know you’ve been waiting for this one) look for jobs.
How to shed the unconfidence of a programming learner and become a professional? Here is the description of my personal journey, step by step.
It’s sad for me to see how many programming students master a language as a range of abstract concepts are completely clueless about what to do with it outside of the classroom. That’s why I tirelessly emphasize the importance of simple and straightforward projects that make a confident coder — here are my favorite ones.
On its own, the game is simple but the impact of the project on building up your grasp on programming logic is astonishing. Here are the rules to follow for coding:
This task is divided into two parts — translating the underlying logic of the game into code and building a user-friendly interface to make the experience enjoyable for players. For starters, let’s outline the rules of the game:
After implementing the principles above in your code, focus on wrapping the final product up. Since programming is not about creativity but functionality, using off-the-shelf GUI packages is highly appropriate. For Java, I typically use Swing — there are dozens of interface elements available.
If these example projects are too basic, there are plenty of examples online that will help you hone your craft as a programmer. Here’s the list of platforms that are must-haves for programming students.
Codegym is a Java learning course that offers dozens of Java games for novice and intermediate learners.
ZetCode shares a set of amazing Java 2D games (you can either look up the code of multiple existing projects or get some hands-on game development experience with practice problems).
Codingame is one of my favorite practice projects available in over 25 languages because it teaches novice developers to embrace responsibility. Basically, the platform allows programmers to contribute to creating a global game, starting from the point where your peers left off.
To make sure you are confident in applying a programming language in the real world, dedicate the final stages of software development education to getting as much hands-on experience in coding as possible.
The good news is, there are a lot of useful resources that challenge developers with puzzles and practice problems. Here are my favorite ones:
I am a Java tutor and enthusiast — that’s why I get especially excited about discussing new projects. Right now, CodeGym is the first platform I usually direct students to. For one thing, this resource targets Java only — thus, the development team’s perception of the language is highly in-depth.
Other than that, I find the learning curve CodeGym offers extremely well-structured — all practice problems are grouped depending on which concept they target. You can find dozens of tasks on Java syntax, then move on to collections, typecasting, OOP, and other concepts.
There are over 1200+ practice problems in total — after completing all of these, you will definitely be ready for job interviews.
Available for 10+ programming languages, Coderbyte has hundreds of languages for developers with different levels of experience and skills. Depending on your skills, you can either choose straightforward tasks (finding the shortest word in a string) or advanced puzzles (like those on graph cardinality matching).
If you want to introduce friendly competition into the learning process, definitely give Codechef a try. This platform hosts regular programming competitions and offers a wide range of challenges for Java, Python, C, and other popular languages. You can write and check the correctness of your code using the tools built-in editor (with quite a convenient interface if you ask me).
If you are set out to look for programming jobs, don’t miss out on LeetCode. This platform is a real deal for practicing coding in real-world conditions and preparing for employer interviews.
LeetCode supports seven programming languages — C, C#, C++, Python, Ruby, Java, and JS. You can explore two modes of the platform — challenges grouped by topics or “Mock Interview” — a mode where you are bombarded with coding questions concerning all facets of the language and have a limited amount of time to answer the problem.
SPOJ is one of the biggest coding practice platforms out there, with over 20k programming challenges. Sphere Online Judge hosts regular hackathons as well, allowing developers to face each other and improve together.
Personally, I had an issue with the fact that SPOJ is fully peer-to-peer, meaning you won’t see official practice problem answers and have to put your trust in fellow developers.
Even if you nail practice problems and understand the theory of the language exceptionally well, there’s more to becoming a top-notch coder.
Immersion in the programming community will help you find out which challenges professionals typically face, which projects are the most popular, get to know the industry’s inside jokes, etc.
This way, when you get your first programming job, you will have no problem making the office your second home.
Where can you get in touch with programmers? I sorted through forums and communication channels I check out to connect with peers — hopefully, these will help.
General programming:
Programming languages:
General
Programming languages:
Here are other well-known forums where both beginner and advanced programmers typically hang out:
StackOverflow — the platform reigns supreme among peer-to-peer forums. Here you can get both an answer to a theoretical question, practical advice, as well as sound feedback on your code.
SitePoint is another popular forum among web developers and designers — other than versing you in development, hanging out on SitePoint will help understand colleagues from other departments (UI/UX, marketing, etc.).
Hackers News — a number-one forum for hackers, covering the latest news in the industry, answering questions, and sharing working experiences.
Make it a habit to format the code and the Readme file of every project you complete comprehensively so that an employee doesn’t struggle when reading it. If you don’t have a GitHub account yet — get one immediately (for me, a high number of Github projects is what separates programming students and professionals).
How to make sure your project is ready for being shared with the world? Here’s a short and helpful code formatting checklist:
As you can see, learning the programming language is only the beginning of your journey in programming. The good news is, whatever is waiting for you down the road is fun and exciting since you can finally build real-life solutions, look for paid jobs, and proudly call yourself a developer.
To bridge the gap between learning and professionalism, focus on using theoretical knowledge to solve practice problems, create and share your projects online, and don’t forget to visit online developer communities — Stack overflow, Reddit threads, and Slack channels.
First published at GitConnected [paywalled]