05
Jul

The Truth About IT Hiring

Do you remember the good old days during the Internet boom when a shiny resume, clean haircut and a vast vocabulary of IT acronyms was enough to get you a six figure job at a fast moving Internet company with a half-life of less than a year?! Well, those days are long gone now… At least in the specific technology field I am in.

Here are some tips from past experience when trying to hire a developer, technical architect or a super ninja coding monkey (that’s a large visual to absorb, I know ;-).

Developers

> If during the phone interview he answers yes to every questions, including “Do you enjoy drinking Snapple and Red Bull cocktails at 2am while re-writing another developer’s source code?”, there could very likely be a severe problem with his work ethic and level of productivity. Why? Well, any developer that works odd hours will most likely not be productive on fast moving agile-like projects that require a functional and cohesive team during normal work hours - well, unless he/she happens to be outsourced out of Estonia (yes, there are developers there now).
> Good developers talk less, and produce more. When you are in a meeting with a developer and he starts questioning every architectural decision and going off on a tangent, it is likely when it comes to actually write code, there will be little produced. This is also a double-edged sword, since developers that sit in silence and don’t ask the write questions can be a sign of a severe lack of understanding as they wander off into building an application that can process prime numbers faster than any application ever known to man kind - when he should have just been creating a tax calculation module.
> “What is an object?” is one of the most feared questions from a developer - seriously, if you hire a sharp developer he/she better know what the heck is object oriented programming. The last thing you need is every business object, method, function and (oh yes, HTML renderer) packaged into a single .ASPX file. Give me entity classes, business objects, a data layer, and a clean extensible object model that we can leverage into a SOA model if we need to.

Technical Architects/Lead

> Are you a technical “architect” or a technical “lead” - the two differ greatly. What you need to look out for is anyone claiming to be a technical lead “designing” the “solution” and “leading” “the team”. These candidates are 90% of the time PMs gone AWOL claiming expertise to design a solution, when in fact all they do are PM duties with business requirements gathering, and client interfacing skills.
> A good technical architect will tell you the difference between an apple, orange and pear, and give you specifics as to why each would work best with a hearty breakfast. No, but seriously, technical architects need to have “big picture” understanding, all the way from the physical to logical layers, and beyond. They are the masters of designing sound solutions, and gifted in interfacing business with technical teams to achieve a common goal. Architecture is a constantly moving/changing machine, and TA’s need to be in motion with what changes, how, and what the best approach would be in order to avoid chaos, lack of scalability, and secure continuous integration with all other systems.
> Document! Document! Document! Good TAs create good documentation, with clear implementation diagrams and descriptions, using well defined frameworks and patterns. They need to constantly communicate these documents to both business and technical stakeholders, align their understanding of them, and update them regularly to keep everyone up to date. If a TA has not been a project that produced more than 100 pages of design documentation, it is very likely that he/she does not have the depth/expertise as a TA.

Super Ninja Coding Monkeys

> These developers are hard to find… Did I say they are hard to find? Right… Well. The trend, given the enormous “brain drain” of Western civilization over the past 3 years, seems to have pushed levels of intelligence farther in countries like India, China and Russia - with the latter being a rising star of some of the world’s best developers.
> Complicated last names are a sign of a SNCM - a common joke amongst Indian developers, but given the history, I can see it…
> Good, clean, efficient and well remarked source code is a positive sign of a SNCM - if one out of ten developers can re-write 100 lines of code to 10 lines, they are definitely worth considering.
> Lastly, developers with C++ experience are definitely SNCM candidates… Looks for developers with at least 1-2 years of C++ experience on decent sized projects.

In short, remember to use some of these basic rules, combined with whatever other tools/resources you use for IT hiring, and always try to meet in person (if possible) and white-board the candidate to understand his/her thought process, candor and ability to make swift decisions under pressure.

Good luck to you all out there!

24
Feb

Development Best Practices

Leverage Internal Methodologies and Frameworks for Designing Applications

> Use existing examples of documentation from other projects.
> Use cases, detailed functional requirements and high-level business/entity objects.
> Enforce database design practices (e.g. ERDs, data models etc.)

Stub Generation and Low-Level Design Documents

> Technical meeting to review all requirements and scope low-level documentation requirements.
> Oversight by tech-lead/senior-dev/DBA during design or development phase.
> Document entities, data application layer, business logic layer and presentation layer.
> Create activity diagrams and sequence diagrams for application flow and object interactions.

