Conviction InfoTech

Conviction InfoTech
A Software Website Development Company

Tuesday, February 3, 2015

Roles of a Good Software Developer

John Carmack the creator of Quake and Doom said once that he’s learning a lot recently. He has been developing software for over 20 years and is the king of this field. I was thinking that he knew everything already. He is the grand daddy of game engines. What can anyone teach him?

That’s the beauty of being a developer. You never stop learning and the minute that you do, you stagnate; you get stuck in a project or a job that you end up hating. Or it causes your eventual burnout. Change is constant, as a software developer if you don’t embrace change then it ends up being your worst enemy. There are some virtues that make a developer stand out among the rest :

Keep Learning

This is a universal truth of any human being that every people should keep learning. Although, for a software developer it means that he must keep learning new languages, frameworks, design patterns, or algorithms. If you don’t, then how can you get to know about the changes happening in the world? How do you know which tool is right for the job. It’s like a painter only using a thick brush throughout his life. Or a photographer taking pictures with just one lens. Would you want to be stuck using a language or framework that’s been obsolete for 8 years? Do you want to be the last one providing support for something obsolete? Probably not, you want to keep your skills sharp so you can work on the next generation solutions to existing problems.

Challenge Yourself

Part of learning is challenging yourself to get out of your comfort zone. Part of that learning is also putting what you learned to practice. Build something with what you learned and only then will it stick. When Apple released Swift, I started reading and watching everything that came my way. Sometimes it felt like my brain was going to explode. Not until I started building apps with Swift that it all started to make sense. I began with a simple FizzBuzz example then made a silly little game. Next up, I am re-writing an old app with a lot of moving parts. Until I figure out how to tackle problems head-on with this new tool no amount of reading is going to do me any good. It’s like a carpenter with a new power tool, just reading the manual is not going to cut it. He needs to get into his shop and make something and it doesn't matter what he makes.

Re factor Your Code

Have you ever hacked code together from bits and pieces found on the web only to serve a piping hot mess? Yeah, we have all done it and we've had great reason for doing it. Deadlines make us do things that we would normally not do if we were given the time to craft a masterpiece. I’m not talking about perfection. I don’t think code is ever perfect but I do think code can be elegant. It’s about accepting that you wrote terrible code and being brave enough to throw it away and start from scratch. Maybe not all the code, maybe just a part of it that will make more sense later when you come back to it. Some code lives for a really long time. Think about the people that would have to maintain it long after you have moved on.

Teach

The best way to learn is when you need to explain a concept to another. It forces you gain an understanding of the topic or concept in a way that would have never made sense if were just trying to learn. You don’t necessarily have to address a large audience it could simply be a friend. Teaching comes in a variety of forms such as: writing a blog post, presenting at a local meetup, doing a code review or answering a question on a forum.

Trend is not a Friend

Don’t get caught up in the latest trends. There is a lot of debate raging about which are the best framework or which is the hottest language. Certainly, take the time to learn them but don’t get caught up in taking sides of an argument or allying with a piece of technology because what’s hot today maybe not be tomorrow. Pick the tool that is right for the job that makes the most sense for your project and team. 

By Conviction InfoTech

No comments:

Post a Comment