At Gunner Technology, we’re all about the 3 P’s: Problem Solving, Persistence, and Pintelligence.
What does the P in Pintelligence stand for, you ask?
What do you think it stands for?
(Creativity is important too.)
But if you’re looking to become a great candidate for a software development position, you should focus on the 3 P’s.
Most of software development is about problem solving. You’re going to be given a project and told to figure it out.
Consider the way government contracts work.
As discussed previously on the Gunner Technology Livestream, there are three main types of requests the government makes: RFIs, RFPs, and RFQs.
With RFIs, the government is saying, “Here is a problem – figure out how to ask for a solution.”
With RFPs, the government is saying, “Here is a problem – figure out how to solve it.”
With RFQs, the government is saying, “Here’s the solution we want – figure out how to implement it.”
Do you see how even with government work a lot of the work is figuring stuff out? That’s what software development is: figuring stuff out.
So you need to be an effective problem solver to be an effective software developer.
And you’ve got to know how to break problems down into smaller, manageable sizes.
Because often the project is something like “Build a login page.” But building a login page isn’t just one step.
Often it’s dozens or even hundreds of steps.
So can you effectively turn a base problem into multiple subproblems? And can you then turn those subproblems into multiple sub-subproblems?
That’s part of being an effective problem solver, and thereby an effective software developer.
Of course, once you’re confronted by dozens or hundreds of subproblems or sub-subproblems or (sub^n)-subproblems, there’s one major attribute that lets you dive in and plow through them without giving up.
Call it willpower, call it grit or resilience, call it whatever you want. But what it comes down to is your ability to not give up.
The day-to-day work of a software developer can sometimes be exhausting, frustrating, and mentally taxing. But that doesn’t mean you don’t have to do it.
You’ve simply got to stick with a problem until it’s finished. No excuses.
And oftentimes, that can lead to long days or even all-nighters.
Because the reality of the situation is that estimation is one of the most difficult aspects of software development. (Along with the two hardest things in computer science: cache invalidation, naming, and off-by-one errors.)
You get better at estimating with experience, but even with a wealth of experience the problems are often so different that you’re basically a noob.
At that point you’ve got to do your best to be realistic about how long it will take and then stick with the problem when it inevitably ends up taking two or three or ten times as long as you planned.
But the good thing about persistence is that glorious feeling of accomplishment when the task is finally done. That’s what we live for as software developers. And it feels good, man.
Pintelligence. It’s all about learning. If you love to learn, software development is a great field to go into.
Because learning in software development is a lot like the mail: it never stops.
You’ll be learning new things constantly along with new ways to do old things. Software development is a constantly changing landscape, which is a lot of fun for lifelong learners.
There’s definitely a method to the madness though.
These days you’ve got to have a rock-solid foundation with those three technologies.
But it’s really not that tough to acquire. Grab some books and a couple free weekends and dive in. You can build a bunch of websites locally and view them in your browser without even touching a web server.
(As an aside, you’ll probably be using these languages more and more as smartphones move away from the native app model and towards the PWA (Progressive Web Application) model. Currently, mobile device users spend 90% of their time on only three apps, so it doesn’t make sense for companies to invest a ton of money in native technologies that will be used for a couple of minutes (if that) per month.)
The more problems you solve as you’re learning these new technologies, the more tools you have in your toolkit, which helps you become a more effective software developer.
A lot of problems you encounter daily as a software developer are ones you’ve solved before. At that point you can just pull out the right tool for the job and knock the task out.
Of course, you’ll often spend a lot of time solving problems you’ve never encountered before, but that’s where the fun is because you’ll be solving something new and you get to add something new to your toolkit when it’s done.
(There is a problem, on the flipside, with having a stagnant toolkit. A lot of software developers get locked into specific paradigms or ways of doing things and don’t adapt and grow. Don’t fall into this trap!)
Learn how to use XCode and Android Studio to build iPhone and Android apps, respectively.
Get familiar with a cloud-computing solution like Azure or AWS.
The software development world will be yours.
You’ll be able to build some amazing apps.
And you’ll end up having a ton of fun!