A friend of mine recently got in touch with me, I was catching up with him and we were talking about our lives and careers. He’s struggling to make a living without much clear direction, I suggested he should become an engineer because the starting salaries are really good and you can build cool stuff. He’s a creative so it makes a lot of sense.
He posed the above question to me. I answered, with a question:
Suppose Santiago was a shepherd. He sold a bunch of his sheep to his friend, then he sold, 10% of his flock, 6 sheep to a merchant in town. He took the proceeds to travel a journey to find a lost treasure near the pyramids of Egypt. How many sheep did he have in his whole flock?
Yes, that is Santiago from the Alchemist. This is a basic word problem, to solve it, you need to use basic Algebra.
Y is the size of the flock, y * .1 = 6 X is the number of sheep he sold to his friend y - 6 = x
Y is the flock size, .1 is 10% in decimal form and 6 are the number of sheep that Santiago already has. It becomes a simple problem from here:
y * .1 = 6 (y * .1)/.1 = 6/.1 y = 6/.1 y = 60 His flock was 60 sheep y - 6 = x 60-6 = x 54 = x He sold 54 sheep to his friend
I told him, if you can solve that problem, you can be an engineer. Why?
Why can you be an software engineer?
I argue that if you can solve the above problem you have the basic skills to move from joe plumber to joe programmer. Here’s why:
- Solving word problems are a lot like solving real business problems. You need to analyze the problem and determine some kind of out come. It’s logical, step by step, algorithmic thinking.
- “Coding” is only one part of the job, sure for some people it’s 80-100% of the job, but it’s not the only thing. Back when I was doing “Agile” scrum development, I would routinely spend 2-3 hours a day in meetings. I wasn’t even in management. Often times, developers spend a part of their time: reviewing requirements, asking for clarification, writing tests, arguing with QA and writing some code.
- Reading comprehension is vitally important. If you can solve the above problem it shows that you understand the problem and know how to translate it into a solution. Reading is important and often overlooked by many developers. I can’t count the number of times a senior colleague came to me when the answer was easily explained in the documentation!
- You spend most of your day reading code, trying things and debugging, more then you will (normally, unless it’s a new product) writing a bunch of new code. Thingy X has to work with Thingy Y and can’t break feature A or B while using C. That sort of thing.
What are the basic competencies a developer needs?
- Ability to read, understand requirements and work with a team to build those things.
- Ability to work on a team and with other people.
- Ability to program in 1 language, ideally several.
- Ability to think logically.
- Ability and desire to learn & grow
If you have the desire to learn and grow, the ability to read and work with other people and finally knowledge of at least 1 language; probably would be good to know a framework too. Then you can become a professional software engineer.
You probably won’t be building software systems to shoot rockets into outer space, or solving biomedical research issues; you’ll probably join the corporate rank and file building next generation APIs, data storage and learning all the buzz words of your new industry. You can make a lot of money and you can have a lot of fun doing it.