How do we navigate the myriad of concepts that make the code actually work?
Growth journey of a software engineer is complex, and the sheer amount of directions you need to develop in can seem disorienting.
I frequently get asked for resources that helped me get so comfortable around linux/servers, terminal, the SDLC, deployments. Faced with this question, I always find myself struggling to point to a guide or a course of some sort, as I have not technically used anything major. What I slowly realised though, is that while I cannot share the process, it could be far more valuable to recommend a set of goals which would guide a person to embark on their own path to accomplishing it.
We learn by doing, but how do we find out what we should do?
The goals themselves are extremely short and concise, and what I love about them is that you can keep iterate over simple steps multiple times and keep expanding your knowledge around them.
More important are the constraints around them - constraints which I consider essential for productive learning. The convenience of modern one-click deployments like Vercel and Netlify is invaluable, and they do help the learning process by abstracting away complex processes, but at some point of your journey as the programmer, you need to take a step towards facing these complexities.
Your Goals
- rent a vps from a cloud provider
- ssh into it
- install docker, or the runtime that you need
- copy or download the artifact
- run the program
- open the ports and access the app over public ip (of the vps)
Your Process
Do
- Use search engines, forums and documentation for solving specific problems.
- Assess and dial the difficulty up/down for each step. Do not hold back from easing up the requirements and taking shortcuts, but return and improve on them later
Don’t
- use GPTs - the exercise is for developing your abilities for information synthesis and knowledge navigation. We need to consciously make room for advancing these skills, and that means occasionally refraining from taking the easy path in order to practice
- Find and follow a comprehensive guide which includes all or multiple steps. We need to engage in active learning here and connect the dots ourselves.
These constraints mean the process will be slower than following spelled out instructions, but slowing down and challenging ourselves is the point. Letting our brains construct the connections between processes and ideas results in the strong foundation we need to keep reaching higher.
Next Steps
I am working on a few suggestions to iteratively go deeper into the process. Let me know if you complete these and I’ll share the new ones!
Cover Photo by Christophe Ferron on Unsplash