Today, YouTube gifted me this excellent video here:
It's a developer telling what his strategy would be to become a developer again, if he had to start over. Topics are:
- Adopt a Coding Mindset
- Learn how to problem solve
- Learn how to code
Among several others that are worth seeing, but that I'll reserve for another day.
Be a problem solver
The entire video is very good, but the first part, "Adopt a Coding Mindset", caught my attention. In short, he is talking about an irrefutable truth:
Before being a good developer, you need to be a good problem solver.
I agree, and I'll say more: this is basically what separates the professionals from the rest, in this field and probably in many others, if not all.
I'm going to repeat here some things that author Namanh Kapur talks about in the video, because it's worth it.
There is a solution to every problem, inefficiency or annoyance in your life; you just need to find it. This can take minutes, hours, or even days, but the solution is there and you WILL find it, as long as you look carefully and diligently.
Is your notebook having a problem? Open Google and search. Is your modem flashing yellow? Write down the serial number and start investigating.
Of course, not everyone thinks like this. You probably are seen as the "computer guy/girl" by your family and friends. The truth is, they could find the solutions on Google just like you, but they don't know it, or they don't believe it.
You must start BELIEVING that you can find the answer to whatever practical problem you are facing. Because when a project is due tomorrow, you've tried everything and still can't figure it out, this belief is the only thing that will keep you going.
And if the solution isn't on Google, that is not an issue, because the process is the same: search, read, dig deeper and figure it out one way or another.
It's also worth noting here that you won't find nor create anything relevant if you don't try hard enough, and everything will seem harder than it really is.
Learn how to become a problem solver 🧐🔎
Have you ever wondered how a carrier decides which packages go on each truck in order to optimize truck weight allocation and distribution? Or how universities build the annual calendar of their professors in such a way that they find a perfect schedule?
These are examples of real problems, currently solved by software, but that were once solved manually.
At the end of the day, problem solving is the ESSENCIAL requirement for you to be a good developer. Let's put it this way: if you are not a good problem solver, then you are a mediocre developer.
The good thing is that being a good problem solver is a choice 🙂 you just need to understand that when someone gives you a problem to solve, that problem is now yours and the only way out is to solve it. Not sure how? Start searching. Have you tried an alternative and it didn't work? Try another one, figure it out. You can do it.
But my colleague has the answer!
Do you happen to know one or more developers who seem to have the answer to all your questions? Let me break it to you: they don't. What they do have is this Coding Mindset. If they don't know, they find out.
I'm not saying here that you shouldn't ask your colleagues anything anymore. Interacting with your peers about the problem at hand helps you discover better, simpler, or more complete solutions, depending on what matters most in each case.
But when you ask which API method you need to call and the answer is right in the docs... or when you read it only once and give up saying "I don't understand"... then it's not OK. Make sure you do everything in your reach before you go asking questions every step of the way.
If you really see no other way but asking, check this link as a last resort.
Jokes aside, prefer to exchange ideas rather than simply asking. The difference is that "simply asking" is the same as arriving empty-handed without bringing anything to the game, while exchanging ideas is bringing a proposal to discuss and make it better.
Helping improve your client's business 🌟
One of the coolest things that happen in the day-to-day of us developers who get into problem solving is that we start to influence our client's businesses, for the better.
The most basic need of software development is to automate a process that is already done manually. You need to understand this process well to be able to automate it; then you start asking questions and digging deeper.
Not satisfied with the answers, which will often be shallow and incomplete, you begin to delve into those subjects. If it's freight or shipping, for example, you browse the USPS website and begin to understand how this line of business works. You start to delve into the subject of logistics, understanding more and more.
There comes a time when you can positively question your client's processes, and can even propose improvements. This is something natural when you need to "formalize" everything to transform it into an algorithm and then into code.
In my experience, if you can't bring up relevant questions that are more than just doubts, it's a good sign that there's still room for you to dig deeper. Sharpen your curiosity, keep researching and learning! 🚀
Note that Namanh Kapur's video's first topic is "Adopt a coding mindset", then "Learn how to problem solve", and only then "Learn how to code". Obviously, there's something more important than coding.
Bringing sand to the beach: a developer's job is to solve problems, using code as just a tool.
If some developer's hourly rate is $60, as an example, I like to say that $1 is for typing-in the code and $59 is for knowing what to type. Within this amount, perhaps $9 is for the specific techniques employed, while $50 is for how to do it, that is, how to actually solve the problem.
And this is not "the Analyst's job"! Knowing how to solve problems is where the gold of the business is.
The Coding Mindset, or really the Problem Solver Mindset, is very much the same as the Growth Mindset explained by Carol Dweck in her marvelous TED Talk "The power of yet":
In short, a growth mindset contrasts with a fixed mindset.
The latter is the limiting belief that the capacity to learn and improve cannot be meaningfully developed.
The growth mindset, on the other hand, is open to the effort even if it takes time. And it pays off!
Adopting a growth mindset, and rejecting a fixed mindset, can help you be more successful in everything you do.
Happy problem solving!