Aha, you are now ready to apply what you have learned, from the many years of schooling, into the world of building software.
I know, it’s exciting. A bit scary, but believe me, it only looks like that, since there’s so many unknowns out there.
Unfortunately, learning doesn’t stop, the moment you step out of school. In fact, your learning needs to double its pace. Even quadruple it in difficult times.
Not to worry, we are making this how-to to give some light, as you navigate the choppy waters of the life of a software engineer.
Building software is purely a mind and body exercise. It doesn’t matter what kind of computer you use, or what programming language you prefer.
What matters is how much can you understand the objectives that needs to be done, and how fast can you move towards completing it.
I imagine, the first thing you do, is get a feel of building an application. I’m sure you have done so, in one of your school projects. Why not, try it for yourself, and build a small app you fancy to make.
Search for tutorials online, on how to get started in a particular platform. PHP, Node, Ruby, Python, Android, iOS, so many choices. It doesn’t matter which one, though it pays to select the one that matches your favorite company or team you plan to join.
The app can be a tool, that you can use, in a hobby of yours. Say, like upcoming movies you like to watch, and let friends vote which one they like. Or, make a twitter clone, but instead of limiting to 160 characters, make it 500!
Why is this important?
We believe, learning how to write code is so much easier these days. It’s hard to imagine, someone, who intends to embark in the software engineer path, and not have written a code or built an app.
It’s like someone dreaming to become a good guitarist, but have not practiced playing a guitar at all. Or, a basketball player, but have not played basketball.
It’s just common sense. Access to the tools for building software apps have been universally, freely available. And the tutorials are also free.
This build an app step is important, so you can demonstrate what you can already accomplish.
This must be what you were looking for, when you thought about preparing yourself. It’s a given, starting on the path of building software, one must have access to a computer.
A computer where you can explore and experiment, conveniently at your own time. I know, it’s an expensive investment to some, but after you have invested so much money for education, imagine, putting that all to waste, by not having the right tool to practice.
And since all the learning materials are available online, with the computer you have, you must connect it to the Internet. Of course, not to waste time with leisure activities online, but to read tutorials and download tools for learning.
So much code has been published online. So much opportunities to learn.
We recommend selecting open source platforms, frameworks, or tools, over closed or proprietary ones.
Open source tends to be well maintained, much more mature, and much easier to learn, due to many resources online.
A quick search of a particular topic in an open source tool, and you can easily find answers to questions at StackOverflow.
In relation to this, we recommend you create a free account at Github, or Gitlab, or BitBucket, so you can share your code as well. By putting it online for others to review and learn, you are opening yourself to fast learning.
And this is where the rubber meets the road. Metaphorically speaking.
You’ll want to find a good training ground, for you to gradually build your skills. Treat this training ground, as a dojo, where the art of building software is practiced regularly.
A few guidelines to evaluate a good dojo:
Use these guidelines, to evaluate if you will have a good learning experience, while you are an intern.
When you can, ask if there is a formal program, and for how long. If there’s no formal program, then just ask for a defined schedule of the activities you will perform.
Don’t let this opportunity to learn, go to waste, by just being around, doing nothing. If this is your intention, i bet there are other internship opportunities, that demand for this kind of roles.
It is not convenient to take in interns for learning. There is an overhead of maintaing an internship program, and generally people do not like to be interrupted or bothered in their work.
Please show respect to those you will be working with, and say thank you from those you will learn from. Be mindful of their time, and try to pick up tasks on your own. Try to learn on your own, and when needed, ask questions politely.
Show enthusiasm and develop the motivation to pursue the opportunities to learn. Generally, everyone likes to work with others who like doing their work. Keep an open, and a positive mind, specially when faced with an uncertain task. Having common interest and passion, towards build software and working with others, will make for a joyful experience.
And, if the build an app suggestion above is making you worried you can’t figure out something to make. Yes, it happens to the best of us.
Worry no more, since there is another way. Instead of building an app, why not perform coding exercise, where you can demonstrate your coding skills. It also helps you build and practice your problem solving skills, which will be useful when taclking real world scenarios.
You can do such exercise, at Exercism.io. Just sign-up for an account, download the tools, pick an exercise and code away. Submit your answers, and let others review it.
You may also upload your code in your Github account, so when you need to show what you can do, you can easily refer them to your repos.
This is an old perspective, in the path of learning. It recently gained interest, as a practical, sustainable, and long term approach in developing one’s skill in the art of software building.
An apprentice, is best summed up by this quote:
“I guess it basically means having the attitude that there’s always a better/smarter/faster way to do what you just did and what you’re currently doing. Apprenticeship is the state/process of evolving and looking for better ways and finding people, companies and situations that force you to learn those better/smarter/faster ways.” - from the book Apprenticeship Patterns
You can read the book, it’s free, available online, at OReilly website.
As well as read more about being an apprentice, and Software Craftsmanship in general, from these links: