For programming careers, what is more important: Being able to find solutions to a problem or having a deep understanding of a language itself?
A general question to help understand jobs involving programming better #career #programming
4 answers
Lionel’s Answer
Great question Usman. Solutions by far is more important as you progress in your career. That said, finding solutions doesn't exist in a vacuum. Having deep understanding of a language inspires thinking and engineering is a trade-off with the available tools. For example when memory was very expensive, there were models of memory use built into programming languages. Understanding them, allowed for more creative solutions than not.
Also, by understanding a language deeply, you can learn other languages easier, as you will know what is important.
Not asked, but offered here, early in your career, senior people will likely give you well-constrained problems to program. Understanding a language will be more helpful in getting started.
Steven Fulton
Steven’s Answer
Hi Usman... I agree that this is a great question... and my answer is what would have helped me most when I started my career.
35 years ago, many software development companies assumed that CS majors had rudimentary programming experience and understanding, but employers didn't expect applicants to have experience with the specific language being used within their development organizations. Most companies ran training programs to teach the particular language they used to newly hired programmers, so the result was that problem solving skills and basic algorithm understanding was more important than language specific experience when applying for those entry-level programming positions.
The current business environment has changed due to maturation of the programming discipline. Software development has become focused on fast development with an extreme focus on cost efficiency... which means that companies don't generally offer language specific training courses to new employees. It's expensive to conduct training programs, making it more attractive to hire entry-level programmers with specific skills. That's a contributing reason for outsourcing a great deal of software development to low cost programming shops in India and other developing nations. For programming positions in today's environment you need a high level of programming expertise so you can develop prototypes quickly. I can't emphasize enough how important it is to be able to develop fast prototypes. And you can't shortcut the skill of understanding a problem either. Efficient problem dissection is necessary to provide a quick prototype solution using your preferred languages.
My suggestion is that you first identify your target industry where you want to obtain a programming position, then identify the most common language(s) in use within that industry and focus on developing a thorough understanding of the software development tools most commonly used. Every development environment has advantages and disadvantages. You want enough academic experience so you can credibly discuss the merits and flaws of the development tools/languages you have in your "tool box".
And by the way, you've already set yourself apart from most of the other people in your position. You've asked the question. The majority of all entry-level applicants haven't taken that first step.
Good Luck!
Mike Clement
Mike’s Answer
As in most things, it depends. Early in a career it's important to have a deeper understanding of a single programming language (see Apprenticeship Pattern: Your First Language http://chimera.labs.oreilly.com/books/1234000001813/ch02.html#your_first_language). Having that first language as a reference point will help you see the patterns that reoccur in other languages as you are exposed to and learn them.
Learning how to think algorithmically and solving problems is super important and really key to being able to develop software. That being said, as a programmer if you don't know enough of your language to be able to translate your thoughts into code, it's going to be hard to be a programmer...
When interviewing more experienced candidates, I look for more problem solving techniques, but I always pair program with candidates to make sure they can code.
Sonya’s Answer
<span style="color: rgb(67, 58, 83);">Being able to find solutions to a problem. All programming involves creating an algorithm. Once you have created an algorithm it can then be translated in to whatever programming language you want. </span>
<span style="color: rgb(67, 58, 83);">Basic programming styles include Linear programming style where it just one step after another. These include very old school programming languages that some organizations/companies still have code in that needs to be upgraded like Basic, Pascal, Forte, Cobalt, C but also may include scripting languages like Unix and Pearl. Then there is Semi Object Oriented programming style which includes languages like C++, Visual Basic etc.</span>
<span style="color: rgb(67, 58, 83);"> Then there is my favorite Object Oriented programming style. This is the wonderful programming world in which you now live in and the list of languages is long and growing. So I would try to understand how object oriented programming style works. You will have a lot of fun with object oriented programming style. Then pick up an object oriented language. Once you learn one the rest will easily follow. Then you can pick up the legacy styles after you are hooked.</span>
<span style="color: rgb(67, 58, 83);">Also check out </span>https://www.freecodecamp.org/<span style="color: rgb(67, 58, 83);"> </span>