tag:blogger.com,1999:blog-47489456518000687632024-02-18T21:54:40.967-08:00Tech Jobs/SpaceMikehttp://www.blogger.com/profile/04000501318053109815noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-4748945651800068763.post-72922447594719743172011-10-09T13:42:00.000-07:002011-10-11T05:15:34.137-07:00Quasio - contact filtering applicationWell well well... It has been sometime... I have been busy and have experienced some hardships in life with close deaths in the family but I am back! The long awaited Android application that I have been building is out. Quasio is out and available: <br />
<br />
<a href="https://market.android.com/details?id=com.smartcontacts">Quasio</a><br />
<br />
The full details are in the link. I will post what I shared with a group of techies via email in this blog for public consumption. This will cover the story and motivation behind the app... Here we go:<br />
<br />
<b>Background:</b><br />
<br />
The idea for the application came about while transferring cell phone providers. I bought an Android phone because I wanted to develop applications and create a passive income stream from it but had no idea what those applications would be. While transferring numbers from my old trust worthy BlackJack phone to my new Android HTC EVO phone, I tried to get software to do it but could not find one that could do it conveniently. As you would imagine this can be a nightmare when you have lots of contacts which you then have to manually transfer over wasting precious time. Through this frustration a thought came to my head: Why am I transferring Jane and John Doe over when I barely speak to them? I do not want to delete them, but it would be nice if there was an application out there that would hide contacts if I have not spoken to them in X days, weeks, or months...<br />
<br />
<b>Application Idea Was Born:</b><br />
<br />
I first did some application searches in the Android Market to find an application that can do this reasoning: "somebody else on this big planet must have experienced the same frustration and need the same thing... I am pretty sure this exists out there, I will just buy it and be done with it", but to my surprise, nothing existed in the form that I wished it had. I then said, "let me just move people into groups and manage it that way. This is a feature available in the native Contact application." The developer in me, i.e. the lazy developer in me spoke loudly and said: "I am lazy! I would prefer for the phone to do it for me." So it was time to scratch my itch and get it done! I bought an Android book from Manning:<br />
<br />
<a href="http://www.manning.com/ableson2/">Android in Action, Second Edition</a><br />
<br />
and read the book in a week and was pumped up! It took me 3 weeks to develop the application (nights and weekends with some slacking :( ) and then I spent another week or so building in the security leveraging Google APIs and recommendations. I told some of my friends (software developers, QA testers, and non-techies) about the app and invited them to a private beta testing. We tested for about 2 weeks and fixed some bugs and usability/UI issues along the way. I was finally in a position to release the application and get it out to the market (so exciting to own your own product!!!)<br />
<br />
<b>Application release and Marketing effort:</b><br />
<br />
I was very apprehensive to release the app to the market without a marketing effort and knew that sales would not be good without rising above the "noise levels" within the Android Market. The Android Market has to date 250,000 (this is a stale value and is increasing all the time, this value came from <a href="http://en.wikipedia.org/wiki/Android_Market">Wikipedia</a>). I became concerned with this number and came up with the idea of creating a commercial to somewhat mirror the "Mac vs PC" commercials. I will not spoil it for you so I will provide you with the link as soon as it is fully edited and ready for YouTube prime time (I am starring in the commercial despite the good efforts of my director and producer trying to fire me from the commercial and get a professional actor lol! My ego wanted to be in it so I refused to be replaced, lol, Besides I write code, how hard can it be to act?). I am also creating a video that will dive into how to use the app and cover questions that may commonly arise among first time users.<br />
<br />
Despite not having the marketing engine in place, I released the application to the Android just to make sure it works and because some of my friends have been waiting to purchase it! So it has been released and has been out for about 2 weeks to date:<br />
<br />
<a href="https://market.android.com/details?id=com.smartcontacts">https://market.android.com/details?id=com.smartcontacts</a><br />
<br />
The full description of the application is in the link so I will not fully explain the functionality here to avoid redundantly covering it. To sum it up though this is what the application does:<br />
<br />
<ol><li>It breaks up your contacts into 2 groups: active and inactive (all contacts with phone numbers on the phone are automatically synced with the app and are kept in sync)</li>
<li>It allows you to set how long between conversations (text/phone) active contacts show be moved to the inactive group; so if you set it to a week and you have not called/texted John Doe or John Doe has not called/texted you in a week, John Doe gets moved to the inactive list automatically. The minute you contact John Doe or John Doe contacts you, John is automatically moved to the active list (you can also move people manually if you want)</li>
<li>Active and Inactive contacts are sorted by how often you talk to them then name. For instance, if you talked to John 10 times and Eddie 9 times, John will be on the top of the list because you have interacted with him the most</li>
<li>The app lets you add, delete, call, text, edit, move contacts between active and inactive groups, and view the call log</li>
</ol><br />
This app will save you from scrolling/searching/using-shortcuts to find people you talk to the most in the sea of contacts on your phone. This is what I wanted for myself because I hate wasting time doing all of that.<br />
<br />
The app price is $1.99 which I think is a fair price point but may be subject to change. I do not believe in the Google model of giving things up for free in the hopes of monetizing applications via adds. Ads are good for certain types of applications like applications with contextual information that may cover a particular niche, subject, and/or topic. This helps both the business advertising and the content provider, leading to higher conversion rates due to its relevance to content and avoiding spamming the user with useless ads. My application has no content to speak of other than your contacts which is not relevant to any advertiser so I would hate to steal their money with clicks that will likely not lead to the desired action.<br />
<br />
Another thing is that the major benefactors of ads are the ad networks, i.e. Google and the rest of the ad providers, unless as I have said before that the application itself provides content related to the ad and therefore produces ads relevant to the user base.<br />
<br />
IMHO developers should be paid for their efforts and businesses since the dawn of time have been run on revenue and profits and not the hopes that people will click on ads. Every other sector of society expects money for their services, it is about time we as developers start to ask for the same (doesn't have to be much but something we also need to eat!)<br />
<br />
That is the end of the email thread. Hope you enjoyed!<br />
<br />
<a href-"http://twitter.com/mrosario2012">Follow me on Twitter mrosario2012</a>Mikehttp://www.blogger.com/profile/04000501318053109815noreply@blogger.com0tag:blogger.com,1999:blog-4748945651800068763.post-87822667169529389922011-05-14T16:15:00.000-07:002011-05-14T16:15:35.439-07:00Diversify Your Life PortfolioLately, I have been working pretty hard on an Android application for a new contact management system (finally!!) and have been just doing that after work and on the weekends. It has been time consuming because I had to read a book and learn the platform (which I do not mind because I am a software developer and love coding), and has practically been the only thing I have done in the past few weeks. This is fine and actually recommendable when comes to building a product, business, or service, but can cause havoc to your emotional and entrepreneurial health. Why can it be dangerous to your emotional and entrepreneurial health? <br />
<br />
In a word – failure. If what you are working on fails to get to where you expect to, or just doesn't go anywhere, you will take an emotional and entrepreneurial hit that may put you out of commission. The journey to achieve financial freedom is a harsh and hard road one has to travel that has hurdles, bumps, and maybe some discomfort. Because of this inherent risk, I believe people should diversify their happiness or life portfolio to hedge against and minimize the risk of failure in one area of life. <a href="http://37signals.com/svn/posts/2734-tim-ferriss-on-tolerable-mediocrity-false-idols-diversifying-your-identity-and-the-advice-he-gives-startups">Tim Ferris discusses this in part in a blog with 37Signals.</a> <br />
<br />
We should be involved in multiple things in life outside of business. Tim recommends having a physical activity to balance your life like going to the gym and setting exercise goals. This way if one of your weeks is bad on the business side, but you've reached a milestone in the gym, you will not feel entirely bad and may actually not even get upset at all. I think this advise is solid and should be obeyed like a commandment. The activity outside business could be dance classes, learning a new language, taking a class cooking, sculpting, teaching your children, volunteer work, etc; just something else where you can achieve, or help someone; this will feed your ego.<br />
<br />
Life is hard and the road paved for entrepreneurs is tough, so be smart about your pursuits and try to strike a balance. This will help you make it through the hard times and overcome the setbacks. Stay positive, keep positive people around you, and soldier on in the battle for independence!<br />
<br />
<a href-"http://twitter.com/mrosario2012">Follow me on Twitter mrosario2012</a>Mikehttp://www.blogger.com/profile/04000501318053109815noreply@blogger.com0tag:blogger.com,1999:blog-4748945651800068763.post-77043503117019714792011-04-15T18:41:00.000-07:002011-04-15T18:41:24.891-07:00Fight the resistance<iframe src="http://rcm.amazon.com/e/cm?t=httptechjobsb-20&o=1&p=8&l=bpl&asins=1585421472&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
Often times, we want to get stuff done to accomplish a desired goal but fall short of accomplishing it. A short list of culprits:<br />
<br />
“I do not have time”<br />
“I just do not see the point. I may put in a lot of time and get nothing back”<br />
“I am exhausted after work, forget it man. I rather play Xbox or watch tv”<br />
“I have too many commitments, I cannot add another to the list”<br />
“It's futile man... I will quit while I am ahead”<br />
<br />
Excuses like these are just a way to protect your ego from your lack of commitment to get things done. When I mention this to friends I often hear, “I only have one life to live, I am not going to waste it”... Watching TV is not a waste of time? How much entertainment do you need in your life to feel satisfied and get on with what needs to be done to progress? I am a firm believer that pleasure should be rewarded only after hard work. <br />
<br />
Everyone has interest in succeeding but few make the commitment to see it through. It is easy to talk and bs your way into feeling good with bs-sessions. The hard part, and the only way to get to where you need to go, is through work, not talk, work. Resistance is encountered when things outside of our normal sphere of comfort are challenged; this resistance is usually a deep societal and environmental training towards mediocrity that has a strong gravitational pull towards the easy path. It is time to challenge these assumptions and beliefs and question their roots. Is career thing for me? Do I want to be running with the rest of the rats on the treadmill to the retirement home? Why do I believe what I believe? Is it because I am afraid to be different and challenge status quo? Or is it because this was a thought I came up with after careful consideration? <br />
<br />
Ponder this the next time resistance raises its ugly head. You have to choose to do it and see value in it in for it to get done. It may be hard and uncomfortable but you have to accept it and forge ahead. Challenge the voice in your head telling you to postpone action and “just live your life”. This voice is usually a lie or a mediocre cry from the years of indoctrination to “get with the program” and be like everyone else. Fight the resistance even if you are it.<br />
<br />
Follow me on Twitter <a href="http://twitter.com/mrosario2012">mrosario2012</a>Mikehttp://www.blogger.com/profile/04000501318053109815noreply@blogger.com0tag:blogger.com,1999:blog-4748945651800068763.post-63789232140095190612011-01-31T20:51:00.000-08:002011-01-31T21:28:47.586-08:00Building equity with products<iframe src="http://rcm.amazon.com/e/cm?t=httptechjobsb-20&o=1&p=8&l=bpl&asins=B003YH9MMI&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
Software development is an awesome thing offering both pain and joy, but beyond that, it puts developers in a unique position. We can literally create a product out of thin air that solves a problem and adds value. Most of us do it for companies and receive compensation for it, others do it for their own business (we will leave out the hobbyists who do it for fun and the open source community in this discussion.) Which one builds equity and what should we pursue?<br />
<br />
Let's start our look with default route people usually take en masse-- the employment route. Why is this the default? Schools prepare us for today's jobs or to become university professors. The institution of school was built to serve industrial means and as such must crank out good skilled employees who can serve the needs of industry. <a href="http://www.youtube.com/watch?v=iG9CE55wbtY">Sir Ken Robinson</a> does a magnificent job at explaining how the system works and why it is deficient for tomorrows needs. How can school be preparing us for an unknown future? What will happen five years from now? One year from now? No one knows yet we pretend to be preparing our children for it... But I digress...<br />
<br />
Going to school can be good thing and prepares us to meet the needs of industry today. As developers, a lot of us will study computer science and learn great things like discrete mathematics, hard sciences, math, programming, data structures, software engineering, etc. With this knowledge and skills at hand, we then hope to enter the workforce to build and/or enhance applications. This is an extremely pleasurable experience. Working on something you are passionate about and getting payed for it is the ultimate thing ever in my opinion. Here some of the other benefits of employment:<br />
<ul><li>Steady and predictable income</li>
<li>Career progression</li>
<li>Working with a team</li>
<li>Growing personally and professionally</li>
<li>Learning new skills, technical and otherwise, from more experienced developers</li>
<li>Managing projects and teams</li>
<li>Working with people across regions and different cultures</li>
<li>Learning best practices</li>
<li>Getting to see what powers a company and how its technology infrastructure is structured</li>
</ul>There are many more benefits to employment but there are some drawbacks as well. One I have come to notice as of late:<br />
<ul><li>Ownership of your work belongs to your employer</li>
</ul>In a corporate environment you get to build really cool stuff but own nothing and just take home what you have learned. The code is theirs and will be used to grow drive revenue or save money. Sometimes this revenue or savings can be in the millions. At my old employer, we used a vendors matching engine that was essentially nothing more than a 2-3 month project (at most), which the firm payed about 1-2 million for up front and had a maintenance cost of $200,000 dollars a year. Guest how many times we had to call them for support? Twice in 5 years. It's design was simple and elegant: a 2 tier C++ application hitting the database. Our applications fed it trade data from hooks we built to the database. The database had a series of triggers that called stored procedures or plain SQL that would take action upon receiving new trade data. It would perform matches when possible, report near matches, failed matches, and other exceptions to the users for their intervention. The matching engine was very flexible in the sense that we owned the database and were able to make schema and core changes to the database logic at will. 1-2 million dollars plus $200,000 a year for something we estimated would have taken 2 guys to build in 2-3 months. Amazing isn't it? Who would have thought that much effort would have that much of a return without being a rock star? Let's do some simple math here. Let's assume they would have paid 1 million dollars for it. That means that the 2 guys I mentioned in our estimate would have made $500,000 each (excluding the support income). Now assuming the worst case of our estimate, let's say it would have taken them 3 months to build. They would have each made about $167,000 per month. Not a bad wage huh? Remember this was just one bank paying this. Others banks would have probably paid the same with little hassle once they would have seen the competition pick it up. <br />
<br />
Now obviously I am ignoring some costs here. The one cost of many I am ignoring here are the marketing costs and other miscellaneous costs. This would take down their earnings quite a bit. Another thing I failed to mention here is as well is how hard it is to sell to enterprise businesses or the Fortune 500. It can be incredibly hard from what I hear and can take forever for it to clear and for money and software to exchange hands. But the point I am trying to drive home here is the equity these guys would build from owning this software and that would increase overtime when enhanced it new features. Targeting small businesses would increase their chances of success as well (at a much cheaper price.)<br />
<br />
This leads us to the final point of the blog and that is one of building equity. When you write software that you plan on renting or selling to the public, you are building equity overtime and increasing your net worth. The software business is sort of a copy and paste business model: build it once and correctly (or correct enough) then copy and ship the product to as many customers as you can acquire. The effort is not duplicated like when you are employed and have to constantly build newer things. You just have to build something people want or need once (with maintenance cycles of course) well enough and people will pay. Good thing about building a product is that it belongs to you and you can do whatever you like with it. One question you may have at this point is: how do I find a product people want or need? For starters, what do you want or need that does not exist or exists but does not meet your needs? What do family and friends our yours in unrelated areas of life want or need? What do people in the hobbies you enjoy want or need? There are many ways to find niches as described in this new book I am reading called <a target="_blank" href="http://www.amazon.com/Start-Small-Stay-Developers-ebook/dp/B003YH9MMI?ie=UTF8&tag=httptechjobsb-20&link_code=btl&camp=213689&creative=392969">Start Small, Stay Small: A Developer's Guide to Launching a Startup</a><img src="http://www.assoc-amazon.com/e/ir?t=httptechjobsb-20&l=btl&camp=213689&creative=392969&o=1&a=B003YH9MMI" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" />. I think any technical entrepreneur with ambition to get into the game should definitely pick up this book and add it to their arsenal. There is not talk here of chasing VC's and seeking millions in funding to get started. It basically teaches you how to build it in your spare time and on your budget. I cannot put the book down and have already started to employ his advice on market research using Google Adsense and other tools available online. Amazing read check it out.<br />
<br />
Follow me on Twitter <a href="http://twitter.com/mrosario2012">mrosario2012</a>Mikehttp://www.blogger.com/profile/04000501318053109815noreply@blogger.com0tag:blogger.com,1999:blog-4748945651800068763.post-45590888795602383302010-12-28T15:41:00.000-08:002011-01-31T21:29:27.151-08:00Deceptive Software ProductsProducts to the naked eye look marvelous from the outside to the unsuspecting of us. I like to think of products (in particular software) as looking like this beautiful house: <br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSI-kC4rAHGdqFGdfYBnTX2zkAn4XlDHK2W3MG3m40Yeqb3mMFf1RZkCt2tQg_tabCT4RUQrFQQpsftk2tJUgY32f07Gn0ycChrAfgIc0-AFWRX7gV_yJZuZ3kgLk_wOhc0_wn5ojl_Uj6/s1600/awesome-house.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="203" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSI-kC4rAHGdqFGdfYBnTX2zkAn4XlDHK2W3MG3m40Yeqb3mMFf1RZkCt2tQg_tabCT4RUQrFQQpsftk2tJUgY32f07Gn0ycChrAfgIc0-AFWRX7gV_yJZuZ3kgLk_wOhc0_wn5ojl_Uj6/s320/awesome-house.jpg" /></a></div><br />
Amazing isn't it? Beautifully laid out, marvelously sleek design, and inviting. The software may appear to have all qualities, but what about its foundation? Is it as solid and good looking as it appears? <br />
<br />
Software users usually do not ask the latter and with good reason: They are abstracted from this because software professionals are suppose to ensure that the foundation is good. The problem is some IT managers and teams do not care about quality and are all about – “get it into production and forget the rest.” Do not get me wrong, I am all about pleasing the users and getting things into production as soon as possible, but when the number of hacks increase, and there are no unit tests or other testing methodologies in place to come back and confidently fix the hacks in the next release -- this leads to the eventual degradation of the product. Maintenance will become a nightmare, new features will sometimes have to be hacked in, developers will become afraid to change the code for cleanliness and maintainability purposes, and the <a href="http://en.wikipedia.org/wiki/Broken_windows_theory">broken windows theory</a> will kick into full gear. This is a recipe for disaster in my eyes and will lead to developer dissatisfaction if proper measures are not in place.<br />
<br />
When architects/engineers build bridges and houses, they pay close attention to detail and do not over or under promise things. In the software industry, we constantly see people offering the world and a cure for cancer to boot in the first or next version of its software. This in my opinion is part of the reason why at times software looks the way it does from the inside. For instance check this nasty Java hack:<br />
<br />
<pre><code>
public void foo(Object paramObject) {
...
...
Object someObject = null;
if (paramObject instanceof String)
{
if(“Y”.equalsIgnoreCase((String)paramObject))
someObject = “Y”;
else if (paramObject == null || “N”.equalsIgnoreCase((String)paramObject) ||
“”.equalsIgnoreCase((String)paramObject))
{
someObject = “N”;
}
//some other hacky hard-coded non-sense
}
...
}
</code>
</pre><br />
This one happens to be one of the most appalling Java hacks I have seen:<br />
<br />
<pre><code>
public interface SomeInterface {
public boolean isConditionValid();
public Results getResults();
}
public class SomeClass {
...
public void foo(List<SomeInterface> list) {
...
for (SomeInterface iface : list) {
if ( iface instanceof ConcreteObjectA && iface.isConditionValid())
{
ConcreteObjectA a = (ConcreteObjectA) iface;
logger.debug(“A ConcreteObjectA is a part of the collection: ” + a.toString());
doSomethingWithTheResults( a.getResults() );
}
else if(iface instanceof ConcreteObjectB && iface.isConditionValid())
{
ConcreteObjectB b = (ConcreteObjectB) iface;
logger.debug(“A ConcreteObjectB is a part of the collection: ” + b.toString());
doSomethingWithTheResults( b.getResults() );
}
//and more and more instanceof hacks below
}
}
}
</code>
</pre><br />
This may not appear to be that bad for some but for me I find it deplorable. The same developer who wrote this, if left to his own devices, would destroy the product in no time with this kind of code. No understanding of polymorphism, object hierarchies, or design; really no understanding of anything other than javac and java commands. This individual is making a six figure salary writing this kind of garbage! Excuse my indignation but it upsets me that this same developer would go out of his way to bash software development and proclaim that is merely all just another if statement. Yes, it may appear to be easy on the surface, but proper design and coding techniques are rewarding, hard work, and part art - part science. These samples represent the worst in coding style and design, and are the reason software systems have shady/fragile foundations. I may submit the code to <a href="http://www.codinghorror.com/blog/">CodingHorror.com</a> and also write a book called “101 coding hacks I have seen” or “Hacks r us”. <br />
<br />
I know better when I see the product built with code like this and see it from the foundation upwards this way:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6IV9p5dpQcTdTK6bOsOca4mD_VRSJmazNFKmXlT-XIatbdfka6Lg58w-hwuXpydRochqYKP1-xdrWSmRRdAvKchxsuluAuCubGvdflQoAWUKeCSw7osXJlHqBrxjdkp7KuTTuiPIxwNzP/s1600/viewing-crumbling-house.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="240" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6IV9p5dpQcTdTK6bOsOca4mD_VRSJmazNFKmXlT-XIatbdfka6Lg58w-hwuXpydRochqYKP1-xdrWSmRRdAvKchxsuluAuCubGvdflQoAWUKeCSw7osXJlHqBrxjdkp7KuTTuiPIxwNzP/s320/viewing-crumbling-house.jpg" /></a></div><br />
Time to put on the hard hat and get to work!<br />
<br />
Follow me on Twitter <a href="http://twitter.com/mrosario2012">mrosario2012</a>Mikehttp://www.blogger.com/profile/04000501318053109815noreply@blogger.com0tag:blogger.com,1999:blog-4748945651800068763.post-69433325114766787032010-11-16T18:39:00.000-08:002011-01-31T21:30:18.265-08:00And furthermore, my son, be admonished; of making many books there is no end; and much study is weariness of the flesh. Bible- Ecclesiastes 12:12<iframe src="http://rcm.amazon.com/e/cm?t=httptechjobsb-20&o=1&p=8&l=bpl&asins=059610197X&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>Do you want to get something going but feel like you need lots of expertise to do so? Feeling this way, you buy books to learn things that will help you achieve your goal because you believe some level of knowledge is needed. For the time being this does not seem like a problem. However, you then begin to search online to see what the gurus are saying, and they are saying that more is required. You begin to think that what you have done is not enough so you then decide to stock up on more and more books. Then you begin to realize that your time is limited and now you decide that you need to learn about time management and spend more time looking for gurus and books to help with this dilemma. And on and on and on goes this never ending quest for perfection and well-roundedness.<br />
<br />
As you can see from where this is going, you can continually find areas that you are not an expert in that can easily derail and push you towards seeking more advice from experts. The problem is you will never be an expert in everything so just learn enough and get started! Version 1 of whatever you are building or trying to do does not have to be perfect! As a matter of fact it will never be perfect so forget it and get started. If you keep trying to learn it all when will you actually embark on the journey to get something done?<br />
<br />
Look at <a href="http://www.craigslist.com/">craigslist.com</a> (some would argue that the look and feel is still version 1)... It is a multi-million dollar business built on simple principles. <a href="http://en.wikipedia.org/wiki/Craig_Newmark">Craig Newmark</a> did not waste his time trying to figure out <a href="http://www.w3schools.com/html/default.asp">HTML</a>, <a href="http://www.w3schools.com/js/default.asp">Javascript</a>, <a href="http://www.w3schools.com/css/default.asp">CSS</a>, and web design in depth by buying an endless amount of books, going to seminars, or reading endless articles from experts. He just was passionate about an idea, built it out, and let the people decide where the product needed to go. Imagine if he had tried to be a jack of all trades and would have attempted to learn everything about server and client side development; <a href="http://www.craigslist.com">craigslist.com</a> would have taken much longer to launch or may have never launched at all if he would have gotten a bit discouraged learning any of the necessary components. Sometimes it is just good enough to know enough to accomplish a task. Let's take a web development example.<br />
<br />
Say you decide to build a site selling shirts on your own (you should probably have a partner but building it on your own is fine). You will need to know <a href="http://www.w3schools.com/html/default.asp">HTML</a> at a minimum and some server side language like <a href="http://www.php.net/">PHP</a>, <a href="http://www.python.org/">Python</a>, <a href="http://www.oracle.com/technetwork/java/index.html">Java</a>, <a href="http://www.perl.org/">Perl</a> or one of the many others. So how do you start? Learn enough to cover what is needed to get the product out and refine it over time. You do not need to be an expert in any of these areas to get a product out, just need to know enough to make it live and improve it over time. I have a friend that has no formal background in Computer Science or programming whatsoever and decided to make a social website for people to find information on parties and concerts (targeting the Latino market). He wanted to learn <a href="http://www.php.net/">PHP</a> and <a href="http://www.w3schools.com/html/default.asp">HTML/CSS/Javascript</a> so he set out to build this site which he did and improved it over time. In a few years time, the site was grossing a few thousand a month, was elegant, and he ended up selling it for a nice six figure price (will try to post his story, name, and the site in the future if he permits it). Not so bad for a novice that learned something new and became passionate about it. He told some of my friends that he was learning as he went along and did not let his lack of knowledge discourage him or set him out on a expertise expedition. He learned what he needed to know to get enough done today, then learned the rest as he went along. This point is expressed pretty well by our friends at <a href="http://37signals.com/svn/posts/2538-the-first-step-is-to-start">37Signals in this blog.</a><br />
<br />
Imagine if you needed to be an expert to be in shape? The gyms would be empty and lots more people would be overweight. “I need to learn the chest chisel pump from so and so in order to build my chest so I will delay the gym until I learn from this expert” This is silly non-sense. People often go to the gym with some basic understanding of what they have to do and learn as they go BY DOING. Sure they may have a trainer but they are still engaged in the act of DOING NOT READING. If you really need expertise in a certain area, hire someone who knows that area well so that the product or task you are trying to accomplish does not suffer a long delay. This is introduces parallelism into your life allowing more to be done faster (remember life is short). In this example hiring a trainer to work with you as you actually do the exercises is a good example of this parallelism – you are working out and getting expert advice at the same time as opposed to reading tons of books and magazines then working out (if you ever get to it). Tasks that are not dependent on each other should be done simultaneously to expedite the process when possible.<br />
<br />
Reading and more reading can be a form of procrastination and can lead to anxiety. The less you do because of the less you think you know will probably result in thinking you are not capable of achieving. This will lead to getting-it-done-paralysis. Another problem that may arise is that suddenly after reading all the books and listening to all the gurus, you feel overwhelmed and are now definitely convinced that you do not have what it takes both consciously and subconsciously. This may lead to some common forms of procrastination and busy work like “finding that your place needs cleaning”, “you need to relax more after work and you do not have much time to get it done” (funny enough though you have time for the idiot box, i.e. TV), you will “start next week” or “over the weekend”, and on and on and on.<br />
<br />
Now obviously I am not promoting this as a scientific journal but I am talking from my own personal experience and from what I have read on the web. Stop reading so much and get out and do something. Life is too short to try and become an expert at everything. Learn enough, do it, and improve it as time goes on. If you get nothing from this blog post get this! Do not worry about not being an expert now, the experts were novices at some point too but they started and overtime they got there. Make it happen and stop reading/listening and seeing others achieve – achieve yourself. Do not become someone else's cheerleader, live you life and do what you must – achieve!<br />
<br />
Follow me on twitter <a href="http://twitter.com/mrosario2012">mrosario2012</a>Mikehttp://www.blogger.com/profile/04000501318053109815noreply@blogger.com0tag:blogger.com,1999:blog-4748945651800068763.post-62852945835557327542010-10-10T21:19:00.000-07:002011-01-31T21:30:40.693-08:00Hello World on Steroids: Are You Building Lego Applications Today?<iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=httptechjobsb-20&o=1&p=8&l=bpl&asins=0596529325&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="align: left; height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"></iframe><br />
In the era of the almighty frameworks and reusable APIs, we are now in a position where applications can be put together quickly. This is awesome for people bootstrapping companies or anyone in general who needs to get a functional application up soon. My question and fear is what does it do to our understanding of the core elements of the system? Sure, we can run to the documentation or get a patch if one of the application layers beneath ours breaks, but wouldn't it be good to understand how things worked to some detail?<br />
<div align="LEFT" style="font-weight: normal; margin-bottom: 0in;"><br />
</div><div align="LEFT" style="font-weight: normal; margin-bottom: 0in;">Welcome to the world of “Hello World on Steroids.” The era in which some programmers have become systems integrators and are merely just moving data: Read from a queue, do some simple data manipulation, write to the database, then write to a reply queue and repeat this pattern for all other applications. Not to knock systems integrators (systems communicating is necessary), but if this is all your doing, you may be effectively losing the ability to write algorithms and solve problems (I speak partially for myself here as I was experiencing this for awhile and still am to some degree; I know a lot of you out there are in the same boat.) The frameworks and APIs available are powerful and all encompassing, take <a href="http://cxf.apache.org/">Apache CXF</a> for instance. This is a pretty powerful framework offering a lot out of the box:<br />
</div><ol><li><div align="LEFT" style="font-weight: normal; margin-bottom: 0in;">Multi-transport support: HTTP, JMS, TCP/IP, etc</div></li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0in;">Various protocols support: SOAP, RESTful messaging, XML, CORBA, JSON, WSDL, etc</div></li>
</ol><div align="LEFT" style="margin-bottom: 0in;"><br />
</div><div align="LEFT" style="font-weight: normal; margin-bottom: 0in;">Apache CXF has a lot more features than this but with this short list you can kind of get a feel for some of the capabilities it possesses. This framework alone does not rob anyone of problem solving ability but the APIs that come with the core Java language and all the free stuff out there may. You will probably be writing nothing more than <a href="http://en.wikipedia.org/wiki/Plain_Old_Java_Object">POJOs</a> with getter and setters wrapping the real APIs doing all the heavy-lifting. Want to connect to the database reliably and manage connection pools? Use <a href="http://www.springsource.org/">Spring</a> and <a href="http://commons.apache.org/dbcp/">Apache DBCP</a>. Want to serialize an object to XML and deserialize XML to an object? Use <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html">JAXB</a>. Want to create a tree structure or hash for some data structure you are creating? Use <a href="http://download.oracle.com/javase/tutorial/collections/index.html">Java's Collections framework</a>. If you are in an organization that has a lot of stuff built in-house that you have to use, the same applies to you – most of the work done for us out of the box. All we have to do now is design and put things together like Lego blocks. Therefore, the hard thinking is done for us by a generous bunch of geeks. So are we becoming mere dot-getters and dot-setters?<br />
<br />
</div><div align="LEFT" style="margin-bottom: 0in;"><br />
</div><div align="LEFT" style="font-weight: normal; margin-bottom: 0in;">These frameworks and APIs are great or so you may think, and I agree at some levels, but how does this stuff work? How do you use it properly if you do not understand or cannot write one yourself? What happens if it breaks in production? Do you stare at the stack trace in fear and run to the closest browser for your coding ally and team-mate Google? This is a dangerous position to be in as a developer and effectively dumbs us down over time if we are not doing anything challenging. Some of you may be saying: “Ok I get what your saying, but this stuff is open source and I can see and learn from the code, isn't that enough? Documentation for a lot of these tools rock as well so I do not need to know anything at all. Also buddy, the web community out there is supportive and someone will have the answer on <a href="http://stackoverflow.com/">Stack Overflow</a> or some other site no?” First question: It may well be enough but I contend that a lot people may shy away from getting the source and learning from it. To the second question: these communities are awesome and a God-send; yes we cannot know everything and it is more productive to ask instead of wasting time thinking about what went wrong but if you do not think at all your in for serious trouble in the long run. <br />
</div><div align="LEFT" style="margin-bottom: 0in;"><br />
</div><div align="LEFT" style="font-weight: normal; margin-bottom: 0in;">Fundamentals should be covered in detail and well understood. Whether it is covering these things extensively in college or on your own, you should know at least how data structures work. As a developer, you should have some core knowledge of algorithms and framework development to begin to understand what may have been the design decisions of the team building the frameworks you use, the choices they may have made while building it, how they may have built it, advantages and disadvantages the framework may have, and this may be the best part: potentially extending it and/or contributing to it. If you are contributing to a framework and/or API this is a good sign that you are on the right track and probably passionate about the field. This to me is also a sign that you may possess adequate knowledge in the area. If this is the case for you, then this article is a moot point to gloss over and ignore. For the others out there who are not in this subset and belong to the dot-getters and dot-setters club be warned: Go beyond just putting applications together as Lego blocks and try to get some depth in some area.<br />
</div><div align="LEFT" style="margin-bottom: 0in;"><br />
</div><div align="LEFT" style="font-weight: normal; margin-bottom: 0in;">To end this I would like to say, I strongly agree and support the notion of Lego application building and reuse as much and as often as possible. There is no point in reinventing the wheel over and over again when problems have been solved efficiently by people with expertise in niche areas of the field. My problem is when developers make no effort to understand the plumbings of what it is they will be using and are just happy making API calls to get the work done. I think this is a dangerous approach to take and just waters-down what we do for a living and takes some of the greatness out of it.<br />
</div><br />
<div align="LEFT" style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Follow me on Twitter <a href="https://twitter.com/mrosario2012">mrosario2012</a></span><br />
</div>Mikehttp://www.blogger.com/profile/04000501318053109815noreply@blogger.com0tag:blogger.com,1999:blog-4748945651800068763.post-44564959124268525052010-09-30T19:27:00.000-07:002011-01-31T21:30:56.875-08:00Do you have any questions for us?<div style="font-style: normal; font-weight: normal; margin-bottom: 0in;"><iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=httptechjobsb-20&o=1&p=8&l=bpl&asins=047012167X&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="align: left; height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"></iframe><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">This age old question is usually asked in a disingenuous way at the end of interviews and is rarely viewed as an opportunity by applicants to ask questions (for good reasons most of the time of course, i.e. we are in a recession so we can't be too picky). Despite external conditions, I think it is high time people started asking some questions at least to get a sense of what they are getting into. I for one should have asked some intelligently worded questions to get a hint of the nightmare I was walking into; sure I am making more money and we are in a recession, but the place is <a href="http://en.wikipedia.org/wiki/Chernobyl">Chernobyl</a>. At times it feels like interviewers are not that sharp and are just Googling for the hardest questions they can find to ask someone; questions they could not answer themselves without looking up. Had I known what I know now, I would have tried my best to make amends with my previous employer or at least attempted to move across IT departments. Oh how I languish in this dysfunctional organization...</span></div><div style="font-style: normal; font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Anyway, enough of my ranting... what should we or could we ask without seeming like an antagonist before accepting the offer? I can only write about programmers (from here on referred to as IT) in this particular blog because that is what I do but can and will add questions others submit for other career paths. Before we answer the questions just raised, let's talk about some of the things you can do prior to interviewing: </span></div><ol><li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Find out about the company culture from insiders and people that have worked there</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Find out how integral a part of the company the role you are pursing will play</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Find out how much the company invests in IT and where they stand in terms of reputation and ability</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Find out how often they hire and what is the turnover rate</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Is it a sweatshop?</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Find out where they recruit talent (not too important and can be misleading but you should know)</span></li>
</ol><div style="margin-bottom: 0in;"></div><div style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">These are just some of the many questions you can start thinking about before even walking in for an interview. Remember, if hired, you will be working with these people for the minimum of 8 hours a day and will absorb some aspects of the culture, good and bad, and will be working with the tools that are in house to get the day to day done. So, lets dive in to the six preliminary things to explore before approaching a company for employment. </span></div><div style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="margin-bottom: 0in;"><b><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Number 1: Find out about the company culture from insiders and people that have worked there</span></b><br />
<b><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span></b></div><div style="margin-bottom: 0in;"></div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">This can help point you to the potential good and bad qualities the company embodies. From investigating the culture, you may see a few things:</span></div><ol><li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">You can see what kind of internal politics may exist</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">It can also tell you whether there is a decent hacker culture (good hackers, i.e. good programmers/architects/designers)</span> </li>
</ol><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">This in no way is a silver bullet, but at the minimum you are doing your due diligence to determine whether it is a fit for you. If you have friends there that are happy and not leaving anytime soon, you may choose to not look too deeply into this. Working with friends is a cool thing and helps productivity.</span></div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="margin-bottom: 0in;"><b><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Number 2: Find out how integral a part of the company the role you are pursing will play</span></b></div><div style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">This is important depending on what it is you plan on getting out of the job. If you are taking on this new role for more family time, time for school at night, more time for side work, or building a company on the side as our friends from <a href="http://37signals.com/svn">37signals</a> suggest, then what you may be looking for is a role that is not too time consuming and intense. Do not step into an area where you will be building the equivalent of a rocket ship if you have outside interests you wish to pursue. You will hate yourself if you do.</span></div><div style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">However if the focus is to get into full-fledged career mode, and you are looking to grow in a new and exciting company, then you should be looking for a role in an area that will have a decent if not great impact on the organization. This should be in an area where you can flex your intellectual muscle and contribute to the bottom line in a way that is satisfying to you, the customers, the team, and the company. You will be looking to try new things, learn new technologies, new algorithms/methods, and work with a happy bunch of guys who just like doing cool stuff. This is the nirvana state; this is where we all want to end up whether it is working for ourselves or someone else. This is what I seek at the moment.</span></div><div style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="margin-bottom: 0in;"><b><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Number 3: Find out how much the company invests in IT and where they stand in terms of reputation and ability</span></b></div><div style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">The reason I mentioned this one is because of my current plight. I left an organization that placed a high value on its IT staff, despite IT being viewed as an expense and not a core part of the business. The end result of placing high value in IT was that they got more out of IT. This enabled them to build cutting edge platforms and frameworks that gave them an advantage. This technology was standardized within the company so all groups were able to use it, and it had great support and documentation. Applications were built quickly and easily in-house. Drawbacks to this of course are that the IT guys not building the frameworks and tool sets became highly specialized and are completely absorbed by all the in-house stuff. They can potentially lose touch with the open-source frameworks and tool kits over time. A win-win for the business, yet questionable for IT. One can argue that you can keep up with open source when you get out of work but I would argue that most people do not. </span></div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Coming back to my point, a company who just views IT as some sort of a utility or tool to use and does not invest or place value in that section of the company is bound to have the following symptoms:</span></div><ol><li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">High turnover rate (bad for business and the product)</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Bring in bad developers, i.e. political scientists (those damn politically inclined employees!) masquerading as computer scientists</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Turnout buggy software and bad practices (this will ruin you in interviews as this infectious disease will take hold of you)</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Be very tactical and not strategic (not such a bad thing all the time as we cannot predict the future and should build for today's requirements; they call it software for a reason: it is flexible and can be refactored)</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Have a shitty vision and leadership</span> </li>
</ol><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">I had one Managing Director (MD) tell me that IT is viewed in most places a light bill, something you hate to pay but need to. These kind of statements are detestable to say the least. This sort of overt minimization demoralizes hard working smart people and leads to 1, 2 , and 3 above. Programming is very creative, dynamic, and fluid to say the least. It is very rewarding when you can take an idea and materialize it in the form of software. I think that this is exciting and is what drives me.</span></div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="margin-bottom: 0in;"><b><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Number 4: Find out how often they hire and what is the turnover rate</span></b></div><div style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">If people are leaving all the time you need to know this. People leaving in droves from a company may be a sign of some nasty things taking place that people are running from. You may be walking into a land mine field. Please if you take none of my other advise at least consider this one. We all deserve to be in a decent place of employment.</span></div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="margin-bottom: 0in;"><b><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Number 5: Is it a sweatshop?</span></b></div><div style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">If the culture is about ASAP, get it done now, we work around-the-clock crap, stay the hell away if you want any semblance of a life! If you like working in this way, all power to you but remember the company will probably forget this when it comes time to hand out the pink slips. In the words of the rapper <a href="http://en.wikipedia.org/wiki/Pharell">Pharell</a>: <a href="http://www.google.com/url?url=http://s0.ilike.com/play%23Snoop%2BDogg:Drop%2BIt%2BLike%2BIt%27s%2BHot:23329:s57762.14256.1719051.1.1.70%252Cstd_940f38e9fa9ae65e11cfe0adecb61819&rct=j&sa=X&ei=f0-lTNm_KoO88ga6rMy3Cg&ved=0CB8Q0wQoADAA&q=drop+it+like+its+hot&usg=AFQjCNH-oRIBn50f9DsrRtAPpVov24ekMg&cad=rjt">“You should think about it, take a second...”</a></span></div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="margin-bottom: 0in;"><b><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Number 6: Find out where they recruit talent</span></b></div><div style="margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Where they recruit talent tells you a few things:</span></div><ol><li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">It tells you the caliber of people that you will be working with</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Allows you to investigate the kinds of people you will be working with indirectly by understanding the campus culture they can from (you can find out about the school culture through social networks and online resources). We are all, at the end of the day, the sum total of our experiences and products of our environment</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">What kind of leadership will be emerging from the company in the years to come as these developers mature and grow. Please note though, that if the culture test fails because of extreme politics, it is likely that this talented pool of employees will either become highly political themselves or just leave and go somewhere else. True hackers hate politics and just want to work with good people having fun solving problems together and cutting cool code</span></li>
</ol><div style="font-weight: normal; margin-bottom: 0in;"></div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Please take points like the last one with a grain of salt. Some people that go to Ivy league schools are not as great as their resume makes them appear. I worked with a few individuals from Ivy league schools that were shockingly bad and did not understand the fundamentals of comp sci. Also, the non-ivy leaguers tend to work hard because they are at a disadvantage from a recruitment perspective. They know their schools will not likely open any doors. They tend to work really hard to learn and are usually passionate about what they are doing. In the end though, it is hard to really rank people until you have worked with them and seen their output.</span></div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="margin-bottom: 0in;"><b><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Questions to ask interviews/employers</span></b></div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span> </div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">So what questions should we ask after the interview? Here is a short list of questions we can ask (open to suggestion, these questions are just what I have thought of pretty sure you guys have better ones):</span></div><div style="font-weight: normal; margin-bottom: 0in;"></div><ol><li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">What kind of source control systems do you use? You may think everybody is using this these days but you will be surprised. I know of a friend in Wall Street who works with a team that has special folders where custom scripts check timestamps for “check-ins” and promote code to production. They do not use source control at all. This is madness!</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">How big is the team and how much are you planning to grow to? Is this a new team? (If it is not a new team and they are growing fast this can be a sign of people having quit in the past or were laid off or may just be a genuine sign of growth)</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">What kind of work is the team doing now and what will the new team member be working on?</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">What <a href="http://en.wikipedia.org/wiki/Technical_support">level of support</a> does the team provide? Level 1, 2, or 3 or all?</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">What technologies are you using currently and what will you be using in the future?</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">How is the team structured? Do you have a technical lead? Are your projects tactical in nature or strategic? If tactical, will the focus ever change to strategic? (if all they are doing is tactical work, then you may be going in to a maintenance shop where real development may not be taking place and you are just bolting on new features or fixing bugs; but as <a href="http://en.wikipedia.org/wiki/Guido_van_Rossum">Guido van Rossum</a> points out <a href="http://www.python.org/dev/peps/pep-0008/">code is often read more than written</a> so it will probably be hard to get into fresh development but make sure you are comfortable with this. Code maintenance and development ratios should be balanced wherever you go)</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Do you have code reviews? Architecture reviews? (Signs of how much they value quality and strive to keep things clean; again within reason not incessantly everyday in the form of micro-management)</span> </li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">What kind of work is coming down soon?</span></li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Do you have a QA team?</span></li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Do you have an automated build process in place?</span></li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">What are your release cycles?</span></li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Do you split the team up between UI and server-side developers?</span></li>
<li><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Do you have an Business Analyst for requirements gathering or is your core development team in charge of this?</span></li>
</ol><div style="font-weight: normal; margin-bottom: 0in;"></div><div style="font-weight: normal; margin-bottom: 0in;"><span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">There are many more questions one can ask to try and understand what they are to expect before taking the job. You will not be asking all the questions but should select from the sample above and whatever the community submits and judge which ones make the most sense in your particular situation.</span><br />
<span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;">Follow me on Twitter <a href="https://twitter.com/mrosario2012">mrosario2012</a></span></div>Mikehttp://www.blogger.com/profile/04000501318053109815noreply@blogger.com0