Should you have a wide or deep knowledge as a developer?

24 views
Skip to first unread message

Edward Pie

unread,
Jul 20, 2013, 2:50:20 AM7/20/13
to knust...@googlegroups.com
Should you as developer master only one language or learn multiple languages? People ask me this question a lot and I want to know what you guys think.

I'll publish my thought after reading your comments, thanks.

Nii Okai Okyne

unread,
Jul 20, 2013, 3:43:46 AM7/20/13
to knust...@googlegroups.com

It is pertinent to learn more than one language since not all development platforms offer the same functionality. Others come in to support the core language that one may major in. An enterprise app can't be developed without the web, etc. Using one language would simply but not offer the availability of options too.

On Jul 20, 2013 6:50 AM, "Edward Pie" <hackst...@gmail.com> wrote:
Should you as developer master only one language or learn multiple languages? People ask me this question a lot and I want to know what you guys think.

I'll publish my thought after reading your comments, thanks.

--
You received this message because you are subscribed to the Google Groups "GDG KNUST" group.
To unsubscribe from this group and stop receiving emails from it, send an email to knust-gtug+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Jojoo Imbeah

unread,
Jul 20, 2013, 5:00:40 AM7/20/13
to knust...@googlegroups.com

Edward, if you think of programming languages as tools, then your question is analogous to asking, "As a carpenter, should you master only how to use the hammer or you should learn how to use the saw, screwdriver, drill, etc.".

That said, if you're known to use the hammer very well, people could hire you to do their jobs that require hammering only. Or maybe other carpenters could sub-contract their hammering jobs to you. But if you want to be a true carpenter (after some time of course), then I think you want to know how to use as many tools for as many different kinds of carpentry tasks as possible.

So in short, do both. Get depth and breadth. As for which comes first, it depends on the path you want to take. But I'd like to think getting depth first in one language or set of closely related technologies (in a profitable market) first and then branching out to other technologies is the easier way to go.

my2pesewas

Jojoo

On 20 Jul 2013 06:50, "Edward Pie" <hackst...@gmail.com> wrote:

Should you as developer master only one language or learn multiple languages? People ask me this question a lot and I want to know what you guys think.

I'll publish my thought after reading your comments, thanks.

--

Francis Addai

unread,
Jul 20, 2013, 5:29:58 AM7/20/13
to knust...@googlegroups.com
Working towards becoming a polyglot programmer is the one best thing one can do to mature into a really sought after developer/programmer. No two programming languages have the same design and implementation no matter how similar they are. Knowing a good number of programming languages, their pros and cons will help you make informed decisions when choosing one for a project. You'd eventually choose the one that will get the job done, after all, that's all that matters in a project execution. So why wouldn't you explore more languages so that your decision on stacks for your project improves?

Any time you learn a tool for a particular problem domain, you learn some things that make you a better programmer, well, at least, that has been my experience. So I never stop exploring. The best place to be so that you can be positioned to explore new technologies is NEWS.YCOMBINATOR.COM (affectionately called, Hacker News). I learn a lot from smart people over there everyday of the week. They never stop sharing. So just have an open-mind and don't be married to one programming language because, I tell you, that will always dampen your confidence. You won't ever enjoy the company of people who know and want to know more.

Scenario:
A staff at KNUST handed over to me 2 spreadsheets with related data. It contained information on candidates who had just taken their entrance exams and their scores. The information on the candidates was in one spreadsheet whiles the scores were in another. The task was to merge these two files into one so that at a look, you would be able to see who got what mark.

I admit, I am an ubuntu and python maniac. I love both of 'em so much, from the bottom of my heart. So I decided to carry out this task kicking out some python code. Mehn, it wasn't easy. The data cleaning, filtering, ordering and sorting in Python was so crazy, circular and tedious. When I was tired of all that, I went to sleep.

Next day, at work, I had the idea to use SQL to solve this problem. Huh, it took me only 5 minutes to get the work done. Here is what I did;

- converted the data into CSV format
- imported them into MySQL into 2 tables (one table for candidates info and the other for scores)
- wrote a SELECT query JOINING both tables ON the candidates' index numbers found in both tables
- exported the result into PDF and that got the work done.


- tldr;
All that matters is to get the work done, it doesn't matter what language you use. There's no point in failing on your deliverable when you are forcing one language to do what it wasn't designed for.

It pays well to know more.
Message has been deleted

seth billy

unread,
Jul 20, 2013, 8:01:41 PM7/20/13
to knust...@googlegroups.com
I think one should have both deep and breadth. I have to been to like
three or more job interviews and they want to know the languages i
know. I'm in love with with java and been doing javaee for the past
one and half years. Not all companies do EE. I believe knowing two or
more programming languages come in handy. So i'm learning to have some
up my sleeves.