Sign-off by Developer per Task

> Developers should fully understand all design requirements, and tech lead should enforce.

Code Review

> Code review as per development standards/methodologies.
> Tech lead should ensure architecture is scalable, extensible and modular.
> Tech lead should ensure proper source code versioning, branching and commenting/documenting.

Testing

> Create manual test scripts for the site and follow them for system and regression testing.
> Developer should test on latest version of IE, Firefox and Safari for basic browser compatibility testing.
> Create and enforce automated unit-tests and test scripts for custom development using tools like nUnit, SQLUnit, Visual Studio Test projects.

Standardize Output

> Enforce development tools across on-site and off-shore development teams.
> Enforce a library/framework based on design requirements.
> Tech lead should leverage UML and modeling tools (e.g. Enterprise Architect, Rational Rose etc.)
> Tech lead should be fully responsible for managing all builds and enforcing rules with team (e.g. branching, tagging etc.)
> Use collaboration tools like Team Foundation Server and Sharepoint to track issues/bugs across team members.

14
Feb

How to Introduce New Ideas and Technologies

Ideas vs. Technology

> Ideas can be driven by a new technology
> Ideas often come from a “community” within the company
> Ideas require a higher level of research and development
- What does it mean? Who does it affect us? How will it work?
> Ideas can create more change within a company than a technology
- Affects multiple levels within an organization
- Requires deeper participation with employee population

> A technology can be selected to fulfill an idea
> A technology recommendation can come from anyone within an organization
> A technology requires a lower level of research and implementation
> A technology can usually only affect a single group within the employee population
- Project Managers
- Developers
- etc.

Selecting the Right Idea

> Concept Screening
- Comparing options against a baseline benchmark.
- Compare against factors like cost, reliability, time etc.
> Delphi Method
- Explore ideas or gain consensus with remote group.
> Force-field Analysis
- Exploring forces for and against an idea (pros and cons).
> The Hundred Dollar Test
- How will you spend $100 on your ideas?
- Select the idea that best matches your budget.
> The Kipling method (5W1H)
- Ask simple questions for great answers.
> Negative Selection
- Sort out the ‘definitely nots’ first.
- Must Haves, Maybes, Can Live Without etc.
> NUF Test
- Score idea based on how New, Useful and Feasible it is.
> Pause
- Reflect for a minute before deciding.
> PINC Filter
- Evaluate Positives, Negatives, Intriguing and Concerning elements.
> Six Thinking Hats
- Look at ideas from different viewpoints.
- Information, Judgment, Creativity, Intuition, Optimism, Thinking.
> Swap sort
- Sorting a short list by priority swapping.
> Voting
- Democratic casting of votes for the best idea.

Selecting the Right Technology

> Assemble a selection group composed of people from every part of the organization who will use the software, including key decision makers.
> Come to an agreement about the business processes that will be automated before looking at software. What are you trying to solve and/or improve?
> Factor in your company’s culture.
- If people are used to the freedom of choosing their work and working conditions, be careful not to choose a system that will destroy what people value most about their current business processes.
> Decide if you want an end-to-end, all-in-one package or one that integrates with current systems.
- Usually the latter are simpler and more cost-effective to implement – adheres to the “organic nature” of a company.
> Match the technology to your company size and the industry you’re in.
- Some solutions are better for small companies, some are designed for health-care enterprises and others for government services.
> Decide on your platform of choice.
- Will it be a thin-client Web-based one?
- Will it be a more traditional client/server model?
- Will it be an open-source or licensed solution?
> Don’t underestimate how long it will take to implement the package!

Preparation for the Presentation

Before presenting an idea or technology to management, prepare answers to the following questions:

> Where is the value?
- How will this idea/technology affect change in the company, and how will that change deliver value to your company?
- What are the $, resource and time costs to implement and support?
- What are the $ and time benefits after implementation?
> What will this idea/technology solve and/or improve?
- This should be a definite list of areas that will have a positive impact from the start.
- Long-term benefits should be categorized separately so there is strong awareness on short and long-term gains.
> Is there a strong “buy-in” within your company?
- The greater our community supports the implementation of an idea/technology, the higher level of success can be attained.

> Your Official Proposal
- Executive Summary
- Management, Key Personnel and Business Partners Involved
- Description of Idea/Technology
- Implementation Plan
- Management Plan
- Financial Evidence and Projections
- Supporting Documents

