I've worked on so many projects in so many domains that I think I've lost track of all of them. I've worked in a few different countries, starting ...
For further actions, you may consider blocking this person and/or reporting abuse
How many more students are ya lookin' for?! 😉 cc: @liana
I feel like we've gotten to know you through your articles, but I'd love to learn about the fiction that you write! What's the story there? ...pun intended...😅
What cultural differences did you notice between working in Canada vs. Germany?
I just got started again with the fiction. I have only a few pieces uploaded so far on medium
The biggest cultural difference between Canada and Germany is the individual drive to do things. In Canada, and the US, people seem more driven to get stuff done, to experiment, to try new things. Germany leads heavily towards get job at big company. THat isn't to say there is a lot of people trying things, just that it's not really the mainstream culture.
More problematic, even after all this time, is stores closing early and on Sundays. It's impossible to satisfy round-the-clock programming cravings! :)
How many students, well, I seem to have time available now... :)
Are you still keeping track on recent trendy technologies? Or there was a point in your life when you said to yourself "meh, I think I know enough"? If so, how and when that happened?
Also, do you think writing code is a lot like writing prose, or it isn't anything like that?
I look up new technologies only really as I need them. Whenever I start a new project I'll look at what's around, but I don't keep up on stuff just for the sake of it.
No, generally I don't see a lot of similarities between coding and writing. I don't think there are a lot of skills that overlap, or can be easily transferred between the two. I learned both of these, but I learned them separately. Perhaps a few things, like pattern recognition and structure, bear some resemblance. Maybe even some brain regions trigger similarily, but it's just too much of a difference to say they are similar.
Nowadays we have Git, Jenkins, Trello, amazing IDEs and many other tools that help us immensely in our programming career, sometimes without even realising.
What were you using 20 years ago?
I've also been programming professionally for almost 30 years.
Back in the early MS-DOS days I used a fairly powerful ASCII text editor that was a subset of the once popular Word Perfect word processing program. I had a large set of templates I had created for programming in MASM and C.
Microsoft QuickBasic had its own IDE as did Clipper and other major DOS development tools.
When Windows development caught on in the early 90's, early versions of Microsoft Visual Studio appeared but it was initially only for C/C++ and MASM coding. Visual Basic had its own IDE and, initially, stored code files in a proprietary binary format. VB's remained a bit of a pain to work with and this created a market for add-on tools. Most of them are long gone now, much to the dismay of us who still have to do occasional work in VB6.
In the late 90's, web development tools like FrontPage and Coldfusion appeared. These left a lot to be desired.
The best IDE at the time was, without any doubt, InterfaceBuilder for NEXTStep. That was some seriously awesome, ahead-of-its-time development environment. Too bad it only ran on specific hardware/OS.
Please don't remind me of products like FrontPage and Coldfusion. I don't think I can handle those memories! :)
I was actually working on a competitor to those at the time.
IDEs were quite common. I had to kind of rely on them for the help documentation, since otherwise there was no way to lookup things. Most of the "stuff" an IDE can do now it did in some form before. They've tacked on more features, but I don't see any magical growth there -- possibly why I don't use an IDE anymore (or rather, my desktop is my IDE).
I went from manual source copying and versioning, to CVS/VSS, then on the big improved SVN, then git/bzr came later, which were pretty big changes. They finally allowed for proper branching and versioning, and remote work. (I prefer bzr to git, easier to use, harder to screw up)
A lot tools, like Trello, would have desktop equivalents that worked on the local network. I still believe in such tools and am not a fan of companies hosting everything in the cloud -- private clouds are okay.
Big props to the Borland Turbo C/C++ IDEs!
Those were nice IDEs back then. As for version control, well...
Do you think 20-year experience is valuable?
How do you keep technical skill update?
What you think is most important for the career?
How do I keep my skills up-to-date? I can't answer directly, let me try to explain.
Programming consists of a series of skills and concepts. There are specific skills, like Java, and more generic object-orient coding skills. One could know REST+HTTP and OracleDB, or one could understand network protocols, encoding, and relational DBs.
Once we remove all the marketing terms and fancy words, programming has advanced rather slowly and predictably. At some point I started understanding the underlying concepts. It takes less and less effort to adopt new technologies. I don't really need to keep up-to-date, as I can sit down with "new" tech and adapt quite quickly.
I actually find new tech easier to learn than having to go back in time and learn/relearn old stuff like VB6 and PowerBuilder, especially when it involves maintaining legacy spaghetti code.
The experience is and isn't. It is probably detrimental to getting a job at a "cool" tech start-up or the like. They just don't see having lengthy experience with a wide variety of technology useful. However, long and varied experience is usually viewed much more favorably in the non-tech corporate world where legacy code is common and having someone on staff who can effectively link old and new is valuable.
As for staying up to date, it's a matter of picking something to learn and developing a personal project around it. If I can, it will be a work project but that's not always possible. The trick is picking which technology is worthwhile to learn. Various tech sites, including this one, are helpful in this area.
The most valuable thing to do career-wise if you don't want to move into management and keep coding is to always be learning new stuff. Don't become stagnant.
Experience is valuable. Years worked is not. I spent most of those years trying new things, switching jobs, changing fields, using different tools languages, and even hopping countries. I've been fortunate enough to have these experiences -- I realize not everybody will get that chance.
It's kind of a hard, or sad situation though. It's not unrealistic that somebody with 10 years of work could have less breadth of experience than somebody with even 3-4 years of work.
Gathering valuable experience requires a concerted effort. This article from a friend of mine goes into detail about this: does practice make perfect
Important for career?
I consider diversity to be extremely important. This relates a lot to learning those underlying concepts. If you don't try different tech, different languages, different domains, you don't be able to find those underlying patterns.
Sticking with one language, one technology, one domain, I think is a guarantee of stunting one's career.
Taking the time to try things, and fail at things, is also important. Failure is a big part of programming, and we need to be able to deal with, and make sense of what happened.
Stress relief is vital. Find a way to relax. Find something else to do. Pushing yourself at programming is hard work on the mind and body. If you don't have a way to reduce stress you'll suffer.
I've used CodeMentor for specific things before, like debugging or pair programming. I also enjoy assisting people learning new things.
Mentoring is done via chat, email, and voice calls or screen sharing. Beer-And-Stool mentoring available for those in the Munich area. :)
For those just needing some stress release, I also do some relaxation and mindfulness training. About half of all programming problems can be solved this way I think.
Can you expand on how relaxation help you as a developer ? How can it solve problems ? What's the basics if one want to try ?
Relaxation, and the various ways to achieve it, like mindfulness, meditation, and exercise, reduces your stress. Stress is bad for developing for numerous reasons:
Relaxation gives a pause to your day, giving your body a physical chance to recover, and your mind some clarity. Often coding challenges can be solved by freeing your thoughts of clutter, taking a step back, and calmly reevaluating the situation.
Here's a quick, and basic activity. Sit in a chair away from your desk, preferably a quiet area (noise makes this harder). Set a timer on your phone for 5 minutes. Close your eyes and try to think only about your breathing until the alarm rings. Increase the time to 10, or 15 minutes as you do this.
What was life before and after Google search? How much programming has changed after Google, stackoverflow etc?
Prior to the internet and probably up until around 2001 or so, the four main sources of programming information were books, CD-ROMs, BBS's and message boards on paid services like Compuserve. You could get a lot of in depth information from these sources, but it was expensive. It wasn't unusual to spend $50 or more on a book/CD-ROM combo or to spend more than $100 a month on long distance calls and Compuserve/AOL/GEnie subscriptions.
Other than the cost, the big difference now is in the width of information. If you need to know the answer to a very specific question, it is likely that someone has asked it and posted an answer somewhere online. In the old days, once you got off the beaten path, you had to figure out a lot on your own.
What Frank said. :)
What's the main difference in programming culture today vs. 20 years ago?
It's hard to isolate precisely 20 years ago, but I'll give you an idea of when I started, which was earlier than that.
Imagine programming without any online resource, having to find a library or bookshop to get references. No package managers, no online tools, no real web. Information was scarce!
This forced an extreme "try stuff" approach, since you didn't really have any other choice. It was also difficult to foster any kind of good practices, or share knowledge, a lot of the early work I did was kind of in the dark. I shudder to think what type of code I produced 20 years ago.
There were likely less distractions though. No Twitter nor Facebook to waste time.
There were news groups and some limited chat. Around 20 years ago this stuff started being more common, as more people had permanent connections.
I started writing tools for the web when it first started. It was plain to see how much of an impact it'd make, not just to programming, but to society as a whole.
Though, I did, and still do, C++ programming. And the cycle of code, compile, get mad, hasn't changed. :)
Project management was primarily waterfall. If you were really fancy, you called it SDLC but still it was waterfall. There was no Agile, no test driven development, no continuous integration/delivery. In the early 90's some people were talking about iterative development that eventually became Agile but it wasn't widely accepted.
Version control was relatively rare in the PC development arena until the mid-90's. This meant having your code overwritten and other such problems were common and usually resulted in interpersonal conflicts in a team.
Deployment of an application meant creating a setup program that could take into account the wide variety of personal computers. It had to fit on diskettes and later CD-ROMS. Disk/CD duplication was a big and expensive thing so you had to make sure everything was right, but it often wasn't. Patch disks had to be made although some companies had BBS systems that users could download smaller patches from at a screaming 2400bps.
The biggest online programming knowledge resource was Compuserve and BBS systems. Compuserve was quite expensive and so was long distance calling to BBS's so it became common to download/upload messages in bulk to keep this online time short. It was quite a perk when an employer would pay for this.
It was also common for programmers to have several large reference books on their language(s) of choice. Examples from these books had to be copied by hand until some of them started being sold with companion CD-ROMs. I threw my old dogeared and now mostly useless reference books away a few years ago to declutter my home office.
What is the most popular operating system people used to code in 20 years ago?
Windows was a lot more popular for development than it is now. Microsoft had, at one time, taken the forefront in making a system that was appealing to developers. They lost that over the years.
My take is that Microsoft concentrated most heavily on the corporate market to support ongoing Windows and Office installations and put development, especially web development, at a lower priority. This gave an opportunity for other web based ecosystems to develop, most notably LAMP. They've reversed course somewhat now but are playing catch-up.
Do you have any experience working remotely? How has it changed in during your career? What are some mistakes you observe young developers make frequently?
Working remotely was more possible early in my career than it was in the middle part.
In the late 80's to early 90's, shared network resources, like databases, weren't common in the PC world. This was the area of mainframes for the most part and PC apps were largely standalone and databases were local. If a developer had a laptop (very expensive and underpowered in those days) or a luggable they could work at home. My first work development system was an IBM PS/2 Model 70 Portable. While my employer at the time didn't want us to work from home on a regular basis during the work day, we were expected to work at home at night and weekends from time to time. Other people I knew had more flexibility.
Once networked databases became common, working at the office became necessary since most companies did not want to invest in the infrastructure for remote developer access and most developers only had dial-up internet at home. This often meant long hours in the office, trying to complete projects.
Starting about 2003-2005 or so, remote work became more common, not much different than it is now.
What mistake do young developers make frequently? Assuming that they already know everything and not getting in sync with development team. Really, it's the same mistakes senior developers will often make when coming into an established team.
I've been working remotely for most of the past 10 years. Before that I worked in an office with the team.
Ideally I'd like to work remotely like 5-9 days in a row, then one day in the office. There is some aspects of office life I miss.
I'm productive at home. This is a mistake many people make: they think they can work remotely. It appears a lot of people cannot do it. There's something missing for them. It limits how much of programming can truly be done remotely -- the number of people that can work remotely seems far less than those that can't.
A common, and understandable, mistake I see is getting locked into a single set of technologies. You need exploration. You need to try new things in new domains to get a full feel of what programming is.
Have you experienced any burnout?
I should probably admit that I have in the recent years. It can be challenging to face the same problems repeatedly knowing you've solved them before.
Hi, just curious how can you able to motivate your team if their mindset already stagnant (don't want to learn, don't accept changes)?
There are many situations where I would, and have, considered finding a new team (changing jobs). Without knowing a lot of specifics I can't say for sure on this one. I've not encountered such a team before -- though I have crossed paths with many obstinate individuals.
Hey I would like to be your mentee I hope I used the correct term