{"id":1461,"date":"2011-04-15T09:55:12","date_gmt":"2011-04-15T04:25:12","guid":{"rendered":"http:\/\/www.prasadgupte.com\/go\/?p=1461"},"modified":"2011-04-19T11:34:37","modified_gmt":"2011-04-19T06:04:37","slug":"5-qualities-useful-programmer-nerd","status":"publish","type":"post","link":"https:\/\/www.prasadgupte.com\/blog\/5-qualities-useful-programmer-nerd\/","title":{"rendered":"5 qualities of a useful geek, or some unsound advice from a product manager"},"content":{"rendered":"<p style=\"text-align: justify;\">I am a geek, may be a nerd, may be both. And may be this is the justification of never having had the opportunity to  work on a killer project that was exemplar of cutting-edge technology. I never wanted to. But I&#8217;ve  made most out of unmatched opportunities, to deliver business critical software that has done its job. I&#8217;m not a master of any  technology\/language, but a jack of many: whether for work or <a title=\"I confessed about being a nerd\" href=\"#\">leisure<\/a>, I&#8217;ve touched upon most known technologies. But all that diversification makes me confident of being able to solve a problem, and not necessarily using a certain technology. I am now a product manager, far from coding. So you are about to take some unsound advice. Please continue reading at your own risk. These tips are not for software engineers who are experts in a particular technology. These are for pure computer geeks &#8211; people who love writing code.<\/p>\n<h3 style=\"text-align: justify;\">1. Focus on concepts &amp; constructs, not syntax<\/h3>\n<p style=\"text-align: justify;\">People often ask: <em>I want to do a computer course, what language do I learn?<\/em> And I ask them to clarify: <em>Do you want to learn, earn or both+fun?<\/em> My answers for each (in order) are: <em>C, Java and PHP<\/em>. But at the end, it boils down to concepts. Knowing what a loop requires to run, the power of references, how strings are managed in the heap (&amp; <a title=\"You need to know this if you're into Java\" href=\"http:\/\/answers.yahoo.com\/question\/index?qid=20090613232641AAj9q3w\" target=\"_blank\">why they are immutable<\/a>), etc. This learning is divine. So, don&#8217;t start learning syntax, focus on concepts.<\/p>\n<h3 style=\"text-align: justify;\">2. Be single &#8211; always &#8211; and free to mingle<\/h3>\n<p style=\"text-align: justify;\">Don&#8217;t marry a technology or you will look at every problem from the same lens. There are things that PHP can&#8217;t do, and places where Excel Macros won&#8217;t scale &#8211; but not everything requires Java with Spring, Hibernate &amp; MQ. May be Javascript can solve the problem. Focus on the problem, and be willing to use any technology that works best, even if it means adopting something new. Like they say about soul mates, there is some God-(or man?) gifted technology out there which is waiting for you to grab it.<\/p>\n<h3 style=\"text-align: justify;\">3. Be Lazy, very lazy<\/h3>\n<p style=\"text-align: justify;\">This is the first real piece of advice that I got as a developer (back then, I was writing hex frames to <em>speak<\/em> to cars). And I couldn&#8217;t neglect it, because <!--more-->it came from someone who had been <a title=\"and earning proportionally, unlike in India where we're forced to project management\" href=\"#\">coding for 25 years<\/a> in the <a title=\"note: I didn't say technology - he kept delivering improved solutions to the same business problem\" href=\"#\">same domain<\/a>. Be lazy to write code, be lazy to test the same code again. This will force you to build a generic code library over time, and use it to expedite any subsequent development. And Larry&#8217;s been by your side ever since he pledged to make the world&#8217;s information accessible &amp; usable. Spend (time &amp; money) wisely. Anything useful, feel free to beg, borrow, &#8230;<\/p>\n<h3 style=\"text-align: justify;\">4. Solve real world problems<\/h3>\n<p style=\"text-align: justify;\">Never raise a toast to an academic accomplishment. Remember: <strong>what doesn&#8217;t ship has no value<\/strong>. Make sure you are learning by solving a real problem that will make someone smile. Code that doesn&#8217;t help humanity is same as <a title=\"This line was often used in VB with the endif syntax\" href=\"#\"><em>&#8216;doNothing<\/em><\/a>. You could be making a Symbian phone theme for your girlfriend or writing ant script to start 5 programs you need on OS start-up. Whatever it is, take pride in solving a problem, shipping a working solution &amp; making someone&#8217;s life easy. Don&#8217;t compromise on anything less.<\/p>\n<h3 style=\"text-align: justify;\">5. Help, and you will be helped<\/h3>\n<p style=\"text-align: justify;\">As simple as it sounds. Participate on <a title=\"StackOverflow has been the guiding light\" href=\"http:\/\/stackoverflow.com\/users\/318244\/prasad\" target=\"_blank\">Q&amp;A sites<\/a>, share whatever you know, and <a title=\"My contributions to Symfony for multi-tenancy, audit, etc\" href=\"http:\/\/www.symfony-project.org\/plugins\/developer\/prasad-gupte\" target=\"_blank\">contribute to open source<\/a>. You never know how a 3 line snippet could help someone leave in time for their daughter&#8217;s b&#8217;day party. Besides, the community is where you will make friends with a lot of like-minded people (a.k.a. geeks\/nerds). Share &amp; learn best practices (without getting specific about syntax). Scratch someone&#8217;s back if you ever want to be scratched back \ud83d\ude00<\/p>\n<p style=\"text-align: justify;\">That&#8217;s quite it, if it helps. To quickly recapitulate: focus on concepts and not technology when solving real problems, be lazy and share. By the way, C and pointers remind me of the day I felt very lucky: that was the day I heard <a title=\"you_dont_know_C = youKnow(Yashavant_Kanetkar) | youKnow(Brian_Ritchie) | 0;\" href=\"http:\/\/en.wikipedia.org\/wiki\/Yashavant_Kanetkar\" target=\"_blank\">Yashwant Kanetkar<\/a> (of the <a title=\"Yashwant Kanetkar's work\" href=\"http:\/\/www.kicit.com\/content\/books-yashavant-kanetkar-and-asang-dani\" target=\"_blank\">Let Us C<\/a> fame) speak &#8211; Live &#8211; on pointers. The room was so packed that you would have to run <a title=\"Garbage Collection is important for memory hygeine\" href=\"http:\/\/en.wikipedia.org\/wiki\/Garbage_collector\" target=\"_blank\">GC<\/a> twice to empty it. But my conscience, and <a title=\"If you didn't know this, you could be abashed in a public forum\" href=\"http:\/\/www.coderanch.com\/t\/209857\/java\/java\/call-garbage-collector-implicitly\" target=\"_blank\">Java concepts<\/a>, are forcing me to delete the previous line. I can&#8217;t ignore the fact that the GC is like a woman &#8211; you can&#8217;t get it to do it when you like it, it&#8217;ll do it as per its own whims &amp; fancies \ud83d\ude09<\/p>\n<p style=\"text-align: justify;\">So what are you? A Java guru, a RIA developer, or a useful programmer?<\/p>\n<p style=\"text-align: justify;\">Open for comments.<\/p>\n<p><strong>Tweet\/Share<\/strong>: @prasadgupte: 5 qualities of a useful geek, or some unsound advice from a product manager <span style=\"text-decoration: underline;\">http:\/\/bit.ly\/i9sj5f <\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I am a geek, may be a nerd, may be both. And may be this is the justification of never having had the opportunity to work on a killer project that was exemplar of cutting-edge technology. I never wanted to. But I&#8217;ve made most out of unmatched opportunities, to deliver business critical software that has &hellip; <a href=\"https:\/\/www.prasadgupte.com\/blog\/5-qualities-useful-programmer-nerd\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">5 qualities of a useful geek, or some unsound advice from a product manager<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[723,5],"tags":[743,745,582,744,746],"class_list":["post-1461","post","type-post","status-publish","format-standard","hentry","category-being-a-product-manager","category-technology","tag-java","tag-lazy","tag-linkedin","tag-nerd","tag-solution"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/posts\/1461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/comments?post=1461"}],"version-history":[{"count":0,"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/posts\/1461\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/media?parent=1461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/categories?post=1461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/tags?post=1461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}