Gathering Feedback

After your official proposal is submitted, gathering feedback is critical to help re-enforce and/or improve the idea/technology being recommended.

> Specific areas requiring feedback:
- Quality of proposal
- Overall score on the idea/technology
- Areas requiring improvement
- Recommendations on improving the budget, timeline and resources for the implementation and support of the idea/technology
- What alternatives can be recommended
- Has it been done before at your company, and if so why did it not succeed
- What external resources have done in the past (ask friends, relatives, prior coworkers etc.)

30
Jan

Single Sign On with AspDotNetStorefront and Community Server

The ongoing debate and question continues… However, as of late, some breakthroughs on my end in this area.

Basically, with a little bit of tweaking, hacking, cheating, and fooling, AspDotNetStorefront (ASPDNSF) and Community Server (CS) can live happily ever after in a single user session and “share” user account information.

And now, for the approach… In broad strokes:

1. Setup ASPDNSF and CS in their own virtual Webs within the same domain (e.g. domain.com/community, domain.com/store/)
2. Set both ASPDNSF and CS Web.config machine keys and cookie names to be identical.
3. Modify ASPDNSF code where it reads/writes to the cookie to reference the new shared name.
4. Add a column in ASPDNSF customer table that stores the CS user name (so when a user account is created on CS it will create a user account in ASPDNSF with a matching user name)
5. Modify ASPDNSF code where it reads cookie to pickup the user name (since CS will write the user name to the cookie and not a ASPDNSF GUID as ASPDNSF normally does out of box), then using that user name lookup ASPDNSF’s customer GUID in the DB and reference that for the ASPDNSF session.
6. Locate all locations in stored procedures that create/update user accounts to handle the new CS user name column.

This will ultimately allow you to sign into CS, then go to domain.com/store/ and get automatically signed into ASPDNSF since the cookie already has your sign-in information and a matching session record is located in ASPDNSF’s database.

As for the rest of the details - specific code changes, stored procedures etc., more details to come later when time permits.

Finally, since CS and ASPDNSF have URL re-writing engines we can elegantly handle those elaborate URL’s so things look nice and clean when a user view’s a ASPDNSF page and a CS page.

Hope that helps with some people out there… Enjoy!

08
Dec

Solutions Customization and Integration – Part III

It has been a while since I posted an update on this project… So here it goes.

Since my last post, the project I am working on has evolved to a 3-piece solution tying in AspDotNetStorefront ML 7.0, Community Server 2007 SP1 and a fully custom e-Learning solution built on Flash and .NET controls.

Due to the complexity and unique features on this project, the architecture and design grew to be very specific and custom – beyond the normal skinning of the out-of-box products and turning features on/off. The final architecture came down to an intermediate Data Application Layer (DAL) and Business Logic (BL) layer that encapsulates and partly overrides the methods/classes provided by Community Server and AspDotNetStorefront. The thinking behind this implementation is to retain the core functionality of both systems, allowing us to implement software upgrades easily and support the application maintenance and enhancement lifecycle. The e-Learning system, being that it’s designed from scratch, will expose a custom BL and DAL.

Interfacing with Community Server’s and AspDotNetStorefront’s API allows us to work outside the framework of classes/methods provided by both products, as well as build our own custom layer of methods/classes to define and produce entities that consume/provide data apparent to the application as designed. The presentation layer, will be modeled around the common ASP.NET practices of .aspx files, custom controls and a selection of controls from ComponenetArt’s WebUI product.

The single sign-on architecture has changed slightly since my last post. The approach taken now, for the sake of simplicity and ease of management, is to have Community Server act as the central point for account management/creation using ASP.NET’s membership provider, and have back-end processes that replicate billing/transactional data to AspDotNetStorefront. This allows us to collect all the data we need about a user in a User entity from the Community Server and AspDotNetStorefront databases.

The project is currently undergoing the initial stages of development, with a target date for launch of mid-2008. Stay tuned for more updates…




About Me

Technical architect and manager, with more than 10 years of progressive experience in large-scale Internet/Web technologies, e-Commerce, ERP and hardware/software architecting. Extensive and proven experience in Web site and business software applications architecting, development and management.

View Patrick Rayes's profile on LinkedIn

Contract/Consulting

For contract/consulting requests and services, please click here.

Blog Stats

  • 10,790 hits