Ask HN: Yet Another Software Engineer; Help?

10 points by mate_ ↗ HN
I'm writing this fully aware that I will not be getting any replies on this, and this like my other failures is going to stay at the bottom. I graduated in Computers. In the course study we had C and C++ in the first year, and the Java for the next two years. So I would say in the least I coded in both the languages to certain extent and I liked it. Then after my graduation like all the my friends, I joined a Software Company. The first few months were hectic, I was trained again in Advanced Java and EJB. I thought I would work on Java in my next years, I couldn't have been more wrong.

If you ever worked for an Asian Multinational company, you really don't have a choice midst thousands of other Software Engineers. You are to go and work in the department they ask you to. We in this group work at various tools like HP Operator Orchestrator, ServiceNow[1], Salesforce etc., meaning pre-packed and developed applications. We customize these Tools or applications as per the needs of the Customers. I was able to learn the tools easily because an expert in one of the tools, and worked on it for 3 years. In the mean time, I lost all my programming skills. I now don't have any programming skills what so ever.I can still write snippets of code, I can visualize and write algorithms in Javascript, but I really don't know any language. I tried to learn Python for a bit, and wasn't successful, I gave Go a shot and failed again. I'm at one stage of my life, where I really don't know what to do. I know one thing, I don't want to work on these "Tools" for the rest of my life. I want to learn and develop solid applications. I know some of you are like me, what did you do (or) what method did you follow to go back to development after a stint of bad years? I really don't have anybody to guide me. All the seniors I work with have no idea what Go is or what Git is. Help me please, before I completely give up.

Thank you, for reading.

[1] http://www.servicenow.com/

10 comments

[ 3.1 ms ] story [ 34.6 ms ] thread
Where are you?
I'm in the US, but I'm an immigrant working here.
"I was able to learn the tools easily because an expert in one of the tools, and worked on it for 3 years. In the mean time, I lost all my programming skills. I now don't have any programming skills what so ever."

If you are expecting to pick up a new language you cannot expect to code at the same speed as the programming language you have been working on for quite a while with. But that is not necessarily a bad thing.

C/C++ have huge changes in the language updates as well so it is not too suprising if you think you have unlearned some of them. In retrospect maybe you just learned some of the algorithms rather than just learning the languages themselves when doing the languages. To re-learn them i'd look at more used libraries for C++ like libmusl and be aware that real programming is not all about just algorithms.

Instead of picking a new programming language to learn maybe you should learn a bit more about the "ecosystems" of languages. While almost all programming languages are good at almost everything, there are a few special "sweetspots" of coding in specific languages.

Some example questions you should pay attention to: Why are some programming languages used more than others for specific situations? What is the difference between a scripting language and a normal functional programming language?

Some of those questions have somewhat obvious answers. Many of the languages now are specialized in a few things. Erlang is great for passing data around. Rust is good for recoverability with a server. Go is good for concurrency patterns (but fails on some degree where concurrency patterns are not just steady/simple). Ocaml is good for security based programming because it is a static language(one instruction/way of executing for most of the language) it is also used entirely by at least one company that operates in the space of trading. Python is good for computing with numbers because it automatically can handle large numbers and can be easily convereted to C/C++.

I'd suggest learning the ecosystem of what drives what in a specific category. For instance do you want to get into machine learning? reverse engineering? devops (automated deployment)? Picking some skillset that is out there already that is highly valued and then learning about programming languages by viewing what companies are doing is a good way to learn. You see business decisions that are made based on programming language, time, money constraints, and it's not all just about what they just had at the time for the bigger tech companies because if it sucked they re-coded it.

If you have any specific questions you can ask away below.

You will not miss to much if you don't know Go.
You have a couple of options:

1) Find another job.

2) Try to introduce new technology at your workplace. Not a language like C++ but Frameworks that could be more productive for some projects, maybe some internal tools. E.g. Play Framework for web apps, Spark for data analysis, Docker for deployments, etc. Find a painful repetitive internal process and suggest building something to make it less painful.

3) Improve your programming skills outside the office by working on a side project or attending Meetups.

I was exactly in your position (em: Exactly) 6 months before.

Like you, I graduated with Computer technology and was placed in an MNC. Same like you I worked with "Tools", not software, in my case it is Microsoft SCCM[1]. I was locked into this job for some financial dependencies and after some quick 3 years when I look back, I regretted all of my work experience. Not because it isn't worth, but it isn't what I wanted to be in my life. So, I decided that whatever I should do, I should, to become a software developer within 2014 end and I would say I accomplished it since, I am joining as an RoR developer in a month. (all within 6 months)

Some of the points,

1) I started from the deep basic level ultimately from HTML and CSS stuff. I didn't think myself as an CS grad, but a self-learning programmer and did whatever a self-learning programmer will do. I call myself that. For example, I was asked to prepare myself with JS and Coffeescript in the new job I am joining, so I started learning JS from yesterday. Even though I have learned and practiced it 4 months before, I started from the utter basics of it just to brush up my knowledge on it.[2]

2) You are right, even none of my colleagues are aware of Github, HN, Git or even Ruby as a programming language. I was one of them one year before. I didn't know any of the programming stuffs at all. All they / I had known is Technet, Sourceforge and most of the IT forums. So, don't expect any kind of assistance from them.

Glad you are from US which is going to help you a lot. Being from India I struggled a lot even to get answers for some of the tiny doubts. Sometimes, I had to work through night since in StackOverflow, questions will get answered much quicker in EST time. 4.30 PM IST to 3.00 AM IST was my regular learning hours. If I went to any meetups there will be no more than 10 people in it. I didn't had any mentors, but if you could, get one, it is going to leap you 10 steps each time.

Start from the basics (I mean really basics) and go by the path as any beginner programmer would do. Don't assume yourself as a programmer yet. Assume you didn't had any CS degree or whatsoever. Go to Meetups, read Blogs, If you really want to be a programmer, commit yourself 200% into it.

I am not going to comment on the programming languages, Books to study, or projects to do. If you really hook into it you ll get to know them naturally.

All the best.

[1] - http://en.wikipedia.org/wiki/System_Center_Configuration_Man...

[2] - https://github.com/avinoth/LearningRepo-JS

I'd take a step back and figure out how/why you "weren't successful" learning Python and "failed" with Go.

Becoming skilled takes deliberate practice. If you're not willing to put in the effort I wouldn't expect much in the way of positive results.

There has never been a better time to self-educate and participate. Pick a project, pick an ecosystem, and begin.

"I tried to learn Python for a bit, and wasn't successful"

Kindly define not being successful. If you mean you gave up, then next time don't. Also, quit your job if you have to.

The best way to get better at writing code [or prose] is to read and write more code [or prose]. Start a project, or two, or three, or twelve and write some code.

So what if you didn't learn Python and Go in a few hours? Try Lua or Boo or Rust or Scala or MUMPS or Smalltalk or Erlang next. Load up Node and write some JavaScript code. Download Eclipse and give Java a whirl.

Find something you like. Then worry about learning it. Because it will take ten years.

http://norvig.com/21-days.html

You should take a Java certification or something and find a job as a developer ASAP. There will be employers willing to invest on you during the relearning curve. If it ever happens again being assigned a non development position then its better to leave ASAP as opposed to waiting. Try to become a freelance to gain more control on your assignments, first locally then remote.