Notes and recommendations for my students, inspired by “The Software Craftsman”, a wonderful book by Sandro Mancuso.
During advising sessions with students I found that many young people expect that their degree and GPA will open some door, good or bad, and then they will start their career based on whatever life brings to them.
Moreover, discussing with alumni I learn occasionally about professionals who are locked into some job they don’t like and they cannot see any way to get out of this bad situation.
There shouldn’t be a problem like this during a period where Computer Science and Software Development are so in demand and skilled professionals are rare.
Here are some tips to improve your professional profile:
Read books, a lot.
In an era of so much information available freely on the web, someone may wonder why books are important. Well, books are usually more well thought than the average blog post or short tweet. They will give you fundamental knowledge which will not lose its value as fast as the occasional web tip on you-name-it.js.
Select good books (not all books are worth reading) from the following categories:
Great when you want to learn a programming language or tool, like Java, Python, C#, etc. They expire soon but some of them will give you worthwhile knowledge.
Books that give the foundations of several technologies and introduce concepts, paradigms, and practices. For example, Test-Driven Development, Domain-Driven Design, NoSQL Databases, etc.
Books that make us more efficient and better professionals. They may include topics such as Agile methodologies, Software Craftsmanship, Lean methodologies, but also don’t underestimate the importance of General Education books, such as Philosophy, Psychology, and Management.
Classic books that influenced the evolution of Computer Science and technology in general. Examples are books like “The Art of Computer Programming”, “The Mythical Man-Month”, “Design Patterns”, “Refactoring”, etc.
Do you have a BLOG?
All Software Developers should have their own blogs, regardless of how much experience they have.
Treat your blog as a record of own learning and progression. Write what you learned while reading books or attending MOOCs, experiences from meetups, competitions, Katas solving, and about your pet projects and activities.
Also Follow and Read software development experts (but be aware that blog posts are usually written without much research or deep thought).
You may start a blog here on Medium, on Wordpress, or even build your own blog software which will be a great exercise.
3. Social Media
Social media can waste your time and energy. Use them with caution.
Learn how to use Twitter.
Used wisely, Twitter can be a great tool for information gathering and a place to meet like minded people.
Treat LinkedIn as your CV.
(Avoid the rest …)
Coding Katas: Simple coding exercises, will help you keep in shape with your preferred programming language. Codewars is an excellent place to start solving Katas.
Pet Projects: A real project but without pressure. Be creative, scratch your own itch, build something real that you are passionate about, and share with the world.
Open Source Contribution: Find a project related to the technology you want to practice and start small. Document, translate, fix a minor bug, and see how it goes.
Hacakthons and other coding events: Participate in this kind of competitions in your area or online (Google Hashcode is great example). And don’t worry if you fail.
GitHub: As you practice don’t forget to update your GitHub account. This way you’ll demonstrate your skills and the fact that you are passionate about programming.
Join your local user group and participate in their events.
There is a huge variety of events for almost every technology. Usually these groups welcome newcomers and they will not blame you if you are novice. Snacks and drinks frequently give a good chance for socializing.
A fantastic way to learn, share ideas, and build your network.
6. Lifelong Learning
Use the vast amount of available free MOOCs (massive open online courses) in order to improve skills, expand knowledge, or even for a complete career shift.
You may meet interesting people as well in the several MOOC discussion forums.
Use Coursera, edX, Udacity, FutureLearn, Khan Academy, or any other you like.
Is there enough time?
You may wonder if it’s possible to do all that and at the same time attend courses at the university or even worse, work 9–5.
Well, lack of time is usually an excuse. First of all we may save some time by reducing TV watching, mindless browsing on social media, or playing computer games. Secondly, we can spend a short time to these activities. If we read-practice-write frequently for a short amount of time it’s better than dedicating a whole day now and then.
Moreover, we don’t have to do all of the above simultaneously.
I’d like to learn if someone applied that and how it (or how it not) helped.