I’m a simple self-taught programmer who wish to become an expert someday. I only need some advice on what makes a very exceptional software programmer whether mobile or desktop.
Hi Mr. Rowlands, When did you start programming?
When the earth’s crust was still molten lava… lol! 1980.
p.s. Please call me Sam
Good mind reading capabilities.
OK Sam, buddy, so you have been programming for 42 years. I started programming in 2011 in Real Basic/Studio at the age of 13.
Your question is very broad. I will give you my answer based on past experience hiring developers, but I am quite certain that there are many others equally good. Bear in mind that you are talking about a “very exceptional” software programmer. Keep in mind that there is much more than desktop and mobile out there. The qualities would apply in pretty much any context.
To be exceptional, I would expect the developer to…
- Be technically very strong. That includes superior proficiency with the tools that we use. Here, let’s say Xojo. It should not hold any secrets. Other tools may be required and I would expect at least some proficiency. C++ is likely to be useful especially if we need to develop a brand new control, or a custom library for example. Have at least a basic understanding of related technologies: networking, communications, etc.
- Have a fair understanding of business processes that our application will support. Enough to grasp the concepts and problems expressed by key stake holders, subject matter experts and senior analysts and to understand how our application will support the processes, how it can make the pain points more efficient.
- Have excellent or even better, superior problem solving skills. This was the most difficult to find attribute among candidates. Coders are plenty. Brilliant creative developers are difficult to find
- Be perseverant in the face of obstacles, without being stubborn. At the same time know when it is time to ask for help.
- Work well with others. Developers rarely work in isolation in today’s job market.
- as a bonus, have a basic knowledge of popular methodologies. Agile and derivatives of Agile are currently in fashion. Here, tomorrow’s methodology could well be something else. Keep informed, keep learning.
In short, it is not just coding that counts and as @Sam_Rowlands just answered, much of the above comes with experience. But some is also the candidate’s character. If I am looking for a junior programmer, character and innate skills (problem solving, working with others, perseverance) are the attributes that I will look for, with some technical proficiency. The outstanding developer should bring the total package and then some.
- Always be learning. Read books and blogs, follow experienced people on Twitter, dissect open source projects, try new languages just for kicks.
- Don’t shy away from challenges. You’re going to get things wrong. You’re going to screw up. You’re going to need help. All part of the game. Remember that code can always be fixed or rewritten.
- Be open to change. We oftentimes feel that the way we’ve done something is the absolute best way. Keep an open mind to alternatives, additions, and modifications to your app/code that may be beneficial even if you don’t immediately recognize the benefits.
- Test, test, and test again. Diligence is important. If some people lose faith in (or can’t trust) your work then you may not get another opportunity to win them over. It sucks, but that’s the way it works sometimes.
- Be a good written communicator. If you can’t explain something, then you shouldn’t expect others to understand it.
I value these qualities above raw experience.
Currently, I’m a Java programmer for the Android Platform.
Oops… Wrong year, 1990! I was born in 1980… Only 1 cup of coffee so far this morning, lol.
NIce. Just know that I am no longer in a position to hire developers.
Currently, I’ve been a Java programmer for the Android Platform for over 7 years, with limited system resources for the past 3 years.
Currently, I’ve been a Java programmer for the Android Platform for over 7 years, with limited system resources for the past 3 years. I designed an ebible application for Android on a 4" phone. It was very sad, and I bought my first laptop on a budget for $320USD…
You heard the story of the guy with the hammer?
There’s massive container ship that’s stuck at port. Several mechanics simply cannot get the engine to start, so they call in the specialist.
He turns up, looks at the engine, pulls out a hammer and hits it at a precise spot. The engine splurts and splutters and comes to life.
He hands the captain his bill, $40,000 USD. The captain stammers, no-way, you were here for less than 5 minutes and just hit the engine with a hammer.
The engineer replied, there’s 40 years of experience, which taught me what hammer to use and where to hit the engine.
This screenshot is from my very fast Acer. Spin 3 which I bought from my little programming experience.
No, I haven’t, but it sounds familiar.
That, my friend is completely irrelevant to being a “very exceptional” developer.
Experience alone does not count either. I interviewed candidates with 15 years of experience that I would barely hire as juniors. What counts is what you do with the experience, what you learn along the way, and what you can show for it, demonstrate. (not the same as claiming, by the way)
Again, @Sam_Rowlands illustrates my point eloquently.
You are here with us Louis
What is irrelevant? Could you please point it out?