Jump to content
riyarathi

Career advise (programming)

Recommended Posts

Hello everyone, I am new to this forum. I want to know about the best way to learn something new on programming.

What should one do for learning? Should one read more and more books, take some online courses, make his own notes or code as much as possible? And what is the proper order to do these.

Thanks in advance.:)

Share this post


Link to post
Share on other sites

Tripple kudos for such an informative and entertaining answer! All the right points covered,  and all the correct question raised. I totally agree :) Great introduction to a profession,  esaj

  • Upvote 1

Share this post


Link to post
Share on other sites

@esaj you typed all that for an off topic one post poster!!! Do you have a bit too much time on your hands? :)

  • Like 1
  • Upvote 1

Share this post


Link to post
Share on other sites

BTW I read it all and I have a career suggestion for you: Career Councillor.  

  • Upvote 1

Share this post


Link to post
Share on other sites
5 minutes ago, Smoother said:

BTW I read it all

doesn't this prove that @esaj made it not only for the "one post poster" :)

  • Like 2
  • Upvote 1

Share this post


Link to post
Share on other sites

No.  It proves I'm bored.:)

  • Upvote 1

Share this post


Link to post
Share on other sites
2 hours ago, esaj said:

I don't believe you can become an expert on any of these sub-fields unless you work on that single area for at least 5-10 years straight and continuously develop yourself on that particular sub-field, not to mention becoming an "expert in software in general", something that probably takes a lifetime or more

+1

Always laugh when they look for a senior full stack developer.

Pretty sure that anyone that is a specialist in one and only one of the following:

- web frontend

- backend

- databases

Can ask 3 "senior" questions to your "full stack developer" on which he/she can't answer. Unless you don't have a life it's impossible to become an expert in all those fields at the same time, considering not only the complexity, but also the rate of change in those fields. Leave something on the side for 1 year and you'll realise they've upgraded 2 major version numbers and all your existing hands-on knowledge has become obsolete ... 

 

Being a professional freelance software developer for 20 years myself, I should become depressed about the amount of knowledge I had to put into my head only for it to become obsolete or useless to me a few years later (unless someone here still has use for someone who knows how to manipulate the GPU command buffer of an Xbox 360, or can use knowledge about the U and V pipe in an Intel Pentium processor?). 

The older you get the more it is about how good you are at taking on new stuff and the less it is about if you actually know where to put the ; and the , in language X or Y which you might not even use anymore 3 years from now. I did plenty of projects in my life where it was the first time I touched a given technology (stack). If you can't do that you're in the wrong business imo. It's constantly moving. I'm pretty sure there still is good money to be made in doing COBOL, but do you want to be that person?

And that is where a formal education comes into play. It's all great learning to become a javascript web-developer following some videos/tutorials etc etc, but if you don't get software engineering foundations you will just be doing ad hoc development and copy-pasting/stack overflowing stuff together (which might be fine for a lot of jobs), but you'll have a hard time transitioning into other stuff, or you will limit the technical choices to what you know, and not to what is out there (or too much towards what is out there. "OMG Facebook released framework Blablabla. We must use it in our next project!!! It's from Facebook so it must be good and it has 2 million stars on Github!!!!).

 

My 2 cents :D 

 

  • Like 2
  • Upvote 1

Share this post


Link to post
Share on other sites

 

42 minutes ago, ir_fuel said:

+1

Always laugh when they look for a senior full stack developer.

Pretty sure that anyone that is a specialist in one and only one of the following:

- web frontend

- backend

- databases

Can ask 3 "senior" questions to your "full stack developer" on which he/she can't answer. Unless you don't have a life it's impossible to become an expert in all those fields at the same time, considering not only the complexity, but also the rate of change in those fields. Leave something on the side for 1 year and you'll realise they've upgraded 2 major version numbers and all your existing hands-on knowledge has become obsolete ... 

This is very true, "real" expert senior guru full-stack devs are usually called "unicorns", because they don't exist. The whole front-end -thing seems to be just moving faster and faster every year, back when I was dabbling with it, you had a stack of jQuery and maybe a couple of other libraries as needed, now you have a cluster f**k of TypeScript/nodejs/npm/transpilers or whatever, a new framework every week and everyone has an opinion what you should be using and why whatever you're using right now sucks monkey balls. While not that old, I'm too old just trying to keep up (and really haven't) ;)

