Home > Software > How to become an all-round software developer

How to become an all-round software developer

Marius Watz - Stockspace In a world where many people can write code, it is not always easy to see who is the right person to hire. From the employee perspective, being a well rounded software developer can help one to successfully compete in the marketplace and to edge the ups and downs cycles in the tech world.

Becoming a well rounded software developer, takes time and effort, there is a lot to cover. At the basis, it requires having the right skills, attitude and motivation.  Next, it requires making the right choices about the education, the experience, and the technology to be exposed to. Then it requires investing long hours building the technical skills. The final piece is working on the soft skills like communication, good understanding of the business objectives, and customers needs.

I’ve compiled the list below to help you choose your path for becoming a great resource in today’s marketplace, and also to remind me what am I looking for in a candidate when I’m hiring.

  • Education – bachelor or master degree in computer sciences from a decent college
  • Experience:
    • Significant contributor to one ore more of the projects listed below:
      • Building scalable enterprise solutions – high throughput
      • Building High traffic web-sites
      • Building custom UI controls (rich client)
      • Building Real-time application – low latency
    • Supporting large scale implementations of one of the above applications
  • Technology
    • Computer language – object oriented design and programming, reflection, exception handling, libraries(files system, logging, tracing), data structures, debugging, multi threading.
    • Databases – transactions(isolation levels) , queries that spans multiple tables, concurrency (database contention). More than one database type.
    • Performance analysis – code profiling, memory, GC monitoring, query analyzer tools
    • Application server – configuration, deployment, performance tuning
    • Deep understanding of the underline OS(s) (now it is even required to have some understanding of virtualization technology )
    • Web development  – MVC, Java Script, CSS, HTML, session management, AJAX, template language, SSL
    • Security – understanding of IT compliance requirements.
      • Web site- configurations, encryption, eliminate cross site scripting, SQL injection, validation, and etc.
      • Back-end – to design it in such a way that only few IT personnel should perform operation on the server.
    • I18N and L10N – Unicode, the advantage of UTF-8, date and money formats, resource bundle, the cost of localization and how to minimize it, database considerations.
    • Unit testing tools,  ORM tools, Interoperability
    • Design patterns – at the minimum: singleton, decorator, publisher/subscriber(observer)
    • Architectural patterns – at the minimum: pipes and filters, layers, MVC, n-tier
    • Algorithms- at the minimum: sorting, searching/traversing (BFS, DFS), automaton, recursion
    • Scalability: Load Balancing(horizontal), threads and objects pooling(vertical), queues and remoting technologies(distributed), and caching.
  • Mentality
    • Being humble and curious, how else you can learn?
    • When something does not make sense to you, you know that it is an opportunity to learn something new.
    • You care about TPS (Transaction Per Second) and or the number of concurrent users so much that you want to frame those performance reports.
    • The answers you provide to customers, tech support, consultants, and peers are always as accurate as you can deliver. It means that you will have researched and double checked your answer before providing it.
    • Commitment
      • It is OK to be behind schedule, as long as you know it, and you have alerted your manager with enough time that something can be done about it.
      • It is given that there is not enough time during the work week to become a all-round software developer
      • You know that when the commitment is driven by the business there is no “work week”
    • You can recognize a good idea when you see it, but you don’t need to be the one that came up with it.
    • Business acumen – good balance between doing what that is right for engineering and what that is right for the business.
    • You can’t live without: source control, requirements analysis, some sort of development process, your own toolkit, google, several technical newsgroup, and blogs.
    • Thinking about testability and supportability during design time
    • When using a new library, framework, or API, it is not a black box for you – you look under the cover.
    • When you need to fix something in somebody else’s code, rewriting it is not the only/first option that comes to mind.

I probably missed few items and some technologies may change over time, but I hope that it could help you to stay on track for becoming a well rounded software developer.

Now, if you are one, I would love to chat- see the About page for contact information.

Picture credit Ansomia

  1. March 11, 2011 at 12:26 am

    Great post. Interesing information about How to become a well

  2. April 6, 2011 at 8:35 am

    If you are able to go for Research and development much and much.able to find errors.and try to resolve these errors by yourself.then you can be good developer

    Application development Services

  3. emmanuel
    February 2, 2013 at 2:50 pm

    am jst intrested about software developer nd need some help…

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: