I have been talking about the following on many occasions during the last years already. Actually, it is always part of my consulting services when companies ask for advice on what they should do to improve the overall satisfaction of their software developers. But in general, it's pretty simple: The following are my essentials for any software developer or craftsman that is taking her or his profession seriously.
Originally, I started my list with the first four topics only but experience taught me that there is more to this. And even nowadays, I would clearly say that this overview scratches the surface only.
Touch-typing
After being introduced to a team of software developers and/or testers by project or company management, I really enjoy myself to ask this particular question at a very early stage:
"Do you touch-type?"
I can tell you the expressions of their faces says more than any written book I've read so far. It's absolutely amazing how such a simple question puts everyone in the room into a dazzling state and gets them to look, uhm sometimes even to gaze at me with a touch of glare in their eyes, as if I just spoke in an unknown language. The reactions are mixed but usually the responses are similar to this short selection:
- "What?"
- "Sorry, I don't understand."
- "What do mean by touch-typing?"
- "No... ?"
Honestly, I have to admit that I totally understand this kind of answer based on the fact that absolutely nowhere young programmers or developers are educated and trained in an efficient way to use their daily tools of future work. Seriously, that question would be comparable to ask an architect whether she uses a calculator on her job. Only, that her reply would be more like this: "Of course."
So what is the actual problem about the fact that most developers I meet here on the island are not capable to touch-type, or sometimes don't even know what I'm actually talking about? Sincerely, I have no straight answer to this but it seems obvious to all of them that working 6+ hours per day at the PC, using the keyboard to get the work done, doesn't necessarily require to be fast and efficient.
Definition of TOUCH-TYPE
: to type by the touch system
-- touch typist noun
Source: Definition taken from Merriam-Webster - https://www.merriam-webster.com/dictionary/touch-type
Know your tools... well, getting a glimpse at the various curriculum at the tertiary educational institutes reveals a little bit more. Touch-typing isn't part of the education and therefore ignored. Any software developer without touch-type capability would have difficulties with my equipment - das keyboard Ultimate:

das keyboard Ultimate is a keyboard with blank keys and the ultimate experience of touch-typing
Most people really don't understand the consequences. It's not only about time, effort and cost but also plays a great role in daily motivation. I know that developers want to write code first, uhm, maybe I should say to type code first. But what's the purpose of creating wonderful code when your physical capabilities are far behind your mental ones? It's like producing a lot of output that gets finally stuck in the I/O buffers of your body.
Latest generation of hardware and software
Obviously this should be a no-brainer but reality bites and quite often developers' machines are not top-notch. There are various reasons for that and hundreds of excuses made by an employer but frankly speaking at least every two to three years latest it is necessary to upgrade the work equipment. Again, this is also something I clearly advice to other companies: Faster machine, less time-consuming and more efficiency of their developers and software testers. When I begin to work with new teams I like to get a better understanding of their opinion about their work, and as you might have guessed already... The computer they are using is usually part of those conversations. Either because I ask about it or they already tell me that they are not happy about their PC. Usually, they have more powerful machines at home, either for gaming or to develop on private projects. Imagine the frustration they have coming to work and only finding a dead-slow machine. The pain of waiting until the IDE has started and loaded the recent projects finally. Some of them even switch on the machine, wait to login and then go for their cup of coffee until auto-started software applications enter a state of readiness.
In rare cases I witnessed that they even brought in their own laptop and left alone the hardware provided by their employer. How embarrassing this might be...
Anyway, latest hardware means faster processing, lower latency and higher productivity of each single employee. Or at least it is plausible to cut off that argument that a job couldn't be done due to hardware-related limitations, etc. blah blah.
Oh before I forget to write about that one: Get yourself at least a second screen!