The last place I worked at had a guy who I'd describe as a "full-stack" (loosely speaking), he could do everything from front- to backend and databases, but even he admitted that his real strength is in the front-end, and he'd gladly leave backend and databases to people who know them better.

 

Quote

Being a professional freelance software developer for 20 years myself, I should become depressed about the amount of knowledge I had to put into my head only for it to become obsolete or useless to me a few years later (unless someone here still has use for someone who knows how to manipulate the GPU command buffer of an Xbox 360, or can use knowledge about the U and V pipe in an Intel Pentium processor?). 

The older you get the more it is about how good you are at taking on new stuff and the less it is about if you actually know where to put the ; and the , in language X or Y which you might not even use anymore 3 years from now. I did plenty of projects in my life where it was the first time I touched a given technology (stack). If you can't do that you're in the wrong business imo. It's constantly moving. I'm pretty sure there still is good money to be made in doing COBOL, but do you want to be that person?

This is the reason I'd suggest no-one choose software as a career if you only care about (possibly) high wage. While it may seem easy ("those guys just sit at the office all day and type on their computers for high wages!"), it's not a career where you learn everything at school and then just "do it" 9-5 until you reach retirement. You'll quickly find out the reality:

https://workplace.stackexchange.com/questions/128091/too-much-reading-studying-in-senior-engineer-job

 

Quote

And that is where a formal education comes into play. It's all great learning to become a javascript web-developer following some videos/tutorials etc etc, but if you don't get software engineering foundations you will just be doing ad hoc development and copy-pasting/stack overflowing stuff together (which might be fine for a lot of jobs), but you'll have a hard time transitioning into other stuff, or you will limit the technical choices to what you know, and not to what is out there (or too much towards what is out there. "OMG Facebook released framework Blablabla. We must use it in our next project!!! It's from Facebook so it must be good and it has 2 million stars on Github!!!!).

In all fairness, I tend to stick with what I know when possible (looking back, I've never really used anything but imperative languages on actual work stuff, for example), but I get the point. I'm certainly not vehemently opposed to learning new things (and quite often it is required really), although whether or not I put my own free time on it depends on how much I'm really personally interested in the subject. AI? Yeah, I could be interested to learn in my own time. Modern front-end technologies? Not so much, but if the employer pays for courses or can point me to good learning resources, there's enough time to learn and it's usual paid hours, sure... but don't expect me to put much effort into it outside the job. ;)

Clinging too hard on a single language or technology stack is a dead end in the long run. When Nokia killed off Symbian, a large number of senior devs entered the market, but many had hard time finding new jobs when all they knew was C++ and Symbian. Probably same goes for a number of other platforms and technologies (btw, I've made software for Blackberry, fat lot of use nowadays :D)

Also, I have had the argument about some stuff upper management wants to be used just because "Apple/Google/Facebook uses it/made it, so it must be good". Or to explain why I don't think we should start looking into block chain technology in an area where they have no application whatsoever. :D

Btw, my personal opinion about video tutorials when it comes to programming is that they should be outright banned ;)  Unless there's a really good reason that you need video (like showing something, maybe in graphics programming), it's just lazy, and I don't want to or have the time to watch your 45 minute video to get that one tidbit of information I need that's mentioned in a 10 second piece in the middle of the entire thing, where half of the time is spent watching you type the code. If you want to create a tutorial, write an article, if it needs to show something, like where some obscure option is found in the IDE, take a screenshot and put it as an image on the article   :P 

 

Edited by esaj
  • Like 1

Share this post


Link to post
Share on other sites
2 minutes ago, esaj said:

although whether or not I put my own free time on it depends on how much I'm really personally interested in the subject. AI? Yeah, I could be interested to learn in my own time. Modern front-end technologies? Not so much, but if the employer pays for courses and it's usual paid hours, sure... but don't expect me to put much effort into it outside the job.

I always managed to invoice this to my clients.

I'm sorry, but this field is constantly moving, and unless you are stuck in a dead-end maintenance job (which no good developer should be) there will always be something you do for the first time in a given project. If everything that I had to discover on the go should be free of charge for the client, I will change careers because my pay would be cut in half I think.