On 7/20/13, Francis Addai <4ad...@gmail.com> wrote:
> Working towards becoming a polyglot programmer is the one best thing one
> can do to mature into a really sought after developer/programmer. No two
> programming languages have the same design and implementation no matter how
> similar they are. Knowing a good number of programming languages, their
> pros and cons will help you make informed decisions when choosing one for a
> project. You'd eventually choose the one that will get the job done, after
> all, that's all that matters in a project execution. So why wouldn't you
> explore more languages so that your decision on stacks for your project
> improves?
>
> Any time you learn a tool for a particular problem domain, you learn some
> things that make you a better programmer, well, at least, that has been my
> experience. So I never stop exploring. The best place to be so that you can
> be positioned to explore new technologies is
> NEWS.YCOMBINATOR.COM(affectionately called, Hacker News). I learn a
> lot from smart people over
> there everyday of the week. They never stop sharing. So just have an
> open-mind and don't be married to one programming language because, I tell
> you, that will always dampen your confidence. You won't ever enjoy the
> company of people who know and want to know more.
>
> *Scenario*:
> A staff at KNUST handed over to me 2 spreadsheets with related data. It
> contained information on candidates who had just taken their entrance exams
> and their scores. The information on the candidates was in one spreadsheet
> whiles the scores were in another. The task was to merge these two files
> into one so that at a look, you would be able to see who got what mark.
>
> I admit, I am an ubuntu and python maniac. I love both of 'em so much, from
> the bottom of my heart. So I decided to carry out this task kicking out
> some python code. Mehn, it wasn't easy. The data cleaning, filtering,
> ordering and sorting in Python was so crazy, circular and tedious. When I
> was tired of all that, I went to sleep.
>
> Next day, at work, I had the idea to use SQL to solve this problem. Huh, it
> took me only 5 minutes to get the work done. Here is what I did;
>
> - converted the data into CSV format
> - imported them into MySQL into 2 tables (one table for candidates info and
> the other for scores)
> - wrote a SELECT query JOINING both tables ON the candidates' index numbers
> found in both tables
> - exported the result into PDF and that got the work done.
>
>
> - *tldr;*

Edward Pie

unread,
Jul 21, 2013, 4:13:57 AM7/21/13
to knust...@googlegroups.com
After reading your comments I came to know we all think alike. Now here's my take on being a polyglot programmer;
Like investment in stocks and shares, choosing a language and even a business domain has some factor of risk involved. Remember demand and supply? Demand and supply works in the IT industry too. If you invest time and effort into studying any of the mainstream languages like Java & .NET, you stand a better chance of getting a job which will only pay you peanut remunerations.
Why? cos these are the languages everyone seems to be learning so it's quite easy for someone to take your place even before you see the vacancy in the ads. lol!

What sometimes baffles my mind is "Should we learn languages which seems to be resting in their graves?". I mean languages like COBOL, FORTRAN, RPG, Ada, etc. Why should we even bother about these languages? Let's not forget that top class banks are using legacy systems built with some of these grand daddy languages. Eventually these institutions will have to migrate their systems to use newer cooler techs. Now, during the time of migration, there will be the need for developers at both ends of the ladder cos migration takes time, it's a gradual process. Some gray-haired programmer who mastered COBOL or FORTRAN will have stick around to guide the new geeks who know newer cooler techs like Java/.NET to be able to incrementally build a new system which has to talk to the legacy system.

There are new cooler techs springing up every second and that's why you as a developer has to constantly learn. I sometimes wonder how people survive in the IT industry with rusted knowledge. Personally I believe as a developer if I don't study for a day, I'll be  1 year behind my folks. Just think of the many techs you don't know of. Think of the new ones you haven't played with. Now tell me how you gonna survive without learning everyday.

I realized there are fewer iOS developers than Android developers in Ghana, so I spent a weekend studying objective-c (a very beautiful language), created an app and published it to the market. I can confidently take on any iOS project now.
There are fewer developers who know about productive and well designed languages like python, ruby, perl, erlang, scala, Delphi and also new techs like couchDB, mongoDB, NodeJS, Angular JS, neo4J etc.

Now tell me how you gonna feel if you saw an ad saying "We want an erlang developer. Monthly salary is $4000" . I doesn't hurt to know more than you need but ouch! it hurts very much when some fat paycheck passes you by cos you didn't know of some new tech.

So like all the other guys said, you need both deep and broad knowledge. If I were you, I will go deep on one and start developing broad wings. How can you even tell which one is better at what when all you know is one. If the only tool you mastered is a hammer, every problems tends to be a nail.

Remember, it's not about what you already know, it's about how fast you learn cos the world is changing.

This is the path I followed after school.
I realized my department (KNUST CS) didn't make me the CS guy I wanted to be but at least I didn't waste the 4 years on campus. I heard of coursera, so I enrolled in courses like Algorithms 1 & 2, Linear & Integer programming, Discrete Maths & Logical Reasoning, Compiler Design, Scala, Optimization & Machine Learning. After taking all these courses I felt confident. I learnt Design Patterns to write better codes. Now am prepared to take on any project no matter how complex it seems.

Build a strong foundation first and the rest will be far far easier for you.

Thank you all for contributing to this productive thread. We want more of these.
Reply all
Reply to author
Forward
Message has been deleted
0 new messages