Learn To Develop The Code: My Way
By: Sergey Nikitin
Tags: Development, Education, Programming, Personal Development, It

Okay, following the 80/20 rule we did 80% of the progress and spend 20% of the time. Sweet! We did not write a line of code yet, but we know what to do, and we know where to do it.

Every application starts with a task. The task contains the requirements you want to implement. It documents the code you are going to write. And it answers the question “Why did I do it that way back in the days?”. Task is fuel. You pick a task and transform it into code. So create a list of tasks you are going to complete, thus you form the project backlog.

You can create a board for the project, for instance, in Trello, Jira, or GitHub. The board doesn't need to have Kanban features or automation hooks, it can be a simple layout with columns “Todo”, “In Progress”, “Done”. You can imagine your super board with columns I haven’t mentioned, it is up to you. Put your backlog task in the “Todo” column and be ready to start!

Managing the board gives you a strong experience and good practice of how to set up the work on the project. It gives transparency for the process, gives you moments of satisfaction when you see how many tasks you have done already! (That warm feeling, yes). If the company pays for your education, the board will give managers an update regarding your progress and about milestones you have passed.

Typical board for one of my projects

One thing about tasks. Make them as detailed as possible, as small as possible. Tasks with the text “Implement web-site” or “Write user settings page” do not make any sense. Such tasks are hard to complete, and they don't contain any historical info on what you did exactly. Try to split them and add more context about what you expect to do. Tasks like “allow a user to change email from the account settings page” or “add Typescript into the project” are small and meaningful.

And yes, use labels! Mark tasks with labels. Feature, bug, high priority, need to think about it — you can imagine yours. Discuss it with your mentor (if you have one) about it. Labels will give you feedback about task status and will draw your attention to the thing you worked on the other day. Keep your board in good shape.

Okay then, we are ready to write some code, huh? Let’s finish a few tasks. A few simple things to see some results. Let’s say, hello world on the browser page or health check API if you are working on a backend application. Why should we implement a few of them? We don't want to waste time deploying the application, running tests, building docker image, and other routine steps before diving into code wrap. Spend some time at the start of the project and play a DevOps role. I do believe developers have to know the basics of the continuous integration process. You don't have to learn to write terraform code for AWS services, but you should be able to write simple CI scripts for CircleCI, Github actions, or another CI service. Imagine you’ve just merged another great pull request into the main branch and then seat back and relax watching it build and deliver to the real environment.

Automate as much as possible, do not waste your time on routine actions

Finally, you can start writing the code, learning framework you have selected, reading tons of manuals and documentation, finding the solution in the StackOverflow, ironizing “why this example does not work on my machine?!”. Sounds cool, right? Not so fast, one last thing. Learn Git. Seriously, learn it. Learn to merge and rebase, create branches, open pull-requests, or merge requests (hey GitLab) or whatever-it-called requests in your version control platform. Ask for a review. Ask somebody to look at your code. We never write perfect code, but we can get better at it, and requesting a review is a way to learn and do better. Get used to it, it’s a typical development process in almost every company.

Code review is a perfect way to learn, share ideas, and discuss current implementation

And write the code. The more you write, the more you learn, the better you get. Read about the language you have selected, about common patterns, about testing, imagine how is it applicable in every task you are going to implement.