This post is based on a presentation about the hard skills and soft skills of software development that I gave at several coding bootcamps in Toronto; notably at Lighthouse Labs where I mentored.
Being a software developer can be hard. When we're constantly trying to learn something new and it never seems enough, it can feel like we're drowning. There are few things we can do that can push us, make it easier to learn and with practice, launch us forward.
Learn the tools
As with any trade, there are tools that we have to learn. In software development, learning SVN and subsequently Git helped me manage and write better code. I learned how to use issue tracking and project management tools which helped me better communicate and work with my team. I learned about server management and working with hosting providers which were needed to deploy and operate our products.
The tools will continue to change and evolve and as developers we have to stay ahead by learning the ones that fulfill our most immediate needs.
Understand Design Patterns
One of the things that unlocked software development for me was reading Head First Design Patterns. I happened upon it at the Ryerson University library when I was looking to understand the MVC design pattern. It was a fun read and I recommend it as a first reading. I also read Elements of Reusable Object-Oriented Software and these books laid the foundation for the software I went on to build. (I wrote about both these books and more in Reading on Design Patterns.)
Code a lot
Like any skill, learning to develop software takes practice. The great thing about development is that it doesn’t take material resources other than electricity.
Imagine if we had to actually build the software we were writing, with wood, bricks and cement! But since we don’t have to, there’s nothing wrong with starting a new project because we felt like it at 3am in the morning. We don’t have to launch it, the experience of putting together an ideas and building is very valuable.
Having said that, when we have hit upon something that we want to pursue, it’s important to get it out there, show it off, get feedback on the idea and the code. There is this saying that a software project is always 80% done, so we shouldn't be afraid to keep experimenting.
It's about the details
When I used to work as a junior developer, I often felt the senior developer was far too laid back. I felt he was always taking too much time in planning. I found it very frustrating and I was always itching to get coding.
After several bitter experiences I learned why he took his time before starting to code. Thinking things through, planning tasks and the approach is a part of being a software developer.
Focus on landing planes
Launching a project or a feature is very much like landing a plane on the deck of a ship; it's challenging, thrilling and rewarding. We have to learn to get in the habit of doing it, week in, week out.
Learning project management processes, for myself and my teams helped me tremendously but the processes can often become noise. It's important we focus on launching, delivering and shipping.
Plans are worthless, but planning is everything. - Dwight D. Eisenhower
Imagine & read code
When I learnt to code, it felt like learning magic. It’s not something everyone could do. Maybe we don’t realize it in our day-to-day because we live in our software development bubble but the reality outside makes what we do nothing short of magic.
Discovering and reading code is another part of this magic. I'm sure many of us have had the experience of looking at an app or a machine and imagining how its programming would have been written, how we would write it.
It may not be obvious but being a software developer can get lonely. It’s really easy to lock ourselves in our rooms and code away, as long as there’s the Internet, your brain will never complain because the supply of code, cats and funny videos is endless.
Working on things alone by myself is great fun and I thoroughly enjoy it. I have also found that working with others, even if we were working on different things, made my work better. Making friends with those who work in the same space and complement us can have impact that we may not foresee.
The friendship of the two Steves and their respective talents has fundamentally shaped our technology space and created new livelihoods for millions of people. This could be called networking but networking isn't useful if we can’t make a connection to benefit and propel each other.
Follow other developers
When I look back to what impacted my career so far, I realize that following the other developers played a major role. It let me tap into the plethora of experience and knowledge that they shared. I read and went down the rabbit holes, finding out more about the topics I didn’t know or understand. Some of what I learned, I still use, and others I don’t but there was no reason for me to narrow my scope of learning. This brings me to my next point.
Be open & think large
We tend to live in our bubbles where of us speak English, are right handed and able-bodied. This shows in the code we write and the products we build. If the goal of technology is to better our lives, we have to make sure we build for everyone.
There is opportunity in every dimension of our globalized civilization and we can find them by being open-minded. Soundscape for example, is powered by innovative technologies and is helping people with blindness and low-vision to navigate. Thinking large to find and fulfill the needs of everyone will help us push the boundaries of innovation.
Break it down
While communicating with peers we often speak in jargon but part of being more open and inclusive with our work involves communicating with people across fields. It can mean communicating with marketing or the customers and for them we have to break it down. We have to remove the jargon, listen and speak in clear and simple terms.
When we can clearly communicate the problems and solutions we are working on we'll have truly launched as developers.
Take care of yourself
There was a time when I used to neglect taking care of my physical and mental needs because programming was just so much fun and rewarding. I could create things out of thin air, I found that very addictive.
The reality is that we can get burnt out and we can experience imposter syndrome.
We have to step away from the computer, spend time with family & friends, do something else that’s creative. We should remember to eat well, sleep right and stay active. I’ve found that I am a much better problem-solver, more creative and focused when I do.
I hope this was able to help you with some inspiration on launching your software development career. I often return to this thought that keeps me inspired:
Shipping beats perfection because we're shipping magic.
[Disclosure: This post contains affiliate links.]