I usually learn while using it, I'm not someone that spends hours following courses. They usually go waaay too slow (especially video :D ).

 

And don't get me started on web front end stacks :lol:. Talk about a waste of brain cells .... "Oh you know jquery? But now you need Angular!" "Oh you know Angular? But now you need Angular 2!". "Oh you know Angular 2? Sorry, our client is looking for a React NINJA (*puke*)". "What? React? That's so 2018! We use Vue"

FFS ....

  • Like 1
  • Upvote 1

Share this post


Link to post
Share on other sites
7 minutes ago, esaj said:

While not that old, I'm too old just trying to keep up (and really haven't) ;)

Pretty sure plenty of devs stress out on this part. Fear of not being able to keep up. I also gave up on that long ago. I hardly use anything new that comes out unless it has been used correctly by others for at least a couple of years and has matured and become stable.

I'm an iOS engineer. I only jumped on the Swift train when version 3 was there. And when I look at the shit people had to go through in v1 and 2 I am glad I did.

Ain't nobody got time for this. I have projects to deliver :D 

  • Upvote 1

Share this post


Link to post
Share on other sites

On a slightly related note, I once worked on large telephone switches for private clients.  I quit to go run my paintball field.  A few years later, after selling my paintball field, I tried to get back in.  No Chance!  Everything had gone voice over IP.  Cisco was the new game in town, Lucent (At&T) was a dinosaur.  The tech train is one you can't get off if you ever want to get back on.

BUT... Before you tech giants start crying in your beer about how unfair it is, my brother says its exactly the same in the accounting field, every year the laws and rules change.  Always studying to keep up.  He's a developer now (buildings), gave accounting the elbow.

  • Upvote 1

Share this post


Link to post
Share on other sites
29 minutes ago, ir_fuel said:

I always managed to invoice this to my clients.

I'm sorry, but this field is constantly moving, and unless you are stuck in a dead-end maintenance job (which no good developer should be) there will always be something you do for the first time in a given project. If everything that I had to discover on the go should be free of charge for the client, I will change careers because my pay would be cut in half I think.

Yeah, I agree and that was sort of my point ("don't get into software career if you aren't ready to constantly keep learning new stuff" to put it short), but at the same time, I tried to point out that there are lines that I draw: I've read entire books on Spring Framework and JPA for example on my own time (and paid with my own money), out of my own will, but that's been my own choice. Sure, I need to, have and will learn new stuff all the time on the job, that's given, otherwise my so-called "career" would likely be pretty brief or have ended already. But being "just" an employee, I don't get paid for or can bill those hours used on my own time on the company, so if some employer wants to turn me into a front-end dev all of the sudden, it's going to take time and money, as it's not a field I'm personally interested in. In that sense, I prefer to stick to what I know (as in, backend-development for example) ;) 

But also, "never say never"; if someone had asked me maybe 5+ years ago if I'd ever be interested in becoming an embedded developer, I would have said no. Now I've read a few books on FreeRTOS, uC/OS and ARM within a few weeks and dabble with an ST Nucleo -board and some BluePill STM32F103's I've had laying around  :P  It's not even given I ever have to work with ARM in the actual job, but seeing that they're pretty common, might very well sometime in the future. But for now, it's just for my own leisure and learning about the finer details of embedded systems in general.

 

Quote

I usually learn while using it, I'm not someone that spends hours following courses. They usually go waaay too slow (especially video :D ).

Yeah, videos are horrible, courses usually give you just a very brief introduction to subject, as they don't usually last more than a day or two, but they're better than nothing. The best ways to learn for me have usually been a book on the subject, and then applying the knowledge from the book in practice, or just the documentation for the libraries/frameworks/whatever and working with examples, so learning while using. A good article or comprehensive tutorial can carry a long way in learning new things fast, but finding a good one can be a pain.

 

Quote

And don't get me started on web front end stacks :lol:. Talk about a waste of brain cells .... "Oh you know jquery? But now you need Angular!" "Oh you know Angular? But now you need Angular 2!". "Oh you know Angular 2? Sorry, our client is looking for a React NINJA (*puke*)". "What? React? That's so 2018! We use Vue"

