I have learnt how to code, what do I do next?
I have received this message from many aspiring software engineers who are just getting started, often on Twitter. They have been burying their heads down, trying to piece together this big piece of a puzzle called programming. From one tutorial to the next, one video to the next, one course to the next, they have devoured all the materials they could lay their hands on. Wonderful students. But what next? They ask.
I was one of them, and I was exactly where they are at some point of my career. So here's a few key things I would advise you to do next, things I would have loved to be told at the time.
I was one of them, and I was exactly where they are at some point of my career. So here's a few key things I would advise you to do next, things I would have loved to be told at the time.
1. Have the mindset of a builder
Builders build things, often out of nothing. They take a concept, think about it, make a plan for how to make it come to life, scribble some things on a piece of paper, throw away the first draft, then the second draft, on and on until they arrive at a final draft that they are confident will work and shall bring the concept to life.
They will then plan the execution, often visiting the site and back, while making any corrections to the draft they made earlier.
Sooner or later you'll see ground machines preparing the earth, construction has began, and after a period that seems like forever, your mansion is ready for occupation!
Now, put yourself in those shoes, what was going on in the mind of that builder? What were they thinking before the house was built, when the house was getting built, and after it was built? You need to have almost similar thoughts, only this time with software.
As you can imagine, working under an experienced builder will save you a lot of time and you will learn a lot just from watching them build, even if they don't say much. So if you can, find an experienced software builder and watch them build, or help them build, you will learn a ton. A lot of you have requested me for such an opportunity. I have accorded it to a few people(now and in the past), and cannot take any more unfortunately. Try to find someone on your own - by attending meetups and such.
Whilst watching an experienced builder helps accelerate the learning process, you can still do this on your own. So if a mentor is not forthcoming, don't worry, develop that mindset and get on to step 2.
2. Build something small, but that solves an actual problem
Depending on the programming skills you have been learning, figure out what is possible for you to build in a relatively short amount of time, ideally 1 month, but less than 3 months. If you've been learning web technologies, ideas such as building a simple photo gallery for yourself, a personal blog, a mini Twitter, etc are good. You can pick one of the services/products you like using, and pick only one feature they have, and rebuild it. Don't lie to yourself that you can build the entire thing in a weekend, you won't. Pick a very very small, but complete unit, and rebuild it in a few days/weeks.
Now, don't let your code live in your machine. You want your code to be seen by the world in two ways - a live demo and the actual source code.
So make sure you host your mini application somewhere and that it still works when you access it from there. Always check that it still works periodically!
Secondly, put the code in the open, make it open source. You are still learning to code properly and you want many people looking at what code you can write, both for correction and admiration. Seasoned software engineers will read your code and offer suggestions, and if you're lucky, some will offer to mentor you to build what you wanted to build! Admirers will spread the word about your work, and one of the people who will be informed about you will be a CEO or a hiring manager who will ask if you're looking for a job. Win win.
If you didn't know yet, put your code on GitHub.
3. Write about what you built
You will also need to do a lot of writing. The main purpose of this step is to let your work be widely known. Don't be shy to put your work out there. Embrace writing, it makes you think, just like writing code does, thus enhancing your creativity. Let the writing juices flow. It works.
So find a place that enables you to write, and start writing. You can write about anything - who you are, why do you code etc, but one of the more important pieces you need to write on is what you built in step two.
What did you build? What really was it? Be descriptive as much as possible. That's how software requirements are born, from a higher level understanding of what needs to be built!
Why did you build it? Were you scratching your own itch? What itch was that? Why did you chose this feature? Why exactly? Ask yourself those questions, and answer them properly in your piece.
Finally, how did you build it? What technologies did you use? Why those technologies? How did you use those technologies to build that feature? Why did you choose to use this database over another, or why did you choose not to add a database, etc? Go into very technical details to answer the how you built that mini-application, or that feature. Be as detailed as you can. If you want, you can spread out the article into different mini articles if you find the content to be a lot for one article. But just write and keep writing!
Conclusion
You likely will need to do the above steps a couple of times before you get your first job, if getting a job was your goal. And hats off if you never stop doing the above until your retirement, because your database of knowledge will be the backbone of major things by the time you hang your keyboard. And you will likely never be lacking in work. You will be a piece of hot stroopwafels, as they call them here in the Netherlands.
Builders build things, often out of nothing. They take a concept, think about it, make a plan for how to make it come to life, scribble some things on a piece of paper, throw away the first draft, then the second draft, on and on until they arrive at a final draft that they are confident will work and shall bring the concept to life.
They will then plan the execution, often visiting the site and back, while making any corrections to the draft they made earlier.
Sooner or later you'll see ground machines preparing the earth, construction has began, and after a period that seems like forever, your mansion is ready for occupation!
Now, put yourself in those shoes, what was going on in the mind of that builder? What were they thinking before the house was built, when the house was getting built, and after it was built? You need to have almost similar thoughts, only this time with software.
As you can imagine, working under an experienced builder will save you a lot of time and you will learn a lot just from watching them build, even if they don't say much. So if you can, find an experienced software builder and watch them build, or help them build, you will learn a ton. A lot of you have requested me for such an opportunity. I have accorded it to a few people(now and in the past), and cannot take any more unfortunately. Try to find someone on your own - by attending meetups and such.
Whilst watching an experienced builder helps accelerate the learning process, you can still do this on your own. So if a mentor is not forthcoming, don't worry, develop that mindset and get on to step 2.
2. Build something small, but that solves an actual problem
Depending on the programming skills you have been learning, figure out what is possible for you to build in a relatively short amount of time, ideally 1 month, but less than 3 months. If you've been learning web technologies, ideas such as building a simple photo gallery for yourself, a personal blog, a mini Twitter, etc are good. You can pick one of the services/products you like using, and pick only one feature they have, and rebuild it. Don't lie to yourself that you can build the entire thing in a weekend, you won't. Pick a very very small, but complete unit, and rebuild it in a few days/weeks.
Now, don't let your code live in your machine. You want your code to be seen by the world in two ways - a live demo and the actual source code.
So make sure you host your mini application somewhere and that it still works when you access it from there. Always check that it still works periodically!
Secondly, put the code in the open, make it open source. You are still learning to code properly and you want many people looking at what code you can write, both for correction and admiration. Seasoned software engineers will read your code and offer suggestions, and if you're lucky, some will offer to mentor you to build what you wanted to build! Admirers will spread the word about your work, and one of the people who will be informed about you will be a CEO or a hiring manager who will ask if you're looking for a job. Win win.
If you didn't know yet, put your code on GitHub.
3. Write about what you built
You will also need to do a lot of writing. The main purpose of this step is to let your work be widely known. Don't be shy to put your work out there. Embrace writing, it makes you think, just like writing code does, thus enhancing your creativity. Let the writing juices flow. It works.
So find a place that enables you to write, and start writing. You can write about anything - who you are, why do you code etc, but one of the more important pieces you need to write on is what you built in step two.
What did you build? What really was it? Be descriptive as much as possible. That's how software requirements are born, from a higher level understanding of what needs to be built!
Why did you build it? Were you scratching your own itch? What itch was that? Why did you chose this feature? Why exactly? Ask yourself those questions, and answer them properly in your piece.
Finally, how did you build it? What technologies did you use? Why those technologies? How did you use those technologies to build that feature? Why did you choose to use this database over another, or why did you choose not to add a database, etc? Go into very technical details to answer the how you built that mini-application, or that feature. Be as detailed as you can. If you want, you can spread out the article into different mini articles if you find the content to be a lot for one article. But just write and keep writing!
Conclusion
You likely will need to do the above steps a couple of times before you get your first job, if getting a job was your goal. And hats off if you never stop doing the above until your retirement, because your database of knowledge will be the backbone of major things by the time you hang your keyboard. And you will likely never be lacking in work. You will be a piece of hot stroopwafels, as they call them here in the Netherlands.
Also as you'd expect, it's not exactly copy-paste, there are many other things you could do to make it as a programmer or to land a good job, this is just one of the ways and it's good to note that this may not work for everyone. But I do know it would have worked for me and many others.
And having been on the hiring side a few times, I definitely would look with more intent on someone who has done these things.
All the best!