Working with multiple screens increases a software developers productivity
No matter the screen size, okay at least 19" should do, put an additional screen on your desk. If you are working on a laptop, use the VGA or HDMI output for the better. In worst case you could use an older machine and install Synergy on both of them.
The rise in your productivity using a second screen compared to switching applications is outstanding. And the return of investment (ROI) is incredible fast. I really wonder how archaic certain software companies are when they don't provide a second screen to their employees. Here is a little anecdote from the past: It was on my explicit request that my former employer started to introduce additional screens at work desks after I simply demonstrated to the manager that it is more efficient and productive to work on multiple screens. At that time I was used to work on three screens since years on my private machine at home, and it was absolutely frustrating to go to work. A couple of days later, I got a new graphics card, a second screen and my boss was overly happy with his own dual-screen machine. ;-)
Next, let's talk about software. Once again, stay on top of the game and work with the latest and greatest version that is currently on the market. Not only to show your commitment to your job but also to have access to the state-of-the-art on productivity. Just recently, I worked as consultant for a local company here in Mauritius and honestly I was shocked to see the numerous installations of Visual Studio 2005 on their Windows 7 machines. And to make things even worse, team leaders had either Visual Studio 2008 or 2010 on their machines. Taking into consideration that the latest Visual Studio was in the final stages to hit the market, I urged them to plan and run a general upgrade on all machines.
Eventually, you might ask for the reason. Well, there were several of them and I'm going to discuss them in no preferential order.
Cost of licenses
True, software licenses do cost money and unfortunately it isn't obvious to some people that you have to take expenses on licenses into your annual budget planning. So no money planned, no upgrades available. Interestingly, while addressing this dilemma to my clients they are not aware of certain subsidizes programmes offered by the software producers. For example, as Registered Microsoft Partner you can purchase tailor-made variations of MSDN at an affordable price.
I'm always working on the latest available version of Microsoft Visual Studio, Microsoft SQL Server or Xamarin Studio. And if time allows even on the beta versions...
Project circumstances
The project is targeted to version X of the operating system and has to work with version Y of that product. Well, software changes and so should your development environment. There have been rare cases that a newer operating system simply sucked but in general go for the latest. Simply to leverage the improvements, read: bug fixes, and the new features that those software packages are offering. And to be prepared just in case that the client is going to ask you:
"Is (y)our software working properly on the upcoming OS?"
It's always better to say something like this
"Yes, it does (with some minor modifications). We already tested it some weeks/months ago while in beta stage."
than to shrug your shoulders and respond something like that "We don't know."
Maintenance of deployed applications
Oh yes, the crux with legacy code and the demons from the past. Well, in that case do yourself a big big favour and virtualise the environment. Simple as that, get a copy of either Microsoft Hyper-V, Oracle VirtualBox or VMware Workstation or Player, and move that old-fashioned piece of code over there. I'm going to write more on software virtualisation later in this article.
Proper chair
Remember what I wrote about touch typing? As a software developer you are likely to sit between six and eight hours every day at your workplace. Okay, there are these 'unpleasant' interruptions to either have a break or to attend a meeting but at the end of the day you are sitting most of the time at your desk. Either to code, to test or to read about your active tasks. Again, I think it is absolutely essential that you have an ergonomic chair that is well-suited for your body. Don't save money on your health! In case that you're employed and not comfortable with your chair or desk, speak to your manager or superior and evaluate possible solutions. It will be in their interest that you are confident and happy to come to work instead of having that annoying tension in your right shoulder or aches in your spine after an intensive coding session.
You will be surprised what a difference a good chair can make compared to one of those standard office chairs that you get for cheap. and it doesn't have to be expensive but at least there should be a couple of decent features:
- Height adjustable
- Adjustable back shield
- Support for your lower spine and pelvis
- Adjustable arm rests
- Mesh fabrics
Well, you might think that I can easily speak of that being self-employed. But hey, no wait a second... even being an employer I took care of the well-being of my employees at their work space. As said, it is crucial that you feel comfortable at work.
Comfort = happiness = motivation = results
It's that simple!
Again, when consulting companies I usually ask them whether they have an initial budget for each new employee or even an annual allowance for the existing ones that could be used for the working environment. Of course, there is none... What would be the benefit of this? Hm, isn't it obvious that if an employee is allowed to 'design and implement' her work desk based on her choices is eventually higher bonded emotionally to this environment and therefore less likely to change later on? No?



Goutham KsPosted Feb 5, 2019, 4:19 AM
Nice article for developers from Employer's perspective-Jochen Kirstaetter
Praveen KumarPosted Feb 5, 2019, 12:14 AM
Welcome to C# Corner
Talaviya BhavdipPosted Feb 4, 2019, 10:59 PM
That's good career advice for the developers - Jochen Kirstaetter
Mehreen TahirPosted Feb 4, 2019, 8:00 AM
Honestly speaking, touch-typing idea had me for a moment and my response was no different than what you already mentioned but now I'm thinking of having a das keyboard myself.