FFS ....

https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f   And I guess it has just gotten worse  :P 

 

 

Edited by esaj

Share this post


Link to post
Share on other sites
3 hours ago, Smoother said:

He's a developer now (buildings), gave accounting the elbow.

Same problem there.

20 years ago you just slapped some basic heating and electricity in a house and call it done.

These days you need to know about renewable energy sources, solar panels, heat exchangers etc etc etc.

Edited by ir_fuel
  • Like 1

Share this post


Link to post
Share on other sites

I've known just three people who could do front, middle, back end, and database. Notably one was in Mensa, while the other two were very intelligent across several fields, such as playing  musical instruments really well. Not one applied himself to programing; they came from the school of, "think hard and write answer on the board."

I thought it was interesting that all three were really good unit test programers.

These three really were unicorns.

Unfortunately nature finds a way of balancing shit out, as two of them had really ugly wives. I never met the third. Ugly as sin. 

You would expect with their skills and innate intelligence they would have young hot models chasing after them, and to some extent this was true, and yet they dated and married 2's and 3's. This is a crime, like some ghastly form of reverse eugenics.

You can judge man's worth by looking at his shoes and his wife, and these guys wore blue jeans and white Sketchers ( @Marty BackeBacke now wears elegant Allen Edmonds on all his rides).

Share this post


Link to post
Share on other sites
33 minutes ago, LanghamP said:

I've known just three people who could do front, middle, back end, and database. Notably one was in Mensa, while the other two were very intelligent across several fields, such as playing  musical instruments really well. Not one applied himself to programing; they came from the school of, "think hard and write answer on the board."

I thought it was interesting that all three were really good unit test programers.

These three really were unicorns.

Unfortunately nature finds a way of balancing shit out, as two of them had really ugly wives. I never met the third. Ugly as sin. 

You would expect with their skills and innate intelligence they would have young hot models chasing after them, and to some extent this was true, and yet they dated and married 2's and 3's. This is a crime, like some ghastly form of reverse eugenics.

You can judge man's worth by looking at his shoes and his wife, and these guys wore blue jeans and white Sketchers ( @Marty BackeBacke now wears elegant Allen Edmonds on all his rides).

Now I know why you disliked my white Nike's.

Here, just for you - me and my, wait for it, new white Sketchers :lol:

IMG_0144

 

  • Like 3

Share this post


Link to post
Share on other sites
21 minutes ago, Marty Backe said:

Now I know why you disliked my white Nike's.

Here, just for you - me and my, wait for it, new white Sketchers :lol:

IMG_0144

 

Damn, blue jeans, Sketchers, and a software developer (?). Do you know how cliche that is?

That jacket doesn't look like a jacket. It looks like armor for the next zombie apocalypse. Spine protector and heavy elbow and shoulder armor.

-------

I've actually been wearing these as ankle protection.

Converse Men's Chuck Taylor All Star Street Knit High Top Sneaker, Almost Black/Vivid Sulfur, 11 M US https://www.amazon.com/dp/B07BT7QR7Y/ref=cm_sw_r_cp_apa_i_tNqwCbZFD6Y3Q

I believe these are true skateboard shoes, as they have a perfectly flat sole with smooth edges.

  • Like 1

Share this post


Link to post
Share on other sites
2 hours ago, LanghamP said:

Damn, blue jeans, Sketchers, and a software developer (?). Do you know how cliche that is?

That jacket doesn't look like a jacket. It looks like armor for the next zombie apocalypse. Spine protector and heavy elbow and shoulder armor.

-------

I've actually been wearing these as ankle protection.

Converse Men's Chuck Taylor All Star Street Knit High Top Sneaker, Almost Black/Vivid Sulfur, 11 M US https://www.amazon.com/dp/B07BT7QR7Y/ref=cm_sw_r_cp_apa_i_tNqwCbZFD6Y3Q

I believe these are true skateboard shoes, as they have a perfectly flat sole with smooth edges.

:D

I could never get into the Converse style shoes.

Share this post


Link to post
Share on other sites
7 hours ago, LanghamP said:

I've known just three people who could do front, middle, back end, and database

Only three... I must be missing your point?   :unsure:

Share this post


Link to post
Share on other sites

×