Wednesday, May 14, 2008
So following up on my previous post,I figured the only way to get to path 2 is to do something on path 2 before somebody hired me to do path 2 stuff.Did a bit of research around looking for open sources projects that were interesting.I have kind of picked JRUBY for now, it is reasonably established and at the same time has lot of stuff still being worked on it or atleast thats what their JIRA says http://jira.codehaus.org/browse/JRUBY.So I tried to get it to compile on my machine only to realize it needed Java 1.5.Then I just tried forcing it to compile with Java 1.4 and then thanks to the tons of errors it spewed, I realized how back dated my Java skills were and spent some time learning about Enums and generics and static imports with java 1.5 which has been around for over 4 years now and I don't see we using it on our project at office anytime in the next 2 years atleast :-(
Monday, May 12, 2008
I have been in what is called the software services industry for the past 6 and a half years now and in that last 6 and a half years I have come to realize that there are distinctly two different paths you can take if you are a software engineer.(And lets cut the crap of the different titles people have as junior programmer, senior programmer, architect, designer etc etc, lets keep it simple a software engineer is one who builds software to solve problems)
To be successful on Path 1
PS:Now don't get me wrong I know there are problems in the domain of path 1 which are extremely challenging and I know there are problems in path 2 which are very boring,I am just talking of the averages of what I *think* it is like to be in path 1 and path 2
- The first path is where you are building software to solve business problems directly
- The second path is where you build software so that people on the first path can use it to solve business problems.
To be successful on Path 1
- You need to love talking to the business people and understand their requirements and gain their confidence.
- You need to be a jack of all trades, need to do (boring?) things like requirements analysis, do reviews, come up with designs, code them, test them.(But you would rarely need much knowledge of any of the things they taught you at school under the science called computer science)
- Your presentation skills and communication skills play a big part in being successful
- You will eventually have to take care of a team of software engineers and a good amount of your time will be spent on being responsible for their work as well
- And finally you become technology agonistic, you know no coding just creating presentations and word documents and understanding standards is what it means :-)
- Hacking more and talking less to people especially who don't exactly understand how computers work(a.k.a customers)
- Yeah you need to document,design,code as well here but much more fun doing this for say the next version of your pet Firefox extension than if you are doing this for release 17 of an old application for pulling customer number information from a stupid mainframe system
- If your hacking skills are par excellence, people will bear with your pathetic presentation and communication skills .Afterall its the inside that matters and not the outside
- Maybe you will end up being a lead here as well, but I am sure there are multiple projects where the complexity of the project is so high that you will still be valuable as an indiviual contributor
- The more you are here the more interesting problems you will solve and the more cool you will become and more cool you are.Its a perspective again, some people might find IT Architects from big corporations wearing 3 piece suits and doing slick presentations cool but then lets screw those people now :-P
PS:Now don't get me wrong I know there are problems in the domain of path 1 which are extremely challenging and I know there are problems in path 2 which are very boring,I am just talking of the averages of what I *think* it is like to be in path 1 and path 2
Subscribe to:
Comments (